Sdosfns.o
Fint86
Call specific MS-DOS interrupt number INTERRUPT with REGISTERS.
Return the updated REGISTER vector.

INTERRUPT should be an integer in the range 0 to 255.
REGISTERS should be a vector produced by `dos-make-register' and
`dos-set-register-value'.

(fn INTERRUPT REGISTERS)Fmsdos-memget
Read DOS memory at offset ADDRESS into VECTOR.
Return the updated VECTOR.

(fn ADDRESS VECTOR)Fmsdos-memput
Write DOS memory at offset ADDRESS from VECTOR.

(fn ADDRESS VECTOR)Fmsdos-set-keyboard
Set keyboard layout according to COUNTRY-CODE.
If the optional argument ALLKEYS is non-nil, the keyboard is mapped for
all keys; otherwise it is only used when the ALT key is pressed.
The current keyboard layout is available in dos-keyboard-code.

(fn COUNTRY-CODE &optional ALLKEYS)Fmsdos-mouse-p
Report whether a mouse is present.

(fn)Fmsdos-mouse-init
Initialize and enable mouse if available.

(fn)Fmsdos-mouse-enable
Enable mouse if available.

(fn)Fmsdos-mouse-disable
Disable mouse if available.

(fn)Finsert-startup-screen
Insert copy of screen contents prior to starting Emacs.
Return nil if startup screen is not available.

(fn)Ffile-system-info
SKIP: real doc in fileio.c.

(fn FILENAME)Vdos-country-code
The country code returned by Dos when Emacs was started.
Usually this is the international telephone prefix.Vdos-codepage
The codepage active when Emacs was started.
The following are known:
	437	United States
	850	Multilingual (Latin I)
	852	Slavic (Latin II)
	857	Turkish
	860	Portugal
	861	Iceland
	863	Canada (French)
	865	Norway/DenmarkVdos-timezone-offset
The current timezone offset to UTC in minutes.
Implicitly modified when the TZ variable is changed.Vdos-version
The (MAJOR . MINOR) Dos version (subject to modification with setver).Vdos-windows-version
The (MAJOR . MINOR) Windows version for DOS session on MS-Windows.Vdos-display-scancodes
Whether DOS raw keyboard events are displayed as you type.
When non-nil, the keyboard scan-codes are displayed at the bottom right
corner of the display (typically at the end of the mode line).
The output format is: scan code:char code*modifiers.Vdos-hyper-key
If set to 1, use right ALT key as hyper key.
If set to 2, use right CTRL key as hyper key.Vdos-super-key
If set to 1, use right ALT key as super key.
If set to 2, use right CTRL key as super key.Vdos-keypad-mode
Controls what key code is returned by a key in the numeric keypad.
The `numlock ON' action is only taken if no modifier keys are pressed.
The value is an integer constructed by adding the following bits together:

  0x00	Digit key returns digit    (if numlock ON)
  0x01	Digit key returns kp-digit (if numlock ON)
  0x02	Digit key returns M-digit  (if numlock ON)
  0x03	Digit key returns edit key (if numlock ON)

  0x00	Grey key returns char      (if numlock ON)
  0x04	Grey key returns kp-key    (if numlock ON)

  0x00	Digit key returns digit    (if numlock OFF)
  0x10	Digit key returns kp-digit (if numlock OFF)
  0x20	Digit key returns M-digit  (if numlock OFF)
  0x30	Digit key returns edit key (if numlock OFF)

  0x00	Grey key returns char      (if numlock OFF)
  0x40	Grey key returns kp-key    (if numlock OFF)

  0x200	ALT-0..ALT-9 in top-row produces shifted codes.Vdos-keyboard-layout
Contains the country code for the current keyboard layout.
Use msdos-set-keyboard to select another keyboard layout.Vdos-decimal-point
The character to produce when kp-decimal key is pressed.
If non-zero, this variable contains the character to be returned when the
decimal point key in the numeric keypad is pressed when Num Lock is on.
If zero, the decimal point key returns the country code specific value.Smsdos.o
Fmsdos-set-mouse-buttons
Set the number of mouse buttons to use by Emacs.
This is useful with mice that report the number of buttons inconsistently,
e.g., if the number of buttons is reported as 3, but Emacs only sees 2 of
them.  This happens with wheeled mice on Windows 9X, for example.

(fn NBUTTONS)Fmsdos-remember-default-colors
Remember the screen colors of the current frame.

(fn FRAME)Frecent-doskeys
Return vector of last 100 keyboard input values seen in dos_rawgetc.
Each input key receives two values in this vector: first the ASCII code,
and then the scan code.

(fn)Fmsdos-long-file-names
Return non-nil if long file names are supported on MS-DOS.

(fn)Fmsdos-downcase-filename
Convert alphabetic characters in FILENAME to lower case and return that.
When long filenames are supported, doesn't change FILENAME.
If FILENAME is not a string, returns nil.
The argument object is never altered--the value is a copy.

(fn FILENAME)Vdos-unsupported-char-glyph
Glyph to display instead of chars not supported by current codepage.
This variable is used only by MS-DOS terminals.Sxterm.o
Vx-use-underline-position-properties
Non-nil means make use of UNDERLINE_POSITION font properties.
A value of nil means ignore them.  If you encounter fonts with bogus
UNDERLINE_POSITION font properties, set this to nil.  You can also use
`underline-minimum-offset' to override the font's UNDERLINE_POSITION for
small font display sizes.Vx-underline-at-descent-line
Non-nil means to draw the underline at the same place as the descent line.
(If `line-spacing' is in effect, that moves the underline lower by
that many pixels.)
A value of nil means to draw the underline according to the value of the
variable `x-use-underline-position-properties', which is usually at the
baseline level.  The default value is nil.Vx-mouse-click-focus-ignore-position
Non-nil means that a mouse click to focus a frame does not move point.
This variable is used only when the window manager requires that you
click on a frame to select it (give it focus).  In that case, a value
of nil, means that the selected window and cursor position changes to
reflect the mouse click position, while a non-nil value means that the
selected window or cursor position is preserved.

This option works by ignoring button press events for a given amount
of time after a frame might've been focused.  If it does not work for
you, try increasing the value of
`x-mouse-click-focus-ignore-time'.Vx-mouse-click-focus-ignore-time
Number of milliseconds for which to ignore buttons after focus change.
This variable only takes effect if
`x-mouse-click-focus-ignore-position' is non-nil, and should be
adjusted if the default value does not work for whatever reason.Vx-toolkit-scroll-bars
Which toolkit scroll bars Emacs uses, if any.
A value of nil means Emacs doesn't use toolkit scroll bars.
With the X Window system, the value is a symbol describing the
X toolkit.  Possible values are: gtk, motif, xaw, or xaw3d.
With MS Windows, Haiku windowing or Nextstep, the value is t.
With Android, the value is nil, but that is because Emacs on
Android does not support scroll bars at all.Vx-ctrl-keysym
Which modifier value Emacs reports when Ctrl is depressed.
This should be one of the symbols `ctrl', `alt', `hyper', `meta', or
`super', representing a modifier to be reported for key events with the
Ctrl modifier (i.e. the keysym Ctrl_L or Ctrl_R) depressed, with nil or
any other value equivalent to `ctrl'.Vx-alt-keysym
Which modifier value Emacs reports when Alt is depressed.
This should be one of the symbols `ctrl', `alt', `hyper', `meta', or
`super', representing a modifier to be reported for key events with the
Alt modifier (e.g. the keysym Alt_L or Alt_R, if the keyboard features a
dedicated key for Meta) depressed, with nil or any other value
equivalent to `alt'.Vx-hyper-keysym
Which modifier value Emacs reports when Hyper is depressed.
This should be one of the symbols `ctrl', `alt', `hyper', `meta', or
`super', representing a modifier to be reported for key events with the
Hyper modifier (i.e. the keysym Hyper_L or Hyper_R) depressed, with nil
or any other value equivalent to `hyper'.Vx-meta-keysym
Which modifier value Emacs reports when Meta is depressed.
This should be one of the symbols `ctrl', `alt', `hyper', `meta', or
`super', representing a modifier to be reported for key events with the
Meta modifier (e.g. the keysym Alt_L or Alt_R, when the keyboard does
not feature a dedicated key for Meta) depressed, with nil or any other
value equivalent to `meta'.Vx-super-keysym
Which modifier value Emacs reports when Super is depressed.
This should be one of the symbols `ctrl', `alt', `hyper', `meta', or
`super', representing a modifier to be reported for key events with the
Super modifier (i.e. the keysym Super_L or Super_R) depressed, with nil
or any other value equivalent to `super'.Vx-wait-for-event-timeout
How long to wait for X events.

Emacs will wait up to this many seconds to receive X events after
making changes which affect the state of the graphical interface.
Under some window managers this can take an indefinite amount of time,
so it is important to limit the wait.

If set to a non-float value, there will be no wait at all.Vx-keysym-table
Hash table of character codes indexed by X keysym codes.Vx-frame-normalize-before-maximize
Non-nil means normalize frame before maximizing.
If this variable is t, Emacs first asks the window manager to give the
frame its normal size, and only then the final state, whenever changing
from a full-height, full-width or full-both state to the maximized one
or when changing from the maximized to the full-height or full-width
state.

Set this variable only if your window manager cannot handle the
transition between the various maximization states.Vx-gtk-use-window-move
Non-nil means rely on gtk_window_move to set frame positions.
If this variable is t (the default), the GTK build uses the function
gtk_window_move to set or store frame positions and disables some time
consuming frame position adjustments.  In newer versions of GTK, Emacs
always uses gtk_window_move and ignores the value of this variable.Vx-scroll-event-delta-factor
A scale to apply to pixel deltas reported in scroll events.
This option is only effective when Emacs is built with XInput 2
support.Vx-gtk-use-native-input
Non-nil means to use GTK for input method support.
This provides better support for some modern input methods, and is
only effective when Emacs is built with GTK.Vx-set-frame-visibility-more-laxly
Non-nil means set frame visibility more laxly.
If this is nil, Emacs is more strict when marking a frame as visible.
Since this may cause problems on some window managers, this variable can
be also set as follows: The value `focus-in' means to mark a frame as
visible also when a FocusIn event is received for it on GTK builds.  The
value `expose' means to mark a frame as visible also when an Expose
event is received for it on any X build.  The value `t' means to mark a
frame as visible in either of these two cases.

Note that any non-nil setting may cause invisible frames get erroneously
reported as iconified.Vx-input-grab-touch-events
Non-nil means to actively grab touch events.
This means touch sequences that are obtained through a passive grab on
an Emacs frame (or a parent window of such a frame) will reliably
continue to receive updates, but may cause crashes with some window
managers and/or external programs.  Changing this option is only
useful when other programs are making their own X requests pertaining
to the window hierarchy of an Emacs frame.Vx-dnd-fix-motif-leave
Work around Motif bug during drag-and-drop.
When non-nil, Emacs will send a motion event containing impossible
coordinates to a Motif drop receiver when the mouse moves outside it
during a drag-and-drop session, to work around broken implementations
of Motif.Vx-dnd-disable-motif-drag
Disable the Motif drag protocol during DND.
This reduces network usage, but also means you can no longer scroll
around inside the Motif window underneath the cursor during
drag-and-drop.Vx-dnd-movement-function
Function called upon mouse movement on a frame during drag-and-drop.
It should either be nil, or accept two arguments FRAME and POSITION,
where FRAME is the frame the mouse is on top of, and POSITION is a
mouse position list.Vx-dnd-wheel-function
Function called upon wheel movement on a frame during drag-and-drop.
It should either be nil, or accept four arguments POSITION, BUTTON,
STATE and TIME, where POSITION is a mouse position list describing
where the wheel moved, BUTTON is the wheel button that was pressed,
STATE is the X modifier state at the time of the wheel movement, and
TIME is the X server time at which the wheel moved.Vx-dnd-unsupported-drop-function
Function called when trying to drop on an unsupported window.
This function is called whenever the user tries to drop something on a
window that does not support either the XDND or Motif protocols for
drag-and-drop.  It should return a non-nil value if the drop was
handled by the function, and nil if it was not.  It should accept
several arguments TARGETS, X, Y, ACTION, WINDOW-ID, FRAME, TIME and
LOCAL-SELECTION, where TARGETS is the list of targets that was passed
to `x-begin-drag', WINDOW-ID is the numeric XID of the window that is
being dropped on, X and Y are the root window-relative coordinates
where the drop happened, ACTION is the action that was passed to
`x-begin-drag', FRAME is the frame which initiated the drag-and-drop
operation, TIME is the X server time when the drop happened, and
LOCAL-SELECTION is the contents of the `XdndSelection' when
`x-begin-drag' was run; its contents can be retrieved by calling the
function `x-get-local-selection'.

If a symbol is returned, then it will be used as the return value of
`x-begin-drag'.Vx-color-cache-bucket-size
Max number of buckets allowed per display in the internal color cache.
Values less than 1 mean 128.  This option is for debugging only.Vx-dnd-targets-list
List of drag-and-drop targets.
This variable contains the list of drag-and-drop selection targets
during a drag-and-drop operation, in the same format as the TARGET
argument to `x-begin-drag'.Vx-dnd-native-test-function
Function that determines return value of drag-and-drop on Emacs frames.
If the value is a function, `x-begin-drag' will call it with two
arguments, POS and ACTION, where POS is a mouse position list
that specifies the location of the drop, and ACTION is the
action specified by the caller of `x-begin-drag'.  The function
should return a symbol describing what to return from
`x-begin-drag' if the drop happens on an Emacs frame.

If the value is nil, or the function returns a value that is not
a symbol, a drop on an Emacs frame will be canceled.Vx-dnd-preserve-selection-data
Preserve selection data after `x-begin-drag' returns.
This lets you inspect the contents of `XdndSelection' after a
drag-and-drop operation, which is useful when writing tests for
drag-and-drop code.Vx-dnd-disable-motif-protocol
Disable the Motif drag-and-drop protocols.
When non-nil, `x-begin-drag' will not drop onto any window that only
supports the Motif drag-and-drop protocols.Vx-dnd-use-unsupported-drop
Enable the emulation of drag-and-drop based on the primary selection.
When nil, do not use the primary selection and synthetic mouse clicks
to emulate the drag-and-drop of `STRING', `UTF8_STRING',
`COMPOUND_TEXT' or `TEXT'.Vx-fast-protocol-requests
Whether or not X protocol-related functions should wait for errors.
When this is nil, functions such as `x-delete-window-property',
`x-change-window-property' and `x-send-client-message' will wait for a
reply from the X server, and signal any errors that occurred while
executing the protocol request.  Otherwise, errors will be silently
ignored without waiting, which is generally faster.Vx-auto-preserve-selections
Whether or not to transfer selection ownership when deleting a frame.
When non-nil, deleting a frame that is currently the owner of a
selection will cause its ownership to be transferred to another frame
on the same display.

In addition, when this variable is a list, only preserve the
selections whose names are contained within.Vx-input-coding-system
Coding system used for input from X input methods.
If a symbol and non-nil, this is the coding system that will be used
to decode input from X input methods.  It does not affect input from
GTK native input methods enabled through `x-gtk-use-native-input'.Vx-input-coding-function
Function used to determine the coding system used by input methods.
It should accept a single argument, a string describing the locale of
the input method, and return a coding system that can decode keyboard
input generated by said input method.Vx-fast-selection-list
List of selections for which `x-selection-exists-p' should be fast.

List of selection names as atoms that will be monitored by Emacs for
ownership changes when the X server supports the XFIXES extension.
The result of the monitoring is then used by `x-selection-exists-p' to
avoid a server round trip, which is important as it is called while
updating the tool bar.  The value of this variable is only read upon
connection setup.Vx-allow-focus-stealing
How to bypass window manager focus stealing prevention.

Some window managers prevent `x-focus-frame' from activating the given
frame when Emacs is in the background, which is especially prone to
cause problems when the Emacs server wants to activate itself.

In addition, when an old-fashioned (pre-EWMH) window manager is being
run and `x-no-window-manager' is nil, the X server will not let Emacs
focus itself if another program was focused after the last time Emacs
obtained the input focus.

This variable specifies the strategy used to activate frames when that
is the case, and has several valid values (any other value means to
not bypass window manager focus stealing prevention):

  - The symbol `imitate-pager', which means to pretend that Emacs is a
    pager.

  - The symbol `newer-time', which means to fetch the current time
    from the X server and use it to activate the frame.

  - The symbol `raise-and-focus', which means to raise the window and
    focus it manually.Vx-use-fast-mouse-position
How to make `mouse-position' faster.

`mouse-position' and `mouse-pixel-position' default to querying the X
server for the window under the mouse pointer.  This results in
accurate results, but is also very slow when the X connection has
moderate to high latency.  Setting this variable to a non-nil value
makes Emacs query only for the position of the pointer, which is
usually faster.  Doing so improves the performance of dragging to
select text over slow X connections.

If that is still too slow, setting this variable to the symbol
`really-fast' will make Emacs return only cached values.Vx-detect-server-trust
If non-nil, Emacs should detect whether or not it is trusted by X.

If non-nil, Emacs will make an X request at connection startup that is
prohibited to untrusted clients under the X Security Extension and
check whether or not a resulting Access error is generated by the X
server.  If the X server reports the error, Emacs will disable certain
features that do not work for untrusted clients.Vx-lax-frame-positioning
If non-nil, Emacs won't compensate for WM geometry behavior.

Setting this to non-nil is useful when the compensation proves to be
too slow, which is usually true when the X server is located over a
network connection with high latency.  Doing so will make frame
creation and placement faster at the cost of reducing the accuracy of
frame placement via frame parameters, `set-frame-position', and
`set-frame-size', along with the actual state of a frame after
`x_make_frame_invisible'.Vx-quit-keysym
Keysyms which will cause Emacs to quit if rapidly pressed twice.

This is used to support quitting on devices that do not have any kind
of physical keyboard, or where the physical keyboard is incapable of
entering `C-g'.

The value is an alist associating between strings, describing X server
vendor names, and a single number describing the keysym to use.  The
keysym to use for each display connection is determined upon
connection setup, and does not reflect further changes to this
variable.Sxfns.o
Fx-wm-set-size-hint
Send the size hints for frame FRAME to the window manager.
If FRAME is omitted or nil, use the selected frame.
Signal error if FRAME is not an X frame.

(fn &optional FRAME)Fx-create-frame
Make a new X window, which is called a "frame" in Emacs terms.
Return an Emacs frame object.  PARMS is an alist of frame parameters.
If the parameters specify that the frame should not have a minibuffer,
and do not specify a specific minibuffer window to use, then
`default-minibuffer-frame' must be a frame whose minibuffer can be
shared by the new frame.

This function is an internal primitive--use `make-frame' instead.

(fn PARMS)Fxw-color-defined-p
Internal function called by `color-defined-p'.
(Note that the Nextstep version of this function ignores FRAME.)

(fn COLOR &optional FRAME)Fxw-color-values
Internal function called by `color-values'.
(Note that the Nextstep version of this function ignores FRAME.)

(fn COLOR &optional FRAME)Fxw-display-color-p
Internal function called by `display-color-p'.

(fn &optional TERMINAL)Fx-display-grayscale-p
Return t if the X display supports shades of gray.
Note that color displays do support shades of gray.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

(fn &optional TERMINAL)Fx-display-pixel-width
Return the width in pixels of the X display TERMINAL.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.
(On MS Windows, this function does not accept terminal objects.)

On "multi-monitor" setups this refers to the pixel width for all
physical monitors associated with TERMINAL.  To get information for
each physical monitor, use `display-monitor-attributes-list'.

(fn &optional TERMINAL)Fx-display-pixel-height
Return the height in pixels of the X display TERMINAL.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.
(On MS Windows, this function does not accept terminal objects.)

On "multi-monitor" setups this refers to the pixel height for all
physical monitors associated with TERMINAL.  To get information for
each physical monitor, use `display-monitor-attributes-list'.

(fn &optional TERMINAL)Fx-display-planes
Return the number of bitplanes of the X display TERMINAL.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.
(On MS Windows, this function does not accept terminal objects.)

(fn &optional TERMINAL)Fx-display-color-cells
Return the number of color cells of the X display TERMINAL.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.
(On MS Windows, this function does not accept terminal objects.)

(fn &optional TERMINAL)Fx-server-max-request-size
Return the maximum request size of the X server of display TERMINAL.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

On MS Windows, this function just returns 1.
On Nextstep, this function just returns nil.

(fn &optional TERMINAL)Fx-server-vendor
Return the "vendor ID" string of the GUI software on TERMINAL.

(Labeling every distributor as a "vendor" embodies the false assumption
that operating systems cannot be developed and distributed noncommercially.)
The optional argument TERMINAL specifies which display to ask about.

For GNU and Unix systems, this queries the X server software.
For Android systems, value is the manufacturer who developed the Android
system that is being used.
For MS Windows and Nextstep the result is hard-coded.

TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

(fn &optional TERMINAL)Fx-server-version
Return the version numbers of the GUI software on TERMINAL.
The value is a list of three integers specifying the version of the GUI
software in use.

For GNU and Unix system, the first 2 numbers are the version of the X
Protocol used on TERMINAL and the 3rd number is the distributor-specific
release number.  For MS Windows, the 3 numbers report the OS major and
minor version and build number.  For Nextstep, the first 2 numbers are
hard-coded and the 3rd represents the OS version.  For Haiku, all 3
numbers are hard-coded.  For Android, the first number represents the
Android API level, and the next two numbers are all zero.

See also the function `x-server-vendor'.

The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

(fn &optional TERMINAL)Fx-server-input-extension-version
Return the version of the X Input Extension supported by TERMINAL.
The value is nil if TERMINAL's X server doesn't support the X Input
Extension extension, or if Emacs doesn't support the version present
on that server.  Otherwise, the return value is a list of the major
and minor versions of the X Input Extension extension running on that
server.

(fn &optional TERMINAL)Fx-display-screens
Return the number of screens on the X server of display TERMINAL.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

On MS Windows, this function just returns 1.
On Nextstep, "screen" is in X terminology, not that of Nextstep.
For the number of physical monitors, use `(length
(display-monitor-attributes-list TERMINAL))' instead.

(fn &optional TERMINAL)Fx-display-mm-height
Return the height in millimeters of the X display TERMINAL.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.
(On MS Windows, this function does not accept terminal objects.)

On "multi-monitor" setups this refers to the height in millimeters for
all physical monitors associated with TERMINAL.  To get information
for each physical monitor, use `display-monitor-attributes-list'.

(fn &optional TERMINAL)Fx-display-mm-width
Return the width in millimeters of the X display TERMINAL.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.
(On MS Windows, this function does not accept terminal objects.)

On "multi-monitor" setups this refers to the width in millimeters for
all physical monitors associated with TERMINAL.  To get information
for each physical monitor, use `display-monitor-attributes-list'.

(fn &optional TERMINAL)Fx-display-backing-store
Return an indication of whether X display TERMINAL does backing store.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

The value may be `always', `when-mapped', or `not-useful'.
On Nextstep, the value may be `buffered', `retained', or `non-retained'.
On MS Windows, this returns nothing useful.

(fn &optional TERMINAL)Fx-display-visual-class
Return the visual class of the X display TERMINAL.
The value is one of the symbols `static-gray', `gray-scale',
`static-color', `pseudo-color', `true-color', or `direct-color'.
(On MS Windows, the second and last result above are not possible.)

The optional argument TERMINAL specifies which display to ask about.
TERMINAL should a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.
(On MS Windows, this function does not accept terminal objects.)

(fn &optional TERMINAL)Fx-display-save-under
Return t if the X display TERMINAL supports the save-under feature.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

On MS Windows, this just returns nil.

(fn &optional TERMINAL)Fx-display-monitor-attributes-list
Return a list of physical monitor attributes on the X display TERMINAL.

The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

In addition to the standard attribute keys listed in
`display-monitor-attributes-list', the following keys are contained in
the attributes:

 source -- String describing the source from which multi-monitor
	   information is obtained, one of "Gdk", "XRandR 1.5",
	   "XRandr", "Xinerama", or "fallback"

Internal use only, use `display-monitor-attributes-list' instead.

(fn &optional TERMINAL)Fx-frame-geometry
Return geometric attributes of FRAME.
FRAME must be a live frame and defaults to the selected one.  The return
value is an association list of the attributes listed below.  All height
and width values are in pixels.

`outer-position' is a cons of the outer left and top edges of FRAME
  relative to the origin - the position (0, 0) - of FRAME's display.

`outer-size' is a cons of the outer width and height of FRAME.  The
  outer size includes the title bar and the external borders as well as
  any menu and/or tool bar of frame.  For a child frame the value
  includes FRAME's X borders, if any.

`external-border-size' is a cons of the horizontal and vertical width of
  FRAME's external borders as supplied by the window manager.

`title-bar-size' is a cons of the width and height of the title bar of
  FRAME as supplied by the window manager.  If both of them are zero,
  FRAME has no title bar.  If only the width is zero, Emacs was not
  able to retrieve the width information.

`menu-bar-external', if non-nil, means the menu bar is external (never
  included in the inner edges of FRAME).

`menu-bar-size' is a cons of the width and height of the menu bar of
  FRAME.

`tool-bar-external', if non-nil, means the tool bar is external (never
  included in the inner edges of FRAME).

`tool-bar-position' tells on which side the tool bar on FRAME is and can
  be one of `left', `top', `right' or `bottom'.  If this is nil, FRAME
  has no tool bar.

`tool-bar-size' is a cons of the width and height of the tool bar of
  FRAME.

`internal-border-width' is the width of the internal border of
  FRAME.

`outer-border-width' is the width of the X border of FRAME.  The X
  border is usually shown only for frames without window manager
  decorations, such as child and tooltip frames.

(fn &optional FRAME)Fx-frame-edges
Return edge coordinates of FRAME.
FRAME must be a live frame and defaults to the selected one.  The return
value is a list of the form (LEFT, TOP, RIGHT, BOTTOM).  All values are
in pixels relative to the origin - the position (0, 0) - of FRAME's
display.

If optional argument TYPE is the symbol `outer-edges', return the outer
edges of FRAME.  The outer edges comprise the decorations of the window
manager (like the title bar or external borders) as well as any external
menu or tool bar of FRAME.  If optional argument TYPE is the symbol
`native-edges' or nil, return the native edges of FRAME.  The native
edges exclude the decorations of the window manager and any external
menu or tool bar of FRAME.  If TYPE is the symbol `inner-edges', return
the inner edges of FRAME.  These edges exclude title bar, any borders,
menu bar or tool bar of FRAME.

(fn &optional FRAME TYPE)Fx-frame-list-z-order
Return list of Emacs's frames, in Z (stacking) order.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be either a frame or a display name (a string).  If
omitted or nil, that stands for the selected frame's display.  Return
nil if TERMINAL contains no Emacs frame.

As a special case, if TERMINAL is non-nil and specifies a live frame,
return the child frames of that frame in Z (stacking) order.

Frames are listed from topmost (first) to bottommost (last).

(fn &optional TERMINAL)Fx-frame-restack
Restack FRAME1 below FRAME2.
This means that if both frames are visible and the display areas of
these frames overlap, FRAME2 (partially) obscures FRAME1.  If optional
third argument ABOVE is non-nil, restack FRAME1 above FRAME2.  This
means that if both frames are visible and the display areas of these
frames overlap, FRAME1 (partially) obscures FRAME2.

This may be thought of as an atomic action performed in two steps: The
first step removes FRAME1's window-step window from the display.  The
second step reinserts FRAME1's window below (above if ABOVE is true)
that of FRAME2.  Hence the position of FRAME2 in its display's Z
(stacking) order relative to all other frames excluding FRAME1 remains
unaltered.

Some window managers may refuse to restack windows.

(fn FRAME1 FRAME2 &optional ABOVE)Fx-mouse-absolute-pixel-position
Return absolute position of mouse cursor in pixels.
The position is returned as a cons cell (X . Y) of the coordinates of
the mouse cursor position in pixels relative to a position (0, 0) of the
selected frame's display.

(fn)Fx-set-mouse-absolute-pixel-position
Move mouse pointer to absolute pixel position (X, Y).
The coordinates X and Y are interpreted in pixels relative to a position
(0, 0) of the selected frame's display.

(fn X Y)Fx-begin-drag
Begin dragging contents on FRAME, with targets TARGETS.
TARGETS is a list of strings, which defines the X selection targets
that will be available to the drop target.  Block until the mouse
buttons are released, then return the action chosen by the target, or
`nil' if the drop was not accepted by the drop target.  Dragging
starts when the mouse is pressed on FRAME, and the contents of the
selection `XdndSelection' will be sent to the X window underneath the
mouse pointer (the drop target) when the mouse button is released.

ACTION is a symbol which tells the target what it should do, and can
be one of the following:

 - `XdndActionCopy', which means to copy the contents from the drag
   source (FRAME) to the drop target.

 - `XdndActionMove', which means to first take the contents of
   `XdndSelection', and to delete whatever was saved into that
   selection afterwards.

`XdndActionPrivate' is also a valid return value, and means that the
drop target chose to perform an unspecified or unknown action.

The source is also expected to cooperate with the target to perform
the action chosen by the target.  For example, callers should delete
the buffer text that was dragged if `XdndActionMove' is returned.

There are also some other valid values of ACTION that depend on
details of both the drop target's implementation details and that of
Emacs.  For that reason, they are not mentioned here.  Consult
"Drag-and-Drop Protocol for the X Window System" for more details:
https://freedesktop.org/wiki/Specifications/XDND/.

If RETURN-FRAME is non-nil, this function will return the frame if the
mouse pointer moves onto an Emacs frame, after first moving out of
FRAME.  (This is not guaranteed to work on some systems.)  If
RETURN-FRAME is the symbol `now', any frame underneath the mouse
pointer will be returned immediately.

If ACTION is a list and not nil, its elements are assumed to be a cons
of (ITEM . STRING), where ITEM is the name of an action, and STRING is
a string describing ITEM to the user.  The drop target is expected to
prompt the user to choose between any of the actions in the list.

If ACTION is not specified or nil, `XdndActionCopy' is used
instead.

If ALLOW-CURRENT-FRAME is not specified or nil, then the drop target
is allowed to be FRAME.  Otherwise, no action will be taken if the
mouse buttons are released on top of FRAME.

If FOLLOW-TOOLTIP is non-nil, any tooltip currently being displayed
will be moved to follow the mouse pointer while the drag is in
progress.  Note that this does not work with system tooltips (tooltips
created when `use-system-tooltips' is non-nil).

This function will sometimes return immediately if no mouse buttons
are currently held down.  It should only be called when it is known
that mouse buttons are being held down, such as immediately after a
`down-mouse-1' (or similar) event.

(fn TARGETS &optional ACTION FRAME RETURN-FRAME ALLOW-CURRENT-FRAME FOLLOW-TOOLTIP)Fx-open-connection
Open a connection to a display server.
DISPLAY is the name of the display to connect to.
Optional second arg XRM-STRING is a string of resources in xrdb format.
If the optional third arg MUST-SUCCEED is non-nil,
terminate Emacs if we can't open the connection.
(In the Nextstep version, the last two arguments are currently ignored.)

(fn DISPLAY &optional XRM-STRING MUST-SUCCEED)Fx-close-connection
Close the connection to TERMINAL's X server.
For TERMINAL, specify a terminal object, a frame or a display name (a
string).  If TERMINAL is nil, that stands for the selected frame's terminal.
(On MS Windows, this function does not accept terminal objects.)

(fn TERMINAL)Fx-display-list
Return the list of display names that Emacs has connections to.

(fn)Fx-synchronize
If ON is non-nil, report X errors as soon as the erring request is made.
This function has an effect only on X Windows.  With MS Windows, it is
defined but does nothing.

If ON is nil, allow buffering of requests.
Turning on synchronization prohibits the Xlib routines from buffering
requests and seriously degrades performance, but makes debugging much
easier.
The optional second argument TERMINAL specifies which display to act on.
TERMINAL should be a terminal object, a frame or a display name (a string).
If TERMINAL is omitted or nil, that stands for the selected frame's display.

(fn ON &optional TERMINAL)Fx-change-window-property
Change window property PROP to VALUE on the X window of FRAME.
PROP must be a string.  VALUE may be a string or a list of conses,
numbers and/or strings.  If an element in the list is a string, it is
converted to an atom and the value of the atom is used.  If an element
is a cons, it is converted to a 32 bit number where the car is the 16
top bits and the cdr is the lower 16 bits.

FRAME nil or omitted means use the selected frame.  If TYPE is given
and non-nil, it is the name of the type of VALUE.  If TYPE is not
given or nil, the type is STRING.

FORMAT gives the size in bits of each element if VALUE is a list.  It
must be one of 8, 16 or 32.

If VALUE is a string or FORMAT is nil or not given, FORMAT defaults to
8.  If OUTER-P is non-nil, the property is changed for the outer X
window of FRAME.  Default is to change on the edit X window.

If WINDOW-ID is non-nil, change the property of that window instead of
FRAME's X window; the number 0 denotes the root window.  This argument
is separate from FRAME because window IDs are not unique across X
displays or screens on the same display, so FRAME provides context for
the window ID.

If VALUE is a string and FORMAT is 32, then the format of VALUE is
system-specific.  VALUE must contain unsigned integer data in native
endian-ness in multiples of the size of the C type 'long': the low 32
bits of each such number are used as the value of each element of the
property.

Wait for the request to complete and signal any error, unless
`x-fast-protocol-requests' is non-nil, in which case errors will be
silently ignored.

(fn PROP VALUE &optional FRAME TYPE FORMAT OUTER-P WINDOW-ID)Fx-delete-window-property
Remove window property PROP from X window of FRAME.
FRAME nil or omitted means use the selected frame.
If WINDOW-ID is non-nil, remove property from that window instead
 of FRAME's X window; the number 0 denotes the root window.  This
 argument is separate from FRAME because window IDs are not unique
 across X displays or screens on the same display, so FRAME provides
 context for the window ID.

Value is PROP.

Wait for the request to complete and signal any error, unless
`x-fast-protocol-requests' is non-nil, in which case errors will be
silently ignored.

(fn PROP &optional FRAME WINDOW-ID)Fx-window-property
Value is the value of window property PROP on FRAME.
If FRAME is nil or omitted, use the selected frame.

On X Windows, the following optional arguments are also accepted: If
TYPE is nil or omitted, get the property as a string.  Otherwise TYPE
is the name of the atom that denotes the expected type.

If TYPE is the string "AnyPropertyType", decode and return the data
regardless of what the type really is.

The format of the data returned is the same as a selection conversion
to the given type.  For example, if `x-get-selection-internal' returns
an integer when the selection data is a given type,
`x-window-property' will do the same for that type.

If WINDOW-ID is non-nil, get the property of that window instead of
FRAME's X window; the number 0 denotes the root window.  This argument
is separate from FRAME because window IDs are not unique across X
displays, so FRAME provides context for the window ID.

If DELETE-P is non-nil, delete the property after retrieving it.
If VECTOR-RET-P is non-nil, return a vector of values instead of a string.

X allows an arbitrary number of properties to be set on any window.
However, properties are most often set by the window manager or other
programs on the root window or FRAME's X window in order to
communicate information to Emacs and other programs.  Most of these
properties are specified as part of the Extended Window Manager Hints
and the Inter-Client Communication Conventions Manual, which are
located here:

  https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html

and

  https://x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html

Return value is nil if FRAME doesn't have a property with name PROP or
if PROP has no value of TYPE (always a string in the MS Windows case).

(fn PROP &optional FRAME TYPE WINDOW-ID DELETE-P VECTOR-RET-P)Fx-window-property-attributes
Retrieve metadata about window property PROP on FRAME.
If FRAME is nil or omitted, use the selected frame.
If WINDOW-ID is non-nil, get the property of that window instead of
 FRAME's X window; the number 0 denotes the root window.  This
 argument is separate from FRAME because window IDs are not unique
 across X displays or screens on the same display, so FRAME provides
 context for the window ID.

Return value is nil if FRAME doesn't have a property named PROP.
Otherwise, the return value is a vector with the following fields:

0. The property type, as an integer.  The symbolic name of
 the type can be obtained with `x-get-atom-name'.
1. The format of each element; one of 8, 16, or 32.
2. The length of the property, in number of elements.

(fn PROP &optional FRAME WINDOW-ID)Fx-translate-coordinates
Translate coordinates from FRAME.
Translate the given coordinates SOURCE-X and SOURCE-Y from
SOURCE-WINDOW's coordinate space to that of DEST-WINDOW, on FRAME.

If SOURCE-X and SOURCE-Y are nil, use 0 instead.

FRAME can either be a terminal or a frame.  If nil, it defaults to the
selected frame.  SOURCE-WINDOW must be an X window ID, 0 (which means
to use the root window), or nil, which means to use FRAME's inner
window.  DEST-WINDOW must be another X window ID, or nil (which means
to use the root window).

Return a list of (X Y CHILD) if the given coordinates are on the same
screen, or nil otherwise, where X and Y are the coordinates in
DEST-WINDOW's coordinate space, and CHILD is the window ID of any
mapped child in DEST-WINDOW at those coordinates, or nil if there is
no such window.  If REQUIRE-CHILD is nil, avoid fetching CHILD if it
would result in an avoidable request to the X server, thereby
improving performance when the X connection is over a slow network.
Otherwise, always obtain the mapped child window from the X
server.

(fn FRAME &optional SOURCE-WINDOW DEST-WINDOW SOURCE-X SOURCE-Y REQUIRE-CHILD)Fx-show-tip
Show STRING in a "tooltip" window on frame FRAME.
A tooltip window is a small X window displaying a string.

This is an internal function; Lisp code should call `tooltip-show'.

FRAME nil or omitted means use the selected frame.

PARMS is an optional list of frame parameters which can be used to
change the tooltip's appearance.

Automatically hide the tooltip after TIMEOUT seconds.  TIMEOUT nil
means use the default timeout from the `x-show-tooltip-timeout'
variable.

If the list of frame parameters PARMS contains a `left' parameter,
display the tooltip at that x-position.  If the list of frame parameters
PARMS contains no `left' but a `right' parameter, display the tooltip
right-adjusted at that x-position. Otherwise display it at the
x-position of the mouse, with offset DX added (default is 5 if DX isn't
specified).

Likewise for the y-position: If a `top' frame parameter is specified, it
determines the position of the upper edge of the tooltip window.  If a
`bottom' parameter but no `top' frame parameter is specified, it
determines the position of the lower edge of the tooltip window.
Otherwise display the tooltip window at the y-position of the mouse,
with offset DY added (default is -10).

A tooltip's maximum size is specified by `x-max-tooltip-size'.
Text larger than the specified size is clipped.

(fn STRING &optional FRAME PARMS TIMEOUT DX DY)Fx-hide-tip
Hide the current tooltip window, if there is any.
Value is t if tooltip was open, nil otherwise.

(fn)Fx-double-buffered-p
Return t if FRAME is being double buffered.

(fn &optional FRAME)Fx-uses-old-gtk-dialog
Return t if the old Gtk+ file selection dialog is used.

(fn)Fx-file-dialog
SKIP: real doc in USE_GTK definition in xfns.c.

(fn PROMPT DIR &optional DEFAULT-FILENAME MUSTMATCH ONLY-DIR-P)Fx-file-dialog
Read file name, prompting with PROMPT in directory DIR.
Use a file selection dialog.  Select DEFAULT-FILENAME in the dialog's file
selection box, if specified.  If MUSTMATCH is non-nil, the returned file
or directory must exist.

This function is defined only on NS, Haiku, MS Windows, and X Windows with the
Motif or Gtk toolkits.  With the Motif toolkit, ONLY-DIR-P is ignored.
Otherwise, if ONLY-DIR-P is non-nil, the user can select only directories.
On MS Windows 7 and later, the file selection dialog "remembers" the last
directory where the user selected a file, and will open that directory
instead of DIR on subsequent invocations of this function with the same
value of DIR as in previous invocations; this is standard MS Windows behavior.

(fn PROMPT DIR &optional DEFAULT-FILENAME MUSTMATCH ONLY-DIR-P)Fx-select-font
Read a font using a GTK dialog.
Return either a font spec (for GTK versions >= 3.2) or a string
containing a GTK-style font name.

FRAME is the frame on which to pop up the font chooser.  If omitted or
nil, it defaults to the selected frame.

(fn &optional FRAME IGNORED)Fx-backspace-delete-keys-p
Check if both Backspace and Delete keys are on the keyboard of FRAME.
FRAME nil means use the selected frame.
Value is t if we know that both keys are present, and are mapped to the
usual X keysyms.  Value is `lambda' if we cannot determine if both keys are
present and mapped to the usual X keysyms.

(fn &optional FRAME)Fx-get-modifier-masks
Return the X modifier masks corresponding to keyboard modifiers.
The optional second argument TERMINAL specifies which display to fetch
modifier masks from.  TERMINAL should be a terminal object, a frame or
a display name (a string).  If TERMINAL is omitted or nil, that stands
for the selected frame's display.

Return a list of (HYPER SUPER ALT SHIFT-LOCK META), each element being
a number describing the modifier mask for the corresponding Emacs
modifier.

(fn &optional TERMINAL)Fx-export-frames
Return image data of FRAMES in TYPE format.
FRAMES should be nil (the selected frame), a frame, or a list of
frames (each of which corresponds to one page).  Each frame should be
visible.  Optional arg TYPE should be either `pdf' (default), `png',
`postscript', or `svg'.  Supported types are determined by the
compile-time configuration of cairo.

Note: Text drawn with the `x' font backend is shown with hollow boxes
unless TYPE is `png'.

(fn &optional FRAMES TYPE)Fx-page-setup-dialog
Pop up a page setup dialog.
The current page setup can be obtained using `x-get-page-setup'.

(fn)Fx-get-page-setup
Return the value of the current page setup.
The return value is an alist containing the following keys:

  orientation: page orientation (symbol `portrait', `landscape',
	`reverse-portrait', or `reverse-landscape').
  width, height: page width/height in points not including margins.
  left-margin, right-margin, top-margin, bottom-margin: print margins,
	which is the parts of the page that the printer cannot print
	on, in points.

The paper width can be obtained as the sum of width, left-margin, and
right-margin values if the page orientation is `portrait' or
`reverse-portrait'.  Otherwise, it is the sum of width, top-margin,
and bottom-margin values.  Likewise, the paper height is the sum of
height, top-margin, and bottom-margin values if the page orientation
is `portrait' or `reverse-portrait'.  Otherwise, it is the sum of
height, left-margin, and right-margin values.

(fn)Fx-print-frames-dialog
Pop up a print dialog to print the current contents of FRAMES.
FRAMES should be nil (the selected frame), a frame, or a list of
frames (each of which corresponds to one page).  Each frame should be
visible.

Note: Text drawn with the `x' font backend is shown with hollow boxes.

(fn &optional FRAMES)Fx-gtk-debug
Toggle interactive GTK debugging.

(fn ENABLE)Fx-display-set-last-user-time
Set the last user time of TERMINAL to TIME-OBJECT.
TIME-OBJECT is the X server time, in milliseconds, of the last user
interaction.  This is the timestamp that `x-get-selection-internal'
will use by default to fetch selection data.
The optional second argument TERMINAL specifies which display to act
on.  TERMINAL should be a terminal object, a frame or a display name
(a string).  If TERMINAL is omitted or nil, that stands for the
selected frame's display.

(fn TIME-OBJECT &optional TERMINAL)Fx-internal-focus-input-context
Focus and set the client window of all focused frames' GTK input context.
If FOCUS is nil, focus out and remove the client window instead.
This should be called from a variable watcher for `x-gtk-use-native-input'.

(fn FOCUS)Fx-test-string-conversion
Perform tests on the XIM string conversion support.

(fn FRAME POSITION DIRECTION OPERATION FACTOR)Vx-pointer-shape
The shape of the pointer when over text.
Changing the value does not affect existing frames
unless you set the mouse color.Vx-nontext-pointer-shape
The shape of the pointer when not over text.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-hourglass-pointer-shape
The shape of the pointer when Emacs is busy.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-mode-pointer-shape
The shape of the pointer when over the mode line.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-sensitive-text-pointer-shape
The shape of the pointer when over mouse-sensitive text.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-window-horizontal-drag-cursor
Pointer shape to use for indicating a window can be dragged horizontally.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-window-vertical-drag-cursor
Pointer shape to use for indicating a window can be dragged vertically.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-window-left-edge-cursor
Pointer shape indicating a left x-window edge can be dragged.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-window-top-left-corner-cursor
Pointer shape indicating a top left x-window corner can be dragged.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-window-top-edge-cursor
Pointer shape indicating a top x-window edge can be dragged.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-window-top-right-corner-cursor
Pointer shape indicating a top right x-window corner can be dragged.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-window-right-edge-cursor
Pointer shape indicating a right x-window edge can be dragged.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-window-bottom-right-corner-cursor
Pointer shape indicating a bottom right x-window corner can be dragged.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-window-bottom-edge-cursor
Pointer shape indicating a bottom x-window edge can be dragged.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-window-bottom-left-corner-cursor
Pointer shape indicating a bottom left x-window corner can be dragged.
This variable takes effect when you create a new frame
or when you set the mouse color.Vx-cursor-fore-pixel
A string indicating the foreground color of the cursor box.Vx-max-tooltip-size
Maximum size for tooltips.
Value is a pair (COLUMNS . ROWS).  Text larger than this is clipped.Vx-no-window-manager
Non-nil if no X window manager is in use.
Emacs doesn't try to figure this out; this is always nil
unless you set it to something else.Vx-pixel-size-width-font-regexp
Regexp matching a font name whose width is the same as `PIXEL_SIZE'.

Since Emacs gets the width of a font matching this regexp from the
PIXEL_SIZE field of the name, the font-finding mechanism gets faster for
such a font.  This is especially effective for large fonts such as
Chinese, Japanese, and Korean.Vx-gtk-use-old-file-dialog
Non-nil means prompt with the old GTK file selection dialog.
If nil or if the file selection dialog is not available, the new GTK file
chooser is used instead.  To turn off all file dialogs set the
variable `use-file-dialog'.Vx-gtk-show-hidden-files
If non-nil, the GTK file chooser will by default show hidden files.
Note that this is just the default, there is a toggle button on the file
chooser to show or not show hidden files on a case by case basis.Vx-gtk-file-dialog-help-text
If non-nil, the GTK file chooser will show additional help text.
If more space for files in the file chooser dialog is wanted, set this to nil
to turn the additional text off.Vx-gtk-resize-child-frames
If non-nil, resize child frames specially with GTK builds.
If this is nil, resize child frames like any other frames.  This is the
default and usually works with most desktops.  Some desktop environments
(GNOME shell in particular when using the mutter window manager),
however, may refuse to resize a child frame when Emacs is built with
GTK3.  For those environments, the two settings below are provided.

If this equals the symbol `hide', Emacs temporarily hides the child
frame during resizing.  This approach seems to work reliably, may
however induce some flicker when the frame is made visible again.

If this equals the symbol `resize-mode', Emacs uses GTK's resize mode to
always trigger an immediate resize of the child frame.  This method is
deprecated by GTK and may not work in future versions of that toolkit.
It also may freeze Emacs when used with other desktop environments.  It
avoids, however, the unpleasant flicker induced by the hiding approach.

This variable is considered a temporary workaround and will be hopefully
eliminated in future versions of Emacs.Vmotif-version-string
Version info for LessTif/Motif.Vgtk-version-string
Version info for GTK+.Vcairo-version-string
Version info for cairo.Sxmenu.o
Fx-menu-bar-open-internal
SKIP: real doc in USE_GTK definition in xmenu.c.

(fn &optional FRAME)Fx-menu-bar-open-internal
Start key navigation of the menu bar in FRAME.
This initially opens the first menu bar item and you can then navigate with the
arrow keys, select a menu entry with the return key or cancel with the
escape key.  If FRAME has no menu bar this function does nothing.

If FRAME is nil or not given, use the selected frame.

(fn &optional FRAME)Fmenu-or-popup-active-p
Return t if a menu or popup dialog is active.
(On MS Windows, this refers to the selected frame.)

(fn)Sxselect.o
Fx-own-selection-internal
Assert an X selection of type SELECTION and value VALUE.
SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
(Those are literal upper-case symbol names, since that's what X expects.)
VALUE is typically a string, or a cons of two markers, but may be
anything that the functions on `selection-converter-alist' know about.

FRAME should be a frame that should own the selection.  If omitted or
nil, it defaults to the selected frame.

On Nextstep, FRAME is unused.

(fn SELECTION VALUE &optional FRAME)Fx-get-selection-internal
Return text selected from some X window.
SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
(Those are literal upper-case symbol names, since that's what X expects.)
TARGET-TYPE is the type of data desired, typically `STRING'.

TIME-STAMP is the time to use in the XConvertSelection call for foreign
selections.  If omitted, defaults to the time for the last event.

TERMINAL should be a terminal object or a frame specifying the X
server to query.  If omitted or nil, that stands for the selected
frame's display, or the first available X display.

On Nextstep, TIME-STAMP and TERMINAL are unused.

(fn SELECTION-SYMBOL TARGET-TYPE &optional TIME-STAMP TERMINAL)Fx-disown-selection-internal
If we own the selection SELECTION, disown it.
Disowning it means there is no such selection.

Sets the last-change time for the selection to TIME-OBJECT (by default
the time of the last event).

TERMINAL should be a terminal object or a frame specifying the X
server to query.  If omitted or nil, that stands for the selected
frame's display, or the first available X display.

On Nextstep, the TIME-OBJECT and TERMINAL arguments are unused.
On MS-DOS, all this does is return non-nil if we own the selection.

(fn SELECTION &optional TIME-OBJECT TERMINAL)Fx-selection-owner-p
Whether the current Emacs process owns the given X Selection.
The arg should be the name of the selection in question, typically one of
the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.
(Those are literal upper-case symbol names, since that's what X expects.)
For convenience, the symbol nil is the same as `PRIMARY',
and t is the same as `SECONDARY'.

TERMINAL should be a terminal object or a frame specifying the X
server to query.  If omitted or nil, that stands for the selected
frame's display, or the first available X display.

On Nextstep, TERMINAL is unused.

(fn &optional SELECTION TERMINAL)Fx-selection-exists-p
Whether there is an owner for the given X selection.
SELECTION should be the name of the selection in question, typically
one of the symbols `PRIMARY', `SECONDARY', `CLIPBOARD', or
`CLIPBOARD_MANAGER' (X expects these literal upper-case names.)  The
symbol nil is the same as `PRIMARY', and t is the same as `SECONDARY'.

TERMINAL should be a terminal object or a frame specifying the X
server to query.  If omitted or nil, that stands for the selected
frame's display, or the first available X display.

On Nextstep, TERMINAL is unused.

(fn &optional SELECTION TERMINAL)Fx-get-local-selection
Run selection converters for VALUE, and return the result.
TARGET is the selection target that is used to find a suitable
converter.  VALUE is a list of 4 values NAME, SELECTION-VALUE,
TIMESTAMP and FRAME.  NAME is the name of the selection that will be
passed to selection converters, SELECTION-VALUE is the value of the
selection used by the converter, TIMESTAMP is not meaningful (but must
be a number that fits in an X timestamp), and FRAME is the frame
describing the terminal for which the selection converter will be
run.

(fn &optional VALUE TARGET)Fx-get-atom-name
Return the X atom name for VALUE as a string.
VALUE may be a number or a cons where the car is the upper 16 bits and
the cdr is the lower 16 bits of a 32 bit value.
Use the display for FRAME or the current frame if FRAME is not given or nil.

If the value is 0 or the atom is not known, return the empty string.

(fn VALUE &optional FRAME)Fx-register-dnd-atom
Request that dnd events are made for ClientMessages with ATOM.
ATOM can be a symbol or a string.  The ATOM is interned on the display that
FRAME is on.  If FRAME is nil, the selected frame is used.

(fn ATOM &optional FRAME)Fx-send-client-message
Send a client message of MESSAGE-TYPE to window DEST on DISPLAY.

For DISPLAY, specify either a frame or a display name (a string).
If DISPLAY is nil, that stands for the selected frame's display.
DEST may be a number, in which case it is a Window id.  The value 0 may
be used to send to the root window of the DISPLAY.
If DEST is a cons, it is converted to a 32 bit number
with the high 16 bits from the car and the lower 16 bit from the cdr.  That
number is then used as a window id.
If DEST is a frame the event is sent to the outer window of that frame.
A value of nil means the currently selected frame.
If DEST is the string "PointerWindow" the event is sent to the window that
contains the pointer.  If DEST is the string "InputFocus" the event is
sent to the window that has the input focus.
FROM is the frame sending the event.  Use nil for currently selected frame.
MESSAGE-TYPE is the name of an Atom as a string.
FORMAT must be one of 8, 16 or 32 and determines the size of the values in
bits.  VALUES is a list of numbers, cons and/or strings containing the values
to send.  If a value is a string, it is converted to an Atom and the value of
the Atom is sent.  If a value is a cons, it is converted to a 32 bit number
with the high 16 bits from the car and the lower 16 bit from the cdr.
If more values than fits into the event is given, the excessive values
are ignored.

Wait for the event to be sent and signal any error, unless
`x-fast-protocol-requests' is non-nil, in which case errors will be
silently ignored.

(fn DISPLAY DEST FROM MESSAGE-TYPE FORMAT VALUES)Vselection-converter-alist
An alist associating X Windows selection-types with functions.
These functions are called to convert the selection, with three args:
the name of the selection (typically `PRIMARY', `SECONDARY', or
`CLIPBOARD'); a desired type to which the selection should be
converted; and the local selection value (whatever was given to
`x-own-selection-internal').

On X Windows, the function can also be a cons of (PREDICATE
. FUNCTION), where PREDICATE determines whether or not the selection
type will appear in the list of selection types available to other
programs, and FUNCTION is the function which is actually called.
PREDICATE is called with the same arguments as FUNCTION, and should
return a non-nil value if the data type is to appear in that list.

The function should return the value to send to the X server
(typically a string).  A return value of nil
means that the conversion could not be done.
A return value which is the symbol `NULL'
means that a side-effect was executed,
and there is no meaningful selection value.Vx-lost-selection-functions
A list of functions to be called when Emacs loses an X selection.
(This happens when some other X client makes its own selection
or when a Lisp program explicitly clears the selection.)
The functions are called with one argument, the selection type
(a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD').Vx-sent-selection-functions
A list of functions to be called when Emacs answers a selection request.
The functions are called with three arguments:
  - the selection name (typically `PRIMARY', `SECONDARY', or `CLIPBOARD');
  - the selection-type which Emacs was asked to convert the
    selection into before sending (for example, `STRING' or `LENGTH');
  - a flag indicating success or failure for responding to the request.
We might have failed (and declined the request) for any number of reasons,
including being asked for a selection that we no longer own, or being asked
to convert into a type that we don't know about or that is inappropriate.
This hook doesn't let you change the behavior of Emacs's selection replies,
it merely informs you that they have happened.Vx-select-enable-clipboard-manager
Whether to enable X clipboard manager support.
If non-nil, then whenever Emacs is killed or an Emacs frame is deleted
while owning the X clipboard, the clipboard contents are saved to the
clipboard manager if one is present.Vx-selection-timeout
Number of milliseconds to wait for a selection reply.
If the selection owner doesn't reply in this time, we give up.
A value of 0 means wait as long as necessary.  This is initialized from the
"*selectionTimeout" resource.Vx-treat-local-requests-remotely
Whether to treat local selection requests as remote ones.

If non-nil, selection converters for string types (`STRING',
`UTF8_STRING', `COMPOUND_TEXT', etc) will encode the strings, even
when Emacs itself is converting the selection.Vx-selection-alias-alist
List of selections to alias to another.
It should be an alist of a selection name to another.  When a
selection request arrives for the first selection, Emacs will respond
as if the request was meant for the other.

Note that this does not affect setting or owning selections.Sxrdb.o
Sxsmfns.o
Fhandle-save-session
Handle the save_yourself event from a session manager.
A session manager can tell Emacs that the window system is shutting down
by sending Emacs a save_yourself message.  Emacs executes this function when
such an event occurs.  This function then executes `emacs-session-save'.
After that, this function informs the session manager that it can continue
or abort shutting down the window system depending on the return value
from `emacs-session-save'  If the return value is non-nil the session manager
is told to abort the window system shutdown.

Do not call this function yourself.

(fn EVENT)Vx-session-id
The session id Emacs got from the session manager for this session.
Changing the value does not change the session id used by Emacs.
The value is nil if no session manager is running.
See also `x-session-previous-id', `emacs-save-session-functions',
`emacs-session-save' and `emacs-session-restore'.Vx-session-previous-id
The previous session id Emacs got from session manager.
If Emacs is running on a window system that has a session manager, the
session manager gives Emacs a session id.  It is feasible for Emacs Lisp
code to use the session id to save configuration in, for example, a file
with a file name based on the session id.  If Emacs is running when the
window system is shut down, the session manager remembers that Emacs was
running and saves the session id Emacs had.

When the window system is started again, the session manager restarts
Emacs and hands Emacs the session id it had the last time it was
running.  This is now the previous session id and the value of this
variable.  If configuration was saved in a file as stated above, the
previous session id shall be used to reconstruct the file name.

The session id Emacs has while it is running is in the variable
`x-session-id'.  The value of this variable and `x-session-id' may be the
same, depending on how the session manager works.

See also `emacs-save-session-functions', `emacs-session-save' and
`emacs-session-restore'.Sfringe.o
Fdestroy-fringe-bitmap
Destroy fringe bitmap BITMAP.
If BITMAP overrides a standard fringe bitmap, the original bitmap is restored.

(fn BITMAP)Fdefine-fringe-bitmap
Define fringe bitmap BITMAP from BITS of size HEIGHT x WIDTH.
BITMAP is a symbol identifying the new fringe bitmap.
BITS is either a string or a vector of integers.
HEIGHT is height of bitmap.  If HEIGHT is nil, use length of BITS.
WIDTH must be an integer from 1 to 16, or nil which defaults to 8.  An
error is signaled if WIDTH is outside this range.
Optional fifth arg ALIGN may be one of `top', `center', or `bottom',
indicating the positioning of the bitmap relative to the rows where it
is used; the default is to center the bitmap.  Fifth arg may also be a
list (ALIGN PERIODIC) where PERIODIC non-nil specifies that the bitmap
should be repeated.
If BITMAP already exists, the existing definition is replaced.

(fn BITMAP BITS &optional HEIGHT WIDTH ALIGN)Fset-fringe-bitmap-face
Set face for fringe bitmap BITMAP to FACE.
FACE is merged with the `fringe' face, so normally FACE should specify
only the foreground color.
If FACE is nil, reset face to default fringe face.

(fn BITMAP &optional FACE)Ffringe-bitmaps-at-pos
Return fringe bitmaps of row containing position POS in window WINDOW.
If WINDOW is nil, use selected window.  If POS is nil, use value of point
in that window.  Return value is a list (LEFT RIGHT OV), where LEFT
is the symbol for the bitmap in the left fringe (or nil if no bitmap),
RIGHT is similar for the right fringe, and OV is non-nil if there is an
overlay arrow in the left fringe.
Return nil if POS is not visible in WINDOW.

(fn &optional POS WINDOW)Voverflow-newline-into-fringe
Non-nil means that newline may flow into the right fringe.
This means that display lines that are exactly as wide as the window
(not counting the final newline) will occupy only one screen line, by
showing (or hiding) the final newline in the right fringe; when point
is at the final newline, the cursor is shown in the right fringe.
If nil, also continue lines which are exactly as wide as the window.Vfringe-bitmaps
List of fringe bitmap symbols.Simage.o
Fimage-size
Return the size of image SPEC as pair (WIDTH . HEIGHT).
PIXELS non-nil means return the size in pixels, otherwise return the
size in canonical character units.

FRAME is the frame on which the image will be displayed.  FRAME nil
or omitted means use the selected frame.

Calling this function will result in the image being stored in the
image cache.  If this is not desirable, call `image-flush' after
calling this function.

(fn SPEC &optional PIXELS FRAME)Fimage-mask-p
Return t if image SPEC has a mask bitmap.
FRAME is the frame on which the image will be displayed.  FRAME nil
or omitted means use the selected frame.

(fn SPEC &optional FRAME)Fimage-metadata
Return metadata for image SPEC.
FRAME is the frame on which the image will be displayed.  FRAME nil
or omitted means use the selected frame.

(fn SPEC &optional FRAME)Fclear-image-cache
Clear the image cache.
FILTER nil or a frame means clear all images in the selected frame.
FILTER t means clear the image caches of all frames.
Anything else means clear only those images that refer to FILTER,
which is then usually a filename.

This function also clears the image animation cache.  If
ANIMATION-CACHE is non-nil, only the image spec `eq' with
ANIMATION-CACHE is removed, and other image cache entries are not
evicted.

(fn &optional FILTER ANIMATION-CACHE)Fimage-flush
Flush the image with specification SPEC on frame FRAME.
This removes the image from the Emacs image cache.  If SPEC specifies
an image file, the next redisplay of this image will read from the
current contents of that file.

FRAME nil or omitted means use the selected frame.
FRAME t means refresh the image on all frames.

(fn SPEC &optional FRAME)Fimagemagick-types
Return a list of image types supported by ImageMagick.
Each entry in this list is a symbol named after an ImageMagick format
tag.  See the ImageMagick manual for a list of ImageMagick formats and
their descriptions (https://www.imagemagick.org/script/formats.php).
You can also try the shell command: `identify -list format'.

Note that ImageMagick recognizes many file-types that Emacs does not
recognize as images, such as C.  See `imagemagick-enabled-types'
and `imagemagick-types-inhibit'.

(fn)Fimagep
Value is non-nil if SPEC is a valid image specification.

(fn SPEC)Flookup-image


(fn SPEC)Fimage-transforms-p
Test whether FRAME supports image transformation.
Return list of capabilities if FRAME supports native transforms, nil otherwise.
FRAME defaults to the selected frame.
The list of capabilities can include one or more of the following:

 - the symbol `scale' if FRAME supports image scaling
 - the symbol `rotate90' if FRAME supports image rotation only by angles
    that are integral multiples of 90 degrees.

(fn &optional FRAME)Fimage-cache-size
Return the size of the image cache.

(fn)Finit-image-library
Initialize image library implementing image type TYPE.
Return t if TYPE is a supported image type.

If image libraries are loaded dynamically (currently the case only on
MS-Windows), load the library for TYPE if it is not yet loaded, using
the library file(s) specified by `dynamic-library-alist'.

(fn TYPE)Vimage-types
List of potentially supported image types.
Each element of the list is a symbol for an image type, like `jpeg' or `png'.
To check whether it is really supported, use `image-type-available-p'.Vmax-image-size
Maximum size of images.
Emacs will not load an image into memory if its pixel width or
pixel height exceeds this limit.

If the value is an integer, it directly specifies the maximum
image height and width, measured in pixels.  If it is a floating
point number, it specifies the maximum image height and width
as a ratio to the frame height and width.  If the value is
non-numeric, there is no explicit limit on the size of images.Vcross-disabled-images
Non-nil means always draw a cross over disabled images.
Disabled images are those having a `:conversion disabled' property.
A cross is always drawn on black & white displays.Vx-bitmap-file-path
List of directories to search for window system bitmap files.Vimage-cache-eviction-delay
Maximum time after which images are removed from the cache.
When an image has not been displayed this many seconds, Emacs
automatically removes it from the image cache.  If the cache contains
a large number of images, the actual eviction time may be shorter.
The value can also be nil, meaning the cache is never cleared.

The function `clear-image-cache' disregards this variable.Vimage-scaling-factor
When displaying images, apply this scaling factor before displaying.
This is not supported for all image types, and is mostly useful
when you have a high-resolution monitor.
The value is either a floating point number (where numbers higher
than 1 means to increase the size and lower means to shrink the
size), or the symbol `auto', which will compute a scaling factor
based on the font pixel size.Vimagemagick-render-type
Integer indicating which ImageMagick rendering method to use.
The options are:
  0 -- the default method (pixel pushing)
  1 -- a newer method ("MagickExportImagePixels") that may perform
       better (speed etc) in some cases, but has not been as thoroughly
       tested with Emacs as the default method.  This method requires
       ImageMagick version 6.4.6 (approximately) or later.Sfontset.o
Fquery-fontset
Return the name of a fontset that matches PATTERN.
The value is nil if there is no matching fontset.
PATTERN can contain `*' or `?' as a wildcard
just as X font name matching algorithm allows.
If REGEXPP is non-nil, PATTERN is a regular expression.

(fn PATTERN &optional REGEXPP)Fset-fontset-font
Modify FONTSET to use font specification in FONT-SPEC for displaying CHARACTERS.

FONTSET should be a fontset name (a string); or nil, meaning the
fontset of FRAME; or t, meaning the default fontset.

CHARACTERS may be a single character to use FONT-SPEC for.

CHARACTERS may be a cons (FROM . TO), where FROM and TO are characters.
In that case, use FONT-SPEC for all the characters in the range
between FROM and TO (inclusive).

CHARACTERS may be a script symbol.  In that case, use FONT-SPEC for
all the characters that belong to the script.  See the variable
`script-representative-chars' for the list of known scripts, and
see the variable `char-script-table' for the script of any specific
character.  Note: for the `symbol' script only, whether the FONTSET
is actually used depends on the value of `use-default-font-for-symbols'.

CHARACTERS may be a charset symbol.  In that case, use FONT-SPEC for
all the characters in the charset.  See `list-character-sets' and
`list-charset-chars' for the list of character sets and their
characters.

CHARACTERS may be nil.  In that case, use FONT-SPEC for any
character for which no font-spec is specified in FONTSET.

FONT-SPEC may one of these:
 * A font-spec object made by the function `font-spec' (which see).
 * A cons (FAMILY . REGISTRY), where FAMILY is a font family name and
   REGISTRY is a font registry name.  FAMILY may contain foundry
   name, and REGISTRY may contain encoding name.
 * A font name string.
 * nil, which explicitly specifies that there's no font for CHARACTERS.

Optional 4th argument FRAME is a frame whose fontset should be modified;
it is used if FONTSET is nil.  If FONTSET is nil and FRAME is omitted
or nil, that stands for the fontset of the selected frame.

Optional 5th argument ADD, if non-nil, specifies how to add FONT-SPEC
to the previously set font specifications for CHARACTERS.  If it is
`prepend', FONT-SPEC is prepended to the existing font specifications.
If it is `append', FONT-SPEC is appended.  By default, FONT-SPEC
overwrites the previous settings.

For reliable results, this function should be called before any
of CHARACTERS were displayed in the current Emacs session.  In
particular, if some of CHARACTERS are displayed using character
compositions, those compositions will be cached after they are first
produced, and the cached values include the font used for displaying
the composed characters -- calling this function will not affect the
font recorded in the cache of compositions, thus they will continue
to be shown using the fonts from before the call.

(fn FONTSET CHARACTERS FONT-SPEC &optional FRAME ADD)Fnew-fontset
Create a new fontset NAME from font information in FONTLIST.

FONTLIST is an alist of scripts vs the corresponding font specification list.
Each element of FONTLIST has the form (SCRIPT FONT-SPEC ...), where a
character of SCRIPT is displayed by a font that matches one of
FONT-SPEC.

SCRIPT is a symbol that appears in the first extra slot of the
char-table `char-script-table'.

FONT-SPEC is a vector, a cons, or a string.  See the documentation of
`set-fontset-font' for the meaning.

(fn NAME FONTLIST)Ffontset-info
Return information about a fontset FONTSET on frame FRAME.

FONTSET is a fontset name string, nil for the fontset of FRAME, or t
for the default fontset.  FRAME nil means the selected frame.

The value is a char-table whose elements have this form:

    ((FONT OPENED-FONT ...) ...)

FONT is a name of font specified for a range of characters.

OPENED-FONT is a name of a font actually opened.

The char-table has one extra slot.  If FONTSET is not the default
fontset, the value the extra slot is a char-table containing the
information about the derived fonts from the default fontset.  The
format is the same as above.

(fn FONTSET &optional FRAME)Ffontset-font
Return a font name pattern for character CH in fontset NAME.
If NAME is t, find a pattern in the default fontset.
If NAME is nil, find a pattern in the fontset of the selected frame.

The value has the form (FAMILY . REGISTRY), where FAMILY is a font
family name and REGISTRY is a font registry name.  This is actually
the first font name pattern for CH in the fontset or in the default
fontset.

If the 2nd optional arg ALL is non-nil, return a list of all font name
patterns.

(fn NAME CH &optional ALL)Ffontset-list
Return a list of all defined fontset names.

(fn)Ffontset-list-all
Return a brief summary of all fontsets for debug use.

(fn)Vfont-encoding-charset-alist
Alist of charsets vs the charsets to determine the preferred font encoding.
Each element looks like (CHARSET . ENCODING-CHARSET),
where ENCODING-CHARSET is a charset registered in the variable
`font-encoding-alist' as ENCODING.

When a text has a property `charset' and the value is CHARSET, a font
whose encoding corresponds to ENCODING-CHARSET is preferred.Vuse-default-ascent
Char table of characters whose ascent values should be ignored.
If an entry for a character is non-nil, the ascent value of the glyph
is assumed to be specified by _MULE_DEFAULT_ASCENT property of a font.

This affects how a composite character which contains
such a character is displayed on screen.Vuse-default-font-for-symbols
If non-nil, use the default face's font for symbols and punctuation.

By default, Emacs will try to use the default face's font for
displaying symbol and punctuation characters, disregarding the
fontsets, if the default font can display the character.
Set this to nil to make Emacs honor the fontsets instead.Vignore-relative-composition
Char table of characters which are not composed relatively.
If an entry for a character is non-nil, a composition sequence
which contains that character is displayed so that
the glyph of that character is put without considering
an ascent and descent value of a previous character.Valternate-fontname-alist
Alist of fontname vs list of the alternate fontnames.
When a specified font name is not found, the corresponding
alternate fontnames (if any) are tried instead.Vfontset-alias-alist
Alist of fontset names vs the aliases.Vvertical-centering-font-regexp
Regexp matching font names that require vertical centering on display.
When a character is displayed with such fonts, the character is displayed
at the vertical center of lines.Votf-script-alist
Alist of OpenType script tags vs the corresponding script names.Sdbusbind.o
Fdbus--init-bus
Establish the connection to D-Bus BUS.

This function is dbus internal.  You almost certainly want to use
`dbus-init-bus'.

BUS can be either the symbol `:system' or the symbol `:session', or it
can be a string denoting the address of the corresponding bus.  For
the system and session buses, this function is called when loading
`dbus.el', there is no need to call it again.

A special case is BUS being the symbol `:system-private' or
`:session-private'.  These symbols still denote the system or session
bus, but using a private connection.  They should not be used outside
dbus.el.

The function returns a number, which counts the connections this Emacs
session has established to the BUS under the same unique name (see
`dbus-get-unique-name').  It depends on the libraries Emacs is linked
with, and on the environment Emacs is running.  For example, if Emacs
is linked with the gtk toolkit, and it runs in a GTK-aware environment
like Gnome, another connection might already be established.

When PRIVATE is non-nil, a new connection is established instead of
reusing an existing one.  It results in a new unique name at the bus.
This can be used, if it is necessary to distinguish from another
connection used in the same Emacs process, like the one established by
GTK+.  It should be used with care for at least the `:system' and
`:session' buses, because other Emacs Lisp packages might already use
this connection to those buses.

(fn BUS &optional PRIVATE)Fdbus-get-unique-name
Return the unique name of Emacs registered at D-Bus BUS.

(fn BUS)Fdbus-message-internal
Send a D-Bus message.
This is an internal function, it shall not be used outside dbus.el.

The following usages are expected:

`dbus-call-method', `dbus-call-method-asynchronously':
  (dbus-message-internal
    dbus-message-type-method-call BUS SERVICE PATH INTERFACE METHOD HANDLER
    &optional :timeout TIMEOUT &rest ARGS)

`dbus-send-signal':
  (dbus-message-internal
    dbus-message-type-signal BUS SERVICE PATH INTERFACE SIGNAL &rest ARGS)

`dbus-method-return-internal':
  (dbus-message-internal
    dbus-message-type-method-return BUS SERVICE SERIAL &rest ARGS)

`dbus-method-error-internal':
  (dbus-message-internal
    dbus-message-type-error BUS SERVICE SERIAL ERROR-NAME &rest ARGS)

`dbus-check-arguments': (does not send a message)
  (dbus-message-internal
    dbus-message-type-invalid BUS SERVICE &rest ARGS)

(fn &rest REST)Vdbus-compiled-version
The version of D-Bus Emacs is compiled against.Vdbus-runtime-version
The version of D-Bus Emacs runs with.Vdbus-message-type-invalid
This value is never a valid message type.Vdbus-message-type-method-call
Message type of a method call message.Vdbus-message-type-method-return
Message type of a method return message.Vdbus-message-type-error
Message type of an error reply message.Vdbus-message-type-signal
Message type of a signal message.Vdbus-registered-objects-table
Hash table of registered functions for D-Bus.

There are two different uses of the hash table: for accessing
registered interfaces properties, targeted by signals, method calls or
monitors, and for calling handlers in case of non-blocking method call
returns.

In the first case, the key in the hash table is the list (TYPE BUS
[INTERFACE MEMBER]).  TYPE is one of the Lisp symbols `:method',
`:signal', `:property' or `:monitor'.  BUS is either a Lisp symbol,
`:system', `:session', `:system-private' or `:session-private', or a
string denoting the bus address.  INTERFACE is a string which denotes
a D-Bus interface, and MEMBER, also a string, is either a method, a
signal or a property INTERFACE is offering.  All arguments can be nil.

The value in the hash table is a list of quadruple lists ((UNAME
SERVICE PATH OBJECT [RULE]) ...).  SERVICE is the service name as
registered, UNAME is the corresponding unique name.  In case of
registered methods, properties and monitors, UNAME is nil.  PATH is
the object path of the sending object.  All of them can be nil, which
means a wildcard then.

OBJECT is either the handler to be called when a D-Bus message, which
matches the key criteria, arrives (TYPE `:method', `:signal' and
`:monitor'), or a list (ACCESS EMITS-SIGNAL VALUE) for TYPE
`:property'.

For entries of type `:signal' or `:monitor', there is also a fifth
element RULE, which keeps the match string the signal or monitor is
registered with.

In the second case, the key in the hash table is the list (:serial BUS
SERIAL).  BUS is either a Lisp symbol, `:system' or `:session', or a
string denoting the bus address.  SERIAL is the serial number of the
non-blocking method call, a reply is expected.  Both arguments must
not be nil.  The value in the hash table is HANDLER, the function to
be called when the D-Bus reply message arrives.Vdbus-debug
If non-nil, debug messages of D-Bus bindings are raised.Scygw32.o
Fcygwin-convert-file-name-to-windows
Convert a Cygwin file name FILE to a Windows-style file name.
If ABSOLUTE-P is non-nil, return an absolute file name.
For the reverse operation, see `cygwin-convert-file-name-from-windows'.

(fn FILE &optional ABSOLUTE-P)Fcygwin-convert-file-name-from-windows
Convert a Windows-style file name FILE to a Cygwin file name.
If ABSOLUTE-P is non-nil, return an absolute file name.
For the reverse operation, see `cygwin-convert-file-name-to-windows'.

(fn FILE &optional ABSOLUTE-P)Snsterm.o
Vns-input-font
The font specified in the last NS event.Vns-input-fontsize
The fontsize specified in the last NS event.Vns-input-line
The line specified in the last NS event.Vns-input-spi-name
The service name specified in the last NS event.Vns-input-spi-arg
The service argument specified in the last NS event.Vns-input-file
The file specified in the last NS event.Vns-working-text
String for visualizing working composition sequence.Vns-alternate-modifier
This variable describes the behavior of the alternate or option key.
Either SYMBOL, describing the behavior for any event,
or (:ordinary SYMBOL :function SYMBOL :mouse SYMBOL), describing behavior
separately for ordinary keys, function keys, and mouse events.

Each SYMBOL is `control', `meta', `alt', `super', `hyper' or `none'.
If `none', the key is ignored by Emacs and retains its standard meaning.Vns-right-alternate-modifier
This variable describes the behavior of the right alternate or option key.
Either SYMBOL, describing the behavior for any event,
or (:ordinary SYMBOL :function SYMBOL :mouse SYMBOL), describing behavior
separately for ordinary keys, function keys, and mouse events.
It can also be `left' to use the value of `ns-alternate-modifier' instead.

Each SYMBOL is `control', `meta', `alt', `super', `hyper' or `none'.
If `none', the key is ignored by Emacs and retains its standard meaning.Vns-command-modifier
This variable describes the behavior of the command key.
Either SYMBOL, describing the behavior for any event,
or (:ordinary SYMBOL :function SYMBOL :mouse SYMBOL), describing behavior
separately for ordinary keys, function keys, and mouse events.

Each SYMBOL is `control', `meta', `alt', `super', `hyper' or `none'.
If `none', the key is ignored by Emacs and retains its standard meaning.Vns-right-command-modifier
This variable describes the behavior of the right command key.
Either SYMBOL, describing the behavior for any event,
or (:ordinary SYMBOL :function SYMBOL :mouse SYMBOL), describing behavior
separately for ordinary keys, function keys, and mouse events.
It can also be `left' to use the value of `ns-command-modifier' instead.

Each SYMBOL is `control', `meta', `alt', `super', `hyper' or `none'.
If `none', the key is ignored by Emacs and retains its standard meaning.Vns-control-modifier
This variable describes the behavior of the control key.
Either SYMBOL, describing the behavior for any event,
or (:ordinary SYMBOL :function SYMBOL :mouse SYMBOL), describing behavior
separately for ordinary keys, function keys, and mouse events.

Each SYMBOL is `control', `meta', `alt', `super', `hyper' or `none'.
If `none', the key is ignored by Emacs and retains its standard meaning.Vns-right-control-modifier
This variable describes the behavior of the right control key.
Either SYMBOL, describing the behavior for any event,
or (:ordinary SYMBOL :function SYMBOL :mouse SYMBOL), describing behavior
separately for ordinary keys, function keys, and mouse events.
It can also be `left' to use the value of `ns-control-modifier' instead.

Each SYMBOL is `control', `meta', `alt', `super', `hyper' or `none'.
If `none', the key is ignored by Emacs and retains its standard meaning.Vns-function-modifier
This variable describes the behavior of the function (fn) key.
Either SYMBOL, describing the behavior for any event,
or (:ordinary SYMBOL :function SYMBOL :mouse SYMBOL), describing behavior
separately for ordinary keys, function keys, and mouse events.

Each SYMBOL is `control', `meta', `alt', `super', `hyper' or `none'.
If `none', the key is ignored by Emacs and retains its standard meaning.Vns-antialias-text
Non-nil (the default) means to render text antialiased.Vns-use-thin-smoothing
Non-nil turns on a font smoothing method that produces thinner strokes.Vns-confirm-quit
Whether to confirm application quit using dialog.Vns-auto-hide-menu-bar
Non-nil means that the menu bar is hidden, but appears when the mouse is near.
Only works on Mac OS X.Vns-use-native-fullscreen
Non-nil means to use native fullscreen on Mac OS X 10.7 and later.
Nil means use fullscreen the old (< 10.7) way.  The old way works better with
multiple monitors, but lacks tool bar.  This variable is ignored on
Mac OS X < 10.7.  Default is t.Vns-use-fullscreen-animation
Non-nil means use animation on non-native fullscreen.
For native fullscreen, this does nothing.
Default is nil.Vns-use-srgb-colorspace
Non-nil means to use sRGB colorspace on Mac OS X 10.7 and later.
Note that this does not apply to images.
This variable is ignored on Mac OS X < 10.7 and GNUstep.Vns-use-mwheel-acceleration
Non-nil means use macOS's standard mouse wheel acceleration.
This variable is ignored on macOS < 10.7 and GNUstep.  Default is t.Vns-mwheel-line-height
The number of pixels touchpad scrolling considers one line.
Nil or a non-number means use the default frame line height.
This variable is ignored on macOS < 10.7 and GNUstep.  Default is nil.Vns-use-mwheel-momentum
Non-nil means mouse wheel scrolling uses momentum.
This variable is ignored on macOS < 10.7 and GNUstep.  Default is t.Vx-toolkit-scroll-bars
SKIP: real doc in xterm.c.Vx-use-underline-position-properties
SKIP: real doc in xterm.c.Vx-underline-at-descent-line
SKIP: real doc in xterm.c.Vns-scroll-event-delta-factor
A factor to apply to pixel deltas reported in scroll events.
 This is only effective for pixel deltas generated from touch pads or
 mice with smooth scrolling capability.Vns-drag-motion-function
Function called when another program drags items over Emacs.

It is called with three arguments FRAME, X, and Y, whenever the user
moves the mouse over an Emacs frame as part of a drag-and-drop
operation.  FRAME is the frame the mouse is on top of, and X and Y are
the frame-relative positions of the mouse in the X and Y axes
respectively.Snsfns.o
Fx-create-frame
SKIP: real doc in xfns.c.

(fn PARMS)Fns-frame-list-z-order
Return list of Emacs's frames, in Z (stacking) order.
If TERMINAL is non-nil and specifies a live frame, return the child
frames of that frame in Z (stacking) order.

Frames are listed from topmost (first) to bottommost (last).

(fn &optional TERMINAL)Fns-frame-restack
Restack FRAME1 below FRAME2.
This means that if both frames are visible and the display areas of
these frames overlap, FRAME2 (partially) obscures FRAME1.  If optional
third argument ABOVE is non-nil, restack FRAME1 above FRAME2.  This
means that if both frames are visible and the display areas of these
frames overlap, FRAME1 (partially) obscures FRAME2.

Some window managers may refuse to restack windows.

(fn FRAME1 FRAME2 &optional ABOVE)Fx-select-font
Read a font using a Nextstep dialog.
Return a font specification describing the selected font.

FRAME is the frame on which to pop up the font chooser.  If omitted or
nil, it defaults to the selected frame.

(fn &optional FRAME IGNORED)Fns-popup-color-panel
Pop up the color panel.

(fn &optional FRAME)Fns-read-file-name
Use a graphical panel to read a file name, using prompt PROMPT.
Optional arg DIR, if non-nil, supplies a default directory.
Optional arg MUSTMATCH, if non-nil, means the returned file or
directory must exist.
Optional arg INIT, if non-nil, provides a default file name to use.
Optional arg DIR-ONLY-P, if non-nil, means choose only directories.

(fn PROMPT &optional DIR MUSTMATCH INIT DIR-ONLY-P)Fns-get-resource
Return the value of the property NAME of OWNER from the defaults database.
If OWNER is nil, Emacs is assumed.

(fn OWNER NAME)Fns-set-resource
Set property NAME of OWNER to VALUE, from the defaults database.
If OWNER is nil, Emacs is assumed.
If VALUE is nil, the default is removed.

(fn OWNER NAME VALUE)Fx-server-max-request-size
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-server-vendor
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-server-version
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-screens
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-mm-height
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-mm-width
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-backing-store
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-visual-class
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-save-under
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-open-connection
SKIP: real doc in xfns.c.

(fn DISPLAY &optional RESOURCE-STRING MUST-SUCCEED)Fx-close-connection
SKIP: real doc in xfns.c.

(fn TERMINAL)Fx-display-list
SKIP: real doc in xfns.c.

(fn)Fns-hide-others
Hides all applications other than Emacs.

(fn)Fns-hide-emacs
If ON is non-nil, the entire Emacs application is hidden.
Otherwise if Emacs is hidden, it is unhidden.
If ON is equal to `activate', Emacs is unhidden and becomes
the active application.
If ON is equal to `activate-front', Emacs is unhidden and
becomes the active application, but only the selected frame
is layered in front of the windows of other applications.

(fn ON)Fns-emacs-info-panel
Shows the `Info' or `About' panel for Emacs.

(fn)Fns-font-name
Determine font PostScript or family name for font NAME.
NAME should be a string containing either the font name or an XLFD
font descriptor.  If string contains `fontset' and not
`fontset-startup', it is left alone.

(fn NAME)Fns-list-colors
Return a list of all available colors.
The optional argument FRAME is currently ignored.

(fn &optional FRAME)Fns-list-services
List available Nextstep services by querying NSApp.

(fn)Fns-perform-service
Perform Nextstep SERVICE on SEND.
SEND should be either a string or nil.
The return value is the result of the service, as string, or nil if
there was no result.

(fn SERVICE SEND)Fns-do-applescript
Execute AppleScript SCRIPT and return the result.
If compilation and execution are successful, the resulting script value
is returned as a string, a number or, in the case of other constructs, t.
In case the execution fails, an error is signaled.

(fn SCRIPT)Fsystem-move-file-to-trash
Move file or directory named FILENAME to the recycle bin.

(fn FILENAME)Fxw-color-defined-p
SKIP: real doc in xfns.c.

(fn COLOR &optional FRAME)Fxw-color-values
SKIP: real doc in xfns.c.

(fn COLOR &optional FRAME)Fxw-display-color-p
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-grayscale-p
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-pixel-width
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-pixel-height
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fns-display-monitor-attributes-list
Return a list of physical monitor attributes on the X display TERMINAL.

The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

In addition to the standard attribute keys listed in
`display-monitor-attributes-list', the following keys are contained in
the attributes:

 source -- String describing the source from which multi-monitor
	   information is obtained, "NS" is always the source."

Internal use only, use `display-monitor-attributes-list' instead.

(fn &optional TERMINAL)Fx-display-planes
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-color-cells
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-show-tip
SKIP: real doc in xfns.c.

(fn STRING &optional FRAME PARMS TIMEOUT DX DY)Fx-hide-tip
SKIP: real doc in xfns.c.

(fn)Fns-frame-geometry
Return geometric attributes of FRAME.
FRAME must be a live frame and defaults to the selected one.  The return
value is an association list of the attributes listed below.  All height
and width values are in pixels.

`outer-position' is a cons of the outer left and top edges of FRAME
  relative to the origin - the position (0, 0) - of FRAME's display.

`outer-size' is a cons of the outer width and height of FRAME.  The
  outer size includes the title bar and the external borders as well as
  any menu and/or tool bar of frame.

`external-border-size' is a cons of the horizontal and vertical width of
  FRAME's external borders as supplied by the window manager.

`title-bar-size' is a cons of the width and height of the title bar of
  FRAME as supplied by the window manager.  If both of them are zero,
  FRAME has no title bar.  If only the width is zero, Emacs was not
  able to retrieve the width information.

`menu-bar-external', if non-nil, means the menu bar is external (never
  included in the inner edges of FRAME).

`menu-bar-size' is a cons of the width and height of the menu bar of
  FRAME.

`tool-bar-external', if non-nil, means the tool bar is external (never
  included in the inner edges of FRAME).

`tool-bar-position' tells on which side the tool bar on FRAME is and can
  be one of `left', `top', `right' or `bottom'.  If this is nil, FRAME
  has no tool bar.

`tool-bar-size' is a cons of the width and height of the tool bar of
  FRAME.

`internal-border-width' is the width of the internal border of
  FRAME.

(fn &optional FRAME)Fns-frame-edges
Return edge coordinates of FRAME.
FRAME must be a live frame and defaults to the selected one.  The return
value is a list of the form (LEFT, TOP, RIGHT, BOTTOM).  All values are
in pixels relative to the origin - the position (0, 0) - of FRAME's
display.

If optional argument TYPE is the symbol `outer-edges', return the outer
edges of FRAME.  The outer edges comprise the decorations of the window
manager (like the title bar or external borders) as well as any external
menu or tool bar of FRAME.  If optional argument TYPE is the symbol
`native-edges' or nil, return the native edges of FRAME.  The native
edges exclude the decorations of the window manager and any external
menu or tool bar of FRAME.  If TYPE is the symbol `inner-edges', return
the inner edges of FRAME.  These edges exclude title bar, any borders,
menu bar or tool bar of FRAME.

(fn &optional FRAME TYPE)Fns-set-mouse-absolute-pixel-position
Move mouse pointer to absolute pixel position (X, Y).
The coordinates X and Y are interpreted in pixels relative to a position
(0, 0) of the selected frame's display.

(fn X Y)Fns-mouse-absolute-pixel-position
Return absolute position of mouse cursor in pixels.
The position is returned as a cons cell (X . Y) of the
coordinates of the mouse cursor position in pixels relative to a
position (0, 0) of the selected frame's terminal.

(fn)Fns-show-character-palette
Show the macOS character palette.

(fn)Vns-icon-type-alist
Alist of elements (REGEXP . IMAGE) for images of icons associated to frames.
If the title of a frame matches REGEXP, then IMAGE.tiff is
selected as the image of the icon representing the frame when it's
miniaturized.  If an element is t, then Emacs tries to select an icon
based on the filetype of the visited file.

The images have to be installed in a folder called English.lproj in the
Emacs folder.  You have to restart Emacs after installing new icons.

Example: Install an icon Gnus.tiff and execute the following code

  (setq ns-icon-type-alist
        (append ns-icon-type-alist
                \='(("^\\*\\(Group\\*$\\|Summary \\|Article\\*$\\)"
                   . "Gnus"))))

When you miniaturize a Group, Summary or Article frame, Gnus.tiff will
be used as the image of the icon representing the frame.Vns-version-string
Toolkit version for NS Windowing.Vns-use-proxy-icon
When non-nil display a proxy icon in the titlebar.
The proxy icon can be used to drag the file associated with the
current buffer to other applications, a printer, the desktop, etc., in
the same way you can from Finder.  Note that you might have to disable
`tool-bar-mode' to see the proxy icon.

The default value is t.Vx-max-tooltip-size
SKIP: real doc in xfns.c.Snsmenu.o
Fns-reset-menu
Cause the NS menu to be re-calculated.

(fn)Fmenu-or-popup-active-p
SKIP: real doc in xmenu.c.

(fn)Snsselect.o
Fns-own-selection-internal
Assert an X selection of type SELECTION and value VALUE.
SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
(Those are literal upper-case symbol names, since that's what X expects.)
VALUE is typically a string, or a cons of two markers, but may be
anything that the functions on `selection-converter-alist' know about.

(fn SELECTION VALUE)Fns-disown-selection-internal
If we own the selection SELECTION, disown it.
Disowning it means there is no such selection.

(fn SELECTION)Fns-selection-exists-p
Whether there is an owner for the given X selection.
SELECTION should be the name of the selection in question, typically
one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.  (X expects
these literal upper-case names.)  The symbol nil is the same as
`PRIMARY', and t is the same as `SECONDARY'.

(fn &optional SELECTION)Fns-selection-owner-p
Whether the current Emacs process owns the given X Selection.
The arg should be the name of the selection in question, typically one of
the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.
(Those are literal upper-case symbol names, since that's what X expects.)
For convenience, the symbol nil is the same as `PRIMARY',
and t is the same as `SECONDARY'.

(fn &optional SELECTION)Fns-get-selection
Return text selected from some X window.
SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
(Those are literal upper-case symbol names, since that's what X expects.)
TARGET-TYPE is the type of data desired, typically `STRING'.

(fn SELECTION-NAME TARGET-TYPE)Fns-begin-drag
Begin a drag-and-drop operation on FRAME.

FRAME must be a window system frame.  PBOARD is an alist of (TYPE
. DATA), where TYPE is one of the following data types that determine
the meaning of DATA:

  - `string' means DATA should be a string describing text that will
    be dragged to another program.

  - `file' means DATA should be a file URL that will be dragged to
    another program.  DATA may also be a list of file names; that
    means each file in the list will be dragged to another program.

ACTION is the action that will be taken by the drop target towards the
data inside PBOARD.

Return the action that the drop target actually chose to perform, or
nil if no action was performed (either because there was no drop
target, or the drop was rejected).  If RETURN-FRAME is the symbol
`now', also return any frame that mouse moves into during the
drag-and-drop operation, whilst simultaneously canceling it.  Any
other non-nil value means to do the same, but to wait for the mouse to
leave FRAME first.

If ALLOW-SAME-FRAME is nil, dropping on FRAME will result in the drop
being ignored.

FOLLOW-TOOLTIP means the same thing it does in `x-begin-drag'.

(fn FRAME PBOARD ACTION &optional RETURN-FRAME ALLOW-SAME-FRAME FOLLOW-TOOLTIP)Vns-sent-selection-hooks
A list of functions to be called when Emacs answers a selection request.
The functions are called with four arguments:
  - the selection name (typically `PRIMARY', `SECONDARY', or `CLIPBOARD');
  - the selection-type which Emacs was asked to convert the
    selection into before sending (for example, `STRING' or `LENGTH');
  - a flag indicating success or failure for responding to the request.
We might have failed (and declined the request) for any number of reasons,
including being asked for a selection that we no longer own, or being asked
to convert into a type that we don't know about or that is inappropriate.
This hook doesn't let you change the behavior of Emacs's selection replies,
it merely informs you that they have happened.Snsimage.o
Snsfont.o
Vns-reg-to-script
Internal map of font registry to Unicode script.Smacfont.o
Snsxwidget.o
Sw32.o
Sw32console.o
Fset-screen-color
Set screen foreground and background colors.

Arguments should be indices between 0 and 15, see w32console.el.

(fn FOREGROUND BACKGROUND)Fget-screen-color
Get color indices of the current screen foreground and background.

The colors are returned as a list of 2 indices (FOREGROUND BACKGROUND).
See w32console.el and `tty-defined-color-alist' for mapping of indices
to colors.

(fn)Fset-cursor-size
Set cursor size.

(fn SIZE)Vw32-use-full-screen-buffer
Non-nil means make terminal frames use the full screen buffer dimensions.
This is desirable when running Emacs over telnet.
A value of nil means use the current console window dimensions; this
may be preferable when working directly at the console with a large
scroll-back buffer.Sw32cygwinx.o
Fw32-battery-status
Get power status information from Windows system.

The following %-sequences are provided:
%L AC line status (verbose)
%B Battery status (verbose)
%b Battery status, empty means high, `-' means low,
   `!' means critical, and `+' means charging
%p Battery load percentage
%s Remaining time (to charge or discharge) in seconds
%m Remaining time (to charge or discharge) in minutes
%h Remaining time (to charge or discharge) in hours
%t Remaining time (to charge or discharge) in the form `h:min'

(fn)Sw32fns.o
Fw32-define-rgb-color
Convert RGB numbers to a Windows color reference and associate with NAME.
This adds or updates a named color to `w32-color-map', making it
available for use.  The original entry's RGB ref is returned, or nil
if the entry is new.

(fn RED GREEN BLUE NAME)Fx-create-frame
SKIP: real doc in xfns.c.

(fn PARAMETERS)Fxw-color-defined-p
SKIP: real doc in xfns.c.

(fn COLOR &optional FRAME)Fxw-color-values
SKIP: real doc in xfns.c.

(fn COLOR &optional FRAME)Fxw-display-color-p
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-display-grayscale-p
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-display-pixel-width
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-display-pixel-height
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-display-planes
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-display-color-cells
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-server-max-request-size
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-server-vendor
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-server-version
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-screens
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-display-mm-height
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-display-mm-width
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-display-backing-store
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-display-visual-class
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fx-display-save-under
SKIP: real doc in xfns.c.

(fn &optional DISPLAY)Fw32-display-monitor-attributes-list
Return a list of physical monitor attributes on the W32 display DISPLAY.

The optional argument DISPLAY specifies which display to ask about.
DISPLAY should be either a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

Internal use only, use `display-monitor-attributes-list' instead.

(fn &optional DISPLAY)Fset-message-beep
Set the sound generated when the bell is rung.
SOUND is `asterisk', `exclamation', `hand', `question', `ok', or `silent'
to use the corresponding system sound for the bell.  The `silent' sound
prevents Emacs from making any sound at all.
SOUND is nil to use the normal beep.

(fn SOUND)Fx-open-connection
SKIP: real doc in xfns.c.

(fn DISPLAY &optional XRM-STRING MUST-SUCCEED)Fx-close-connection
SKIP: real doc in xfns.c.

(fn DISPLAY)Fx-display-list
SKIP: real doc in xfns.c.

(fn)Fx-synchronize
SKIP: real doc in xfns.c.

(fn ON &optional DISPLAY)Fx-change-window-property
SKIP: real doc in xfns.c.

(fn PROP VALUE &optional FRAME TYPE FORMAT OUTER-P)Fx-delete-window-property
SKIP: real doc in xfns.c.

(fn PROP &optional FRAME)Fx-window-property
SKIP: real doc in xfns.c.

(fn PROP &optional FRAME TYPE SOURCE DELETE-P VECTOR-RET-P)Fx-show-tip
SKIP: real doc in xfns.c.

(fn STRING &optional FRAME PARMS TIMEOUT DX DY)Fx-hide-tip
SKIP: real doc in xfns.c.

(fn)Fx-file-dialog
SKIP: real doc in xfns.c.

(fn PROMPT DIR &optional DEFAULT-FILENAME MUSTMATCH ONLY-DIR-P)Fsystem-move-file-to-trash
Move file or directory named FILENAME to the recycle bin.

(fn FILENAME)Fw32-send-sys-command
Send frame a Windows WM_SYSCOMMAND message of type COMMAND.
Some useful values for COMMAND are #xf030 to maximize frame (#xf020
to minimize), #xf120 to restore frame to original size, and #xf100
to activate the menubar for keyboard access.  #xf140 activates the
screen saver if defined.

If optional parameter FRAME is not specified, use selected frame.

(fn COMMAND &optional FRAME)Fw32-shell-execute
Get Windows to perform OPERATION on DOCUMENT.
This is a wrapper around the ShellExecute system function, which
invokes the application registered to handle OPERATION for DOCUMENT.

OPERATION is either nil or a string that names a supported operation.
What operations can be used depends on the particular DOCUMENT and its
handler application, but typically it is one of the following common
operations:

 "open"    - open DOCUMENT, which could be a file, a directory, or an
	       executable program (application).  If it is an application,
	       that application is launched in the current buffer's default
	       directory.  Otherwise, the application associated with
	       DOCUMENT is launched in the buffer's default directory.
 "opennew" - like "open", but instruct the application to open
	       DOCUMENT in a new window.
 "openas"  - open the "Open With" dialog for DOCUMENT.
 "print"   - print DOCUMENT, which must be a file.
 "printto" - print DOCUMENT, which must be a file, to a specified printer.
	       The printer should be provided in PARAMETERS, see below.
 "explore" - start the Windows Explorer on DOCUMENT.
 "edit"    - launch an editor and open DOCUMENT for editing; which
	       editor is launched depends on the association for the
	       specified DOCUMENT.
 "find"    - initiate search starting from DOCUMENT, which must specify
	       a directory.
 "delete"  - move DOCUMENT, a file or a directory, to Recycle Bin.
 "copy"    - copy DOCUMENT, which must be a file or a directory, into
	       the clipboard.
 "cut"     - move DOCUMENT, a file or a directory, into the clipboard.
 "paste"   - paste the file whose name is in the clipboard into DOCUMENT,
	       which must be a directory.
 "pastelink"
	   - create a shortcut in DOCUMENT (which must be a directory)
	       the file or directory whose name is in the clipboard.
 "runas"   - run DOCUMENT, which must be an executable file, with
	       elevated privileges (a.k.a. "as Administrator").
 "properties"
	   - open the property sheet dialog for DOCUMENT.
 nil       - invoke the default OPERATION, or "open" if default is
	       not defined or unavailable.

DOCUMENT is typically the name of a document file or a URL, but can
also be an executable program to run, or a directory to open in the
Windows Explorer.  If it is a file or a directory, it must be a local
one; this function does not support remote file names.

If DOCUMENT is an executable program, the optional third arg PARAMETERS
can be a string containing command line parameters, separated by blanks,
that will be passed to the program.  Some values of OPERATION also require
parameters (e.g., "printto" requires the printer address).  Otherwise,
PARAMETERS should be nil or unspecified.  Note that double quote characters
in PARAMETERS must each be enclosed in 2 additional quotes, as in """.

Optional fourth argument SHOW-FLAG can be used to control how the
application will be displayed when it is invoked.  If SHOW-FLAG is nil
or unspecified, the application is displayed as if SHOW-FLAG of 10 was
specified, otherwise it is an integer between 0 and 11 representing
a ShowWindow flag:

  0 - start hidden
  1 - start as normal-size window
  3 - start in a maximized window
  6 - start in a minimized window
 10 - start as the application itself specifies; this is the default.

(fn OPERATION DOCUMENT &optional PARAMETERS SHOW-FLAG)Fw32-register-hot-key
Register KEY as a hot-key combination.
Certain key combinations like Alt-Tab and Win-R are reserved for
system use on Windows, and therefore are normally intercepted by the
system.  These key combinations can be used in Emacs by registering
them as hot-keys, except for Win-L which always locks the computer.

On Windows 98 and ME, KEY must be a one element key definition in
vector form that would be acceptable to `define-key' (e.g. [A-tab] for
Alt-Tab).  The meta modifier is interpreted as Alt if
`w32-alt-is-meta' is t, and hyper is always interpreted as the Windows
modifier keys.  The return value is the hotkey-id if registered,
otherwise nil.

On Windows versions since NT, KEY can also be specified as just a
modifier key, [M-], [s-] or [H-], to indicate that all combinations
of the respective modifier key should be processed by Emacs instead
of the operating system.  The super and hyper modifiers are
interpreted according to the current values of `w32-lwindow-modifier'
and `w32-rwindow-modifier'.  For instance, setting `w32-lwindow-modifier'
to `super' and then calling `(w32-register-hot-key [s-])' grabs all
combinations of the left Windows key to Emacs as keys with the Super
modifier, but leaves the right Windows key free for the operating
system keyboard shortcuts.

The return value is t if the call affected any key combinations,
otherwise nil.

(fn KEY)Fw32-unregister-hot-key
Unregister KEY as a hot-key combination.

(fn KEY)Fw32-registered-hot-keys
Return list of registered hot-key IDs.

(fn)Fw32-reconstruct-hot-key
Convert hot-key ID to a lisp key combination.

(fn ID)Fw32-toggle-lock-key
Toggle the state of the lock key KEY.
KEY can be `capslock', `kp-numlock', or `scroll'.
If the optional parameter NEW-STATE is a number, then the state of KEY
is set to off if the low bit of NEW-STATE is zero, otherwise on.
If NEW-STATE is omitted or nil, the function toggles the state,

Value is the new state of the key, or nil if the function failed
to change the state.

(fn KEY &optional NEW-STATE)Fw32-window-exists-p
Return non-nil if a window exists with the specified CLASS and NAME.

This is a direct interface to the Windows API FindWindow function.

(fn CLASS NAME)Fw32-frame-geometry
Return geometric attributes of FRAME.
FRAME must be a live frame and defaults to the selected one.  The return
value is an association list of the attributes listed below.  All height
and width values are in pixels.

`outer-position' is a cons of the outer left and top edges of FRAME
  relative to the origin - the position (0, 0) - of FRAME's display.

`outer-size' is a cons of the outer width and height of FRAME.  The
  outer size includes the title bar and the external borders as well as
  any menu and/or tool bar of frame.

`external-border-size' is a cons of the horizontal and vertical width of
  FRAME's external borders as supplied by the window manager.

`title-bar-size' is a cons of the width and height of the title bar of
  FRAME as supplied by the window manager.  If both of them are zero,
  FRAME has no title bar.  If only the width is zero, Emacs was not
  able to retrieve the width information.

`menu-bar-external', if non-nil, means the menu bar is external (never
  included in the inner edges of FRAME).

`menu-bar-size' is a cons of the width and height of the menu bar of
  FRAME.

`tab-bar-size' is a cons of the width and height of the tab bar of
  FRAME.

`tool-bar-external', if non-nil, means the tool bar is external (never
  included in the inner edges of FRAME).

`tool-bar-position' tells on which side the tool bar on FRAME is and can
  be one of `left', `top', `right' or `bottom'.  If this is nil, FRAME
  has no tool bar.

`tool-bar-size' is a cons of the width and height of the tool bar of
  FRAME.

`internal-border-width' is the width of the internal border of
  FRAME.

(fn &optional FRAME)Fw32-frame-edges
Return edge coordinates of FRAME.
FRAME must be a live frame and defaults to the selected one.  The return
value is a list of the form (LEFT, TOP, RIGHT, BOTTOM).  All values are
in pixels relative to the origin - the position (0, 0) - of FRAME's
display.

If optional argument TYPE is the symbol `outer-edges', return the outer
edges of FRAME.  The outer edges comprise the decorations of the window
manager (like the title bar or external borders) as well as any external
menu or tool bar of FRAME.  If optional argument TYPE is the symbol
`native-edges' or nil, return the native edges of FRAME.  The native
edges exclude the decorations of the window manager and any external
menu or tool bar of FRAME.  If TYPE is the symbol `inner-edges', return
the inner edges of FRAME.  These edges exclude title bar, any borders,
menu bar or tool bar of FRAME.

(fn &optional FRAME TYPE)Fw32-frame-list-z-order
Return list of Emacs's frames, in Z (stacking) order.
The optional argument DISPLAY specifies which display to ask about.
DISPLAY should be either a frame or a display name (a string).  If
omitted or nil, that stands for the selected frame's display.

As a special case, if DISPLAY is non-nil and specifies a live frame,
return the child frames of that frame in Z (stacking) order.

Frames are listed from topmost (first) to bottommost (last).

(fn &optional DISPLAY)Fw32-frame-restack
Restack FRAME1 below FRAME2.
This means that if both frames are visible and the display areas of
these frames overlap, FRAME2 (partially) obscures FRAME1.  If optional
third argument ABOVE is non-nil, restack FRAME1 above FRAME2.  This
means that if both frames are visible and the display areas of these
frames overlap, FRAME1 (partially) obscures FRAME2.

This may be thought of as an atomic action performed in two steps: The
first step removes FRAME1's window-system window from the display.  The
second step reinserts FRAME1's window below (above if ABOVE is true)
that of FRAME2.  Hence the position of FRAME2 in its display's Z
(stacking) order relative to all other frames excluding FRAME1 remains
unaltered.

Some window managers may refuse to restack windows.

(fn FRAME1 FRAME2 &optional ABOVE)Fw32-mouse-absolute-pixel-position
Return absolute position of mouse cursor in pixels.
The position is returned as a cons cell (X . Y) of the coordinates of
the mouse cursor position in pixels relative to a position (0, 0) of the
selected frame's display.

(fn)Fw32-set-mouse-absolute-pixel-position
Move mouse pointer to absolute pixel position (X, Y).
The coordinates X and Y are interpreted in pixels relative to a position
(0, 0) of the selected frame's display.

(fn X Y)Ffile-system-info
SKIP: Real doc in fileio.c.

(fn FILENAME)Fdefault-printer-name
Return the name of Windows default printer device.

(fn)Fw32--menu-bar-in-use
Return non-nil when a menu-bar menu is being used.
Internal use only.

(fn)Fw32-notification-notify
Display an MS-Windows tray notification as specified by PARAMS.

Value is the integer unique ID of the notification that can be used
to remove the notification using `w32-notification-close', which see.
If the function fails, the return value is nil.

Tray notifications, a.k.a. "taskbar messages", are messages that
inform the user about events unrelated to the current user activity,
such as a significant system event, by briefly displaying informative
text in a balloon from an icon in the notification area of the taskbar.

Parameters in PARAMS are specified as keyword/value pairs.  All the
parameters are optional, but if no parameters are specified, the
function will do nothing and return nil.

The following parameters are supported:

:icon ICON       -- Display ICON in the system tray.  If ICON is a string,
                    it should specify a file name from which to load the
                    icon; the specified file should be a .ico Windows icon
                    file.  If ICON is not a string, or if this parameter
                    is not specified, the standard Emacs icon will be used.

:tip TIP         -- Use TIP as the tooltip for the notification.  If TIP
                    is a string, this is the text of a tooltip that will
                    be shown when the mouse pointer hovers over the tray
                    icon added by the notification.  If TIP is not a
                    string, or if this parameter is not specified, the
                    default tooltip text is "Emacs notification".  The
                    tooltip text can be up to 127 characters long (63
                    on Windows versions before W2K).  Longer strings
                    will be truncated.

:level LEVEL     -- Notification severity level, one of `info',
                    `warning', or `error'.  If given, the value
                    determines the icon displayed to the left of the
                    notification title, but only if the `:title'
                    parameter (see below) is also specified and is a
                    string.

:title TITLE     -- The title of the notification.  If TITLE is a string,
                    it is displayed in a larger font immediately above
                    the body text.  The title text can be up to 63
                    characters long; longer text will be truncated.

:body BODY       -- The body of the notification.  If BODY is a string,
                    it specifies the text of the notification message.
                    Use embedded newlines to control how the text is
                    broken into lines.  The body text can be up to 255
                    characters long, and will be truncated if it's longer.

Note that versions of Windows before W2K support only `:icon' and `:tip'.
You can pass the other parameters, but they will be ignored on
those old systems.

There can be at most one active notification at any given time.  An
active notification must be removed by calling `w32-notification-close'
before a new one can be shown.

(fn &rest PARAMS)Fw32-notification-close
Remove the MS-Windows tray notification specified by its ID.

(fn ID)Fw32-get-ime-open-status
Return non-nil if IME is active, otherwise return nil.

IME, the MS-Windows Input Method Editor, can be active or inactive.
This function returns non-nil if the IME is active, otherwise nil.

(fn)Fw32-set-ime-open-status
Open or close the IME according to STATUS.

This function activates the IME, the MS-Windows Input Method Editor,
if STATUS is non-nil, otherwise it deactivates the IME.

(fn STATUS)Fw32-read-registry
Return the value stored in MS-Windows Registry under ROOT/KEY/NAME.

ROOT is a symbol, one of `HKCR', `HKCU', `HKLM', `HKU', or `HKCC'.
It can also be nil, which means try `HKCU', and if that fails, try `HKLM'.

KEY and NAME must be strings, and NAME must not include slashes.
KEY can use either forward- or back-slashes.
To access the default value of KEY (if it is defined), use NAME
that is an empty string.

If the named KEY or its subkey called NAME don't exist, or cannot be
accessed by the current user, the function returns nil.  Otherwise,
the return value depends on the type of the data stored in Registry:

  If the data type is REG_NONE, the function returns t.
  If the data type is REG_DWORD or REG_QWORD, the function returns
    its integer value.  If the value is too large for a fixnum,
    the function returns a bignum.
  If the data type is REG_BINARY, the function returns a vector whose
    elements are individual bytes of the value.
  If the data type is REG_SZ, the function returns a string.
  If the data type is REG_EXPAND_SZ, the function returns a string
    with all the %..% references to environment variables replaced
    by the values of those variables.  If the expansion fails, or
    some variables are not defined in the environment, some or all
    of the environment variables will remain unexpanded.
  If the data type is REG_MULTI_SZ, the function returns a list whose
    elements are the individual strings.

Note that this function doesn't know whether a string value is a file
name, so file names will be returned with backslashes, which may need
to be converted to forward slashes by the caller.

(fn ROOT KEY NAME)Fw32-set-wallpaper
Set the desktop wallpaper image to IMAGE-FILE.

(fn IMAGE-FILE)Vw32-color-map
An array of color name mappings for Windows.Vw32-pass-alt-to-system
Non-nil if Alt key presses are passed on to Windows.
When non-nil, for example, Alt pressed and released and then space will
open the System menu.  When nil, Emacs processes the Alt key events, and
then silently swallows them.Vw32-alt-is-meta
Non-nil if the Alt key is to be considered the same as the META key.
When nil, Emacs will translate the Alt key to the ALT modifier, not to META.Vw32-quit-key
If non-zero, the virtual key code for an alternative quit key.Vw32-pass-lwindow-to-system
If non-nil, the left "Windows" key is passed on to Windows.

When non-nil, the Start menu is opened by tapping the key.
If you set this to nil, the left "Windows" key is processed by Emacs
according to the value of `w32-lwindow-modifier', which see.

Note that some combinations of the left "Windows" key with other
keys are caught by Windows at low level.  For example, <lwindow>-r
pops up the Windows Run dialog, <lwindow>-<Pause> pops up the "System
Properties" dialog, etc.  On Windows 10, no "Windows" key
combinations are normally handed to applications.  To enable Emacs to
process "Windows" key combinations, use the function
`w32-register-hot-key'.

For Windows 98/ME, see the doc string of `w32-phantom-key-code'.Vw32-pass-rwindow-to-system
If non-nil, the right "Windows" key is passed on to Windows.

When non-nil, the Start menu is opened by tapping the key.
If you set this to nil, the right "Windows" key is processed by Emacs
according to the value of `w32-rwindow-modifier', which see.

Note that some combinations of the right "Windows" key with other
keys are caught by Windows at low level.  For example, <rwindow>-r
pops up the Windows Run dialog, <rwindow>-<Pause> pops up the "System
Properties" dialog, etc.  On Windows 10, no "Windows" key
combinations are normally handed to applications.  To enable Emacs to
process "Windows" key combinations, use the function
`w32-register-hot-key'.

For Windows 98/ME, see the doc string of `w32-phantom-key-code'.Vw32-phantom-key-code
Virtual key code used to generate "phantom" key presses.
Value is a number between 0 and 255.

Phantom key presses are generated in order to stop the system from
acting on "Windows" key events when `w32-pass-lwindow-to-system' or
`w32-pass-rwindow-to-system' is nil.

This variable is only used on Windows 98 and ME.  For other Windows
versions, see the documentation of the `w32-register-hot-key'
function.Vw32-enable-num-lock
If non-nil, the Num Lock key acts normally.
Set to nil to handle Num Lock as the `kp-numlock' key.Vw32-enable-caps-lock
If non-nil, the Caps Lock key acts normally.
Set to nil to handle Caps Lock as the `capslock' key.Vw32-scroll-lock-modifier
Modifier to use for the Scroll Lock ON state.
The value can be hyper, super, meta, alt, control or shift for the
respective modifier, or nil to handle Scroll Lock as the `scroll' key.
Any other value will cause the Scroll Lock key to be ignored by Emacs,
and it will have the same effect as in other applications.Vw32-lwindow-modifier
Modifier to use for the left "Windows" key.
The value can be hyper, super, meta, alt, control or shift for the
respective modifier, or nil to appear as the `lwindow' key.
Any other value will cause the key to be ignored.

Also see the documentation of the `w32-register-hot-key' function.Vw32-rwindow-modifier
Modifier to use for the right "Windows" key.
The value can be hyper, super, meta, alt, control or shift for the
respective modifier, or nil to appear as the `rwindow' key.
Any other value will cause the key to be ignored.

Also see the documentation of the `w32-register-hot-key' function.Vw32-apps-modifier
Modifier to use for the "Apps" key.
The value can be hyper, super, meta, alt, control or shift for the
respective modifier, or nil to appear as the `apps' key.
Any other value will cause the key to be ignored.Vw32-enable-synthesized-fonts
Non-nil enables selection of artificially italicized and bold fonts.Vw32-enable-palette
Non-nil enables Windows palette management to map colors exactly.Vw32-mouse-button-tolerance
Analogue of double click interval for faking middle mouse events.
The value is the minimum time in milliseconds that must elapse between
left and right button down events before they are considered distinct events.
If both mouse buttons are depressed within this interval, a middle mouse
button down event is generated instead.Vw32-mouse-move-interval
Minimum interval between mouse move events.
The value is the minimum time in milliseconds that must elapse between
successive mouse move (or scroll bar drag) events before they are
reported as lisp events.Vw32-pass-extra-mouse-buttons-to-system
If non-nil, the fourth and fifth mouse buttons are passed to Windows.
Recent versions of Windows support mice with up to five buttons.
Since most applications don't support these extra buttons, most mouse
drivers will allow you to map them to functions at the system level.
If this variable is non-nil, Emacs will pass them on, allowing the
system to handle them.Vw32-pass-multimedia-buttons-to-system
If non-nil, media buttons are passed to Windows.
Some modern keyboards contain buttons for controlling media players, web
browsers and other applications.  Generally these buttons are handled on a
system wide basis, but by setting this to nil they are made available
to Emacs for binding.  Depending on your keyboard, additional keys that
may be available are:

browser-back, browser-forward, browser-refresh, browser-stop,
browser-search, browser-favorites, browser-home,
mail, mail-reply, mail-forward, mail-send,
app-1, app-2,
help, find, new, open, close, save, print, undo, redo, copy, cut, paste,
spell-check, correction-list, toggle-dictate-command,
media-next, media-previous, media-stop, media-play-pause, media-select,
media-play, media-pause, media-record, media-fast-forward, media-rewind,
media-channel-up, media-channel-down,
volume-mute, volume-up, volume-down,
mic-volume-mute, mic-volume-down, mic-volume-up, mic-toggle,
bass-down, bass-boost, bass-up, treble-down, treble-upVx-pointer-shape
SKIP: real doc in xfns.c.Vx-hourglass-pointer-shape
SKIP: real doc in xfns.c.Vx-sensitive-text-pointer-shape
SKIP: real doc in xfns.c.Vx-window-horizontal-drag-cursor
SKIP: real doc in xfns.c.Vx-window-vertical-drag-cursor
SKIP: real doc in xfns.c.Vx-cursor-fore-pixel
SKIP: real doc in xfns.c.Vx-max-tooltip-size
SKIP: real doc in xfns.c.Vx-no-window-manager
SKIP: real doc in xfns.c.Vx-pixel-size-width-font-regexp
SKIP: real doc in xfns.c.Vw32-strict-painting
Non-nil means use strict rules for repainting frames.
Set this to nil to get the old behavior for repainting; this should
only be necessary if the default setting causes problems.Vw32-use-fallback-wm-chars-method
Non-nil means use old method of processing character keys.
This is intended only for debugging of the new processing method.
Default is nil.

This variable has effect only on NT family of systems, not on Windows 9X.Vw32-disable-new-uniscribe-apis
Non-nil means don't use new Uniscribe APIs.
The new APIs are used to access OTF features supported by fonts.
This is intended only for debugging of the new Uniscribe-related code.
Default is nil.

This variable has effect only on Windows Vista and later.Vw32-tooltip-extra-pixels
Number of pixels added after tooltip text.
On Windows some fonts may cause the last character of a tooltip be
truncated or wrapped around to the next line.  Adding some extra space
at the end of the toooltip works around this problem.

This variable specifies the number of pixels that shall be added.  The
default value t means to add the width of one canonical character of the
tip frame.Vw32-disable-abort-dialog
Non-nil means don't display the abort dialog when aborting.Vw32-ignore-modifiers-on-IME-input
Whether to ignore modifier keys when processing input with IME.
Some MS-Windows input methods use modifier keys such as Ctrl or Alt to input
characters, in which case applying the modifiers will change the input.
The default value of this variable is therefore t, to ignore modifier
keys when IME input is received.Vw32-ansi-code-page
The ANSI code page used by the system.Vw32-multibyte-code-page
The current multibyte code page used by the system.
A value of zero indicates that the single-byte code page is in use,
see `w32-ansi-code-page'.Vw32-disable-double-buffering
Completely disable double buffering.
This variable is used for debugging, and takes precedence over any
value of the `inhibit-double-buffering' frame parameter.Vw32-follow-system-dark-mode
Whether to follow the system's Dark mode on MS-Windows.
If this is nil, Emacs on MS-Windows will not follow the system's Dark
mode as far as the appearance of title bars and scroll bars is
concerned, it will always use the default Light mode instead.
Changing the value takes effect only for frames created after the change.Sw32heap.o
Sw32inevt.o
Sw32notify.o
Fw32notify-add-watch
Add a watch for filesystem events pertaining to FILE.

This arranges for filesystem events pertaining to FILE to be reported
to Emacs.  Use `w32notify-rm-watch' to cancel the watch.

Value is a descriptor for the added watch.  If the file cannot be
watched for some reason, this function signals a `file-error' error.

FILTER is a list of conditions for reporting an event.  It can include
the following symbols:

  `file-name'          -- report file creation, deletion, or renaming
  `directory-name'     -- report directory creation, deletion, or renaming
  `attributes'         -- report changes in attributes
  `size'               -- report changes in file-size
  `last-write-time'    -- report changes in last-write time
  `last-access-time'   -- report changes in last-access time
  `creation-time'      -- report changes in creation time
  `security-desc'      -- report changes in security descriptor

If FILE is a directory, and FILTER includes `subtree', then all the
subdirectories will also be watched and changes in them reported.

When any event happens that satisfies the conditions specified by
FILTER, Emacs will call the CALLBACK function passing it a single
argument EVENT, which is of the form

  (DESCRIPTOR ACTION FILE)

DESCRIPTOR is the same object as the one returned by this function.
ACTION is the description of the event.  It could be any one of the
following:

  `added'        -- FILE was added
  `removed'      -- FILE was deleted
  `modified'     -- FILE's contents or its attributes were modified
  `renamed-from' -- a file was renamed whose old name was FILE
  `renamed-to'   -- a file was renamed and its new name is FILE

FILE is the name of the file whose event is being reported.

Note that some networked filesystems, such as Samba-mounted Unix
volumes, might not send notifications about file changes.  In these
cases, this function will return a valid descriptor, but notifications
will never come in.  Volumes shared from remote Windows machines do
generate notifications correctly, though.

(fn FILE FILTER CALLBACK)Fw32notify-rm-watch
Remove an existing watch specified by its WATCH-DESCRIPTOR.

WATCH-DESCRIPTOR should be an object returned by `w32notify-add-watch'.

(fn WATCH-DESCRIPTOR)Fw32notify-valid-p
Check a watch specified by its WATCH-DESCRIPTOR for validity.

WATCH-DESCRIPTOR should be an object returned by `w32notify-add-watch'.

A watch can become invalid if the directory it watches is deleted, or if
the watcher thread exits abnormally for any other reason.  Removing the
watch by calling `w32notify-rm-watch' also makes it invalid.

(fn WATCH-DESCRIPTOR)Sw32menu.o
Fmenu-or-popup-active-p
SKIP: real doc in xmenu.c.

(fn)Sw32proc.o
Fw32-has-winsock
Test for presence of the Windows socket library `winsock'.
Returns non-nil if winsock support is present, nil otherwise.

If the optional argument LOAD-NOW is non-nil, the winsock library is
also loaded immediately if not already loaded.  If winsock is loaded,
the winsock local hostname is returned (since this may be different from
the value of `system-name' and should supplant it), otherwise t is
returned to indicate winsock support is present.

(fn &optional LOAD-NOW)Fw32-unload-winsock
Unload the Windows socket library `winsock' if loaded.
This is provided to allow dial-up socket connections to be disconnected
when no longer needed.  Returns nil without unloading winsock if any
socket connections still exist.

(fn)Fw32-short-file-name
Return the short file name version (8.3) of the full path of FILENAME.
If FILENAME does not exist, return nil.
All path elements in FILENAME are converted to their short names.

(fn FILENAME)Fw32-long-file-name
Return the long file name version of the full path of FILENAME.
If FILENAME does not exist, return nil.
All path elements in FILENAME are converted to their long names.

(fn FILENAME)Fw32-set-process-priority
Set the priority of PROCESS to PRIORITY.
If PROCESS is nil, the priority of Emacs is changed, otherwise the
priority of the process whose pid is PROCESS is changed.
PRIORITY should be one of the symbols high, normal, or low;
any other symbol will be interpreted as normal.

If successful, the return value is t, otherwise nil.

(fn PROCESS PRIORITY)Fw32-application-type
Return the type of an MS-Windows PROGRAM.

Knowing the type of an executable could be useful for formatting
file names passed to it or for quoting its command-line arguments.

PROGRAM should specify an executable file, including the extension.

The value is one of the following:

`dos'        -- a DOS .com program or some other non-PE executable
`cygwin'     -- a Cygwin program that depends on Cygwin DLL
`msys'       -- an MSYS 1.x or MSYS2 program
`w32-native' -- a native Windows application
`unknown'    -- a file that doesn't exist, or cannot be open, or whose
                name is not encodable in the current ANSI codepage.

Note that for .bat and .cmd batch files the function returns the type
of their command interpreter, as specified by the "COMSPEC"
environment variable.

This function returns `unknown' for programs whose file names
include characters not supported by the current ANSI codepage, as
such programs cannot be invoked by Emacs anyway.

(fn PROGRAM)Fw32-get-locale-info
Return information about the Windows locale LCID.
By default, return a three letter locale code which encodes the default
language as the first two characters, and the country or regional variant
as the third letter.  For example, ENU refers to `English (United States)',
while ENC means `English (Canadian)'.

If the optional argument LONGFORM is t, the long form of the locale
name is returned, e.g. `English (United States)' instead; if LONGFORM
is a number, it is interpreted as an LCTYPE constant and the corresponding
locale information is returned.

If LCID (a 16-bit number) is not a valid locale, the result is nil.

(fn LCID &optional LONGFORM)Fw32-get-current-locale-id
Return Windows locale id for current locale setting.
This is a numerical value; use `w32-get-locale-info' to convert to a
human-readable form.

(fn)Fw32-get-valid-locale-ids
Return list of all valid Windows locale ids.
Each id is a numerical value; use `w32-get-locale-info' to convert to a
human-readable form.

(fn)Fw32-get-default-locale-id
Return Windows locale id for default locale setting.
By default, the system default locale setting is returned; if the optional
parameter USERP is non-nil, the user default locale setting is returned.
This is a numerical value; use `w32-get-locale-info' to convert to a
human-readable form.

(fn &optional USERP)Fw32-set-current-locale
Make Windows locale LCID be the current locale setting for Emacs.
If successful, the new locale id is returned, otherwise nil.

(fn LCID)Fw32-get-valid-codepages
Return list of all valid Windows codepages.

(fn)Fw32-get-console-codepage
Return current Windows codepage for console input.

(fn)Fw32-set-console-codepage
Make Windows codepage CP be the codepage for Emacs tty keyboard input.
This codepage setting affects keyboard input in tty mode.
If successful, the new CP is returned, otherwise nil.

(fn CP)Fw32-get-console-output-codepage
Return current Windows codepage for console output.

(fn)Fw32-set-console-output-codepage
Make Windows codepage CP be the codepage for Emacs console output.
This codepage setting affects display in tty mode.
If successful, the new CP is returned, otherwise nil.

(fn CP)Fw32-get-codepage-charset
Return charset ID corresponding to codepage CP.
Returns nil if the codepage is not valid or its charset ID could
not be determined.

Note that this function is only guaranteed to work with ANSI
codepages; most console codepages are not supported and will
yield nil.

(fn CP)Fw32-get-valid-keyboard-layouts
Return list of Windows keyboard languages and layouts.
The return value is a list of pairs of language id and layout id.

(fn)Fw32-get-keyboard-layout
Return current Windows keyboard language and layout.
The return value is the cons of the language id and the layout id.

(fn)Fw32-set-keyboard-layout
Make LAYOUT be the current keyboard layout for Emacs.
The keyboard layout setting affects interpretation of keyboard input.
If successful, the new layout id is returned, otherwise nil.

(fn LAYOUT)Vw32-quote-process-args
Non-nil enables quoting of process arguments to ensure correct parsing.
Because Windows does not directly pass argv arrays to child processes,
programs have to reconstruct the argv array by parsing the command
line string.  For an argument to contain a space, it must be enclosed
in double quotes or it will be parsed as multiple arguments.

If the value is a character, that character will be used to escape any
quote characters that appear, otherwise a suitable escape character
will be chosen based on the type of the program.Vw32-start-process-show-window
When nil, new child processes hide their windows.
When non-nil, they show their window in the method of their choice.
This variable doesn't affect GUI applications, which will never be hidden.Vw32-start-process-share-console
When nil, new child processes are given a new console.
When non-nil, they share the Emacs console; this has the limitation of
allowing only one DOS subprocess to run at a time (whether started directly
or indirectly by Emacs), and preventing Emacs from cleanly terminating the
subprocess group, but may allow Emacs to interrupt a subprocess that doesn't
otherwise respond to interrupts from Emacs.Vw32-start-process-inherit-error-mode
When nil, new child processes revert to the default error mode.
When non-nil, they inherit their error mode setting from Emacs, which stops
them blocking when trying to access unmounted drives etc.Vw32-pipe-read-delay
Forced delay before reading subprocess output.
This may need to be done to improve the buffering of subprocess output,
by avoiding the inefficiency of frequently reading small amounts of data.
Typically needed only with DOS programs on Windows 9X; set to 50 if
throughput with such programs is slow.

If positive, the value is the number of milliseconds to sleep before
signaling that output from a subprocess is ready to be read.
If negative, the value is the number of time slices to wait (effectively
boosting the priority of the child process temporarily).
A value of zero disables waiting entirely.Vw32-pipe-buffer-size
Size of buffer for pipes created to communicate with subprocesses.
The size is in bytes, and must be non-negative.  The default is zero,
which lets the OS use its default size, usually 4KB (4096 bytes).
Any negative value means to use the default value of zero.Vw32-downcase-file-names
Non-nil means convert all-upper case file names to lower case.
This applies when performing completions and file name expansion.
Note that the value of this setting also affects remote file names,
so you probably don't want to set to non-nil if you use case-sensitive
filesystems via ange-ftp.Vw32-generate-fake-inodes
Non-nil means attempt to fake realistic inode values.
This works by hashing the truename of files, and should detect
aliasing between long and short (8.3 DOS) names, but can have
false positives because of hash collisions.  Note that determining
the truename of a file can be slow.Vw32-get-true-file-attributes
Non-nil means determine accurate file attributes in `file-attributes'.
This option controls whether to issue additional system calls to determine
accurate link counts, file type, and ownership information.  It is more
useful for files on NTFS volumes, where hard links and file security are
supported, than on volumes of the FAT family.

Without these system calls, link count will always be reported as 1 and file
ownership will be attributed to the current user.
The default value `local' means only issue these system calls for files
on local fixed drives.  A value of nil means never issue them.
Any other non-nil value means do this even on remote and removable drives
where the performance impact may be noticeable even on modern hardware.Vw32-collate-ignore-punctuation
Non-nil causes string collation functions ignore punctuation on MS-Windows.
On Posix platforms, `string-collate-lessp' and `string-collate-equalp'
ignore punctuation characters when they compare strings, if the
locale's codeset is UTF-8, as in "en_US.UTF-8".  Binding this option
to a non-nil value will achieve a similar effect on MS-Windows, where
locales with UTF-8 codeset are not supported.

Note that setting this to non-nil will also ignore blanks and symbols
in the strings.  So do NOT use this option when comparing file names
for equality, only when you need to sort them.Sw32reg.o
Sw32select.o
Fw32-set-clipboard-data
This sets the clipboard data to the given text.

(fn STRING &optional IGNORED)Fw32-get-clipboard-data
This gets the clipboard data in text format.

(fn &optional IGNORED)Fw32-selection-exists-p
Whether there is an owner for the given X selection.
SELECTION should be the name of the selection in question, typically
one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.  (X expects
these literal upper-case names.)  The symbol nil is the same as
`PRIMARY', and t is the same as `SECONDARY'.

TERMINAL should be a terminal object or a frame specifying the X
server to query.  If omitted or nil, that stands for the selected
frame's display, or the first available X display.

(fn &optional SELECTION TERMINAL)Fw32-selection-targets
Return a vector of data formats available in the specified SELECTION.
SELECTION should be the name of the selection in question, typically
one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.
The symbol nil is the same as `PRIMARY', and t is the same as `SECONDARY'.

TERMINAL should be a terminal object or a frame specifying the X
server to query.  If omitted or nil, that stands for the selected
frame's display, or the first available X display.

This function currently ignores TERMINAL, and only returns non-nil
for `CLIPBOARD'.  The return value is a vector of symbols, each symbol
representing a data format that is currently available in the clipboard.

(fn &optional SELECTION TERMINAL)Vselection-coding-system
SKIP: real doc in select.el.Vnext-selection-coding-system
SKIP: real doc in select.el.Sw32term.o
Vx-wait-for-event-timeout
SKIP: real doc in xterm.c.Vw32-num-mouse-buttons
Number of physical mouse buttons.Vw32-swap-mouse-buttons
Swap the mapping of middle and right mouse buttons.
When nil, middle button is mouse-2 and right button is mouse-3.Vw32-grab-focus-on-raise
Raised frame grabs input focus.
When t, `raise-frame' grabs input focus as well.  This fits well
with the normal Windows click-to-focus policy, but might not be
desirable when using a point-to-focus policy.Vw32-capslock-is-shiftlock
Apply CapsLock state to non character input keys.
When nil, CapsLock only affects normal character input keys.Vw32-recognize-altgr
Recognize right-alt and left-ctrl as AltGr.
When nil, the right-alt and left-ctrl key combination is
interpreted normally.Vw32-use-visible-system-caret
Flag to make the system caret visible.
When this is non-nil, Emacs will indicate the position of point by
using the system caret instead of drawing its own cursor.  Some screen
reader software does not track the system cursor properly when it is
invisible, and gets confused by Emacs drawing its own cursor, so this
variable is initialized to t when Emacs detects that screen reader
software is running as it starts up.

When this variable is set, other variables affecting the appearance of
the cursor have no effect.Vx-use-underline-position-properties
SKIP: real doc in xterm.c.Vx-underline-at-descent-line
SKIP: real doc in xterm.c.Vx-toolkit-scroll-bars
SKIP: real doc in xterm.c.Vw32-unicode-filenames
Non-nil means use Unicode APIs when passing file names to the OS.
A value of nil means file names passed to the OS APIs and returned
from those APIs are encoded/decoded using the ANSI codepage
specified by `file-name-coding-system'.

This variable is set to non-nil by default when Emacs runs on Windows
systems of the NT family, including W2K, XP, Vista, Windows 7 and
Windows 8.  It is set to nil on Windows 9X.Vw32-use-native-image-API
Non-nil means use the native MS-Windows image API to display images.

A value of nil means displaying images other than PBM and XBM requires
optional supporting libraries to be installed.
The native image API library used is GDI+ via GDIPLUS.DLL.  This
library is available only since W2K, therefore this variable is
unconditionally set to nil on older systems.Vw32-yes-no-dialog-show-cancel
If non-nil, show Cancel button in MS-Windows GUI Yes/No dialogs.Vw32-add-wrapped-menu-bar-lines
Non-nil means frame resizing accounts for wrapped menu bar lines.
A value of nil means frame resizing does not add the height of wrapped
menu bar lines when sending a frame resize request to the Windows API.
This usually means that the resulting frame height is off by the number
of wrapped menu bar lines.  If this is non-nil, Emacs adds the height of
wrapped menu bar lines when sending frame resize requests to the Windows
API.Sw32xfns.o
Sw16select.o
Fw16-set-clipboard-data
This sets the clipboard data to the given text.

(fn STRING &optional FRAME)Fw16-get-clipboard-data
This gets the clipboard data in text format.

(fn &optional FRAME)Fw16-selection-exists-p
Whether there is an owner for the given X selection.
SELECTION should be the name of the selection in question, typically
one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.  (X expects
these literal upper-case names.)  The symbol nil is the same as
`PRIMARY', and t is the same as `SECONDARY'.

TERMINAL should be a terminal object or a frame specifying the X
server to query.  If omitted or nil, that stands for the selected
frame's display, or the first available X display.

(fn &optional SELECTION TERMINAL)Vselection-coding-system
SKIP: real doc in select.el.Vnext-selection-coding-system
SKIP: real doc in select.el.Swidget.o
Sxfont.o
Sftfont.o
Sxftfont.o
Vxft-font-ascent-descent-override
Non-nil means override the ascent and descent values for Xft font driver.
This is needed with some fonts to correct vertical overlap of glyphs.Vxft-color-font-whitelist
List of "color" font families that don't actually have color glyphs.
Some fonts (such as Source Code Pro) are reported as color fonts, but
do not actually have glyphs with colors that can cause Xft crashes.

The font families in this list will not be ignored when
`xft-ignore-color-fonts' is non-nil.Sgtkutil.o
Sxsettings.o
Ffont-get-system-normal-font
Get the system default application font.
The font is returned as either a font-spec or font name.

(fn)Ffont-get-system-font
Get the system default fixed width font.
The font is returned as either a font-spec or font name.

(fn)Ftool-bar-get-system-style
Get the system tool bar style.
If no system tool bar style is known, return `tool-bar-style' if set to a
known style.  Otherwise return image.

(fn)Vfont-use-system-font
Non-nil means to apply the system defined font dynamically.
When this is non-nil and the system defined fixed width font changes, we
update frames dynamically.
If this variable is nil, Emacs ignores system font changes.Vxft-settings
Font settings applied to Xft.Sxgselect.o
Stermcap.o
Shbfont.o
Shaikuterm.o
Vhaiku-initialized
Non-nil if the Haiku terminal backend has been initialized.Vx-use-underline-position-properties
SKIP: real doc in xterm.c.Vx-underline-at-descent-line
SKIP: real doc in xterm.c.Vx-toolkit-scroll-bars
SKIP: real doc in xterm.c.Vhaiku-debug-on-fatal-error
If non-nil, Emacs will launch the system debugger upon a fatal error.Vhaiku-meta-keysym
Which key Emacs uses as the meta modifier.
This is either one of the symbols `shift', `control', `command', and
`option', or nil, in which case it is treated as `command'.

Setting it to any other value is equivalent to `command'.Vhaiku-control-keysym
Which key Emacs uses as the control modifier.
This is either one of the symbols `shift', `control', `command', and
`option', or nil, in which case it is treated as `control'.

Setting it to any other value is equivalent to `control'.Vhaiku-super-keysym
Which key Emacs uses as the super modifier.
This is either one of the symbols `shift', `control', `command', and
`option', or nil, in which case it is treated as `option'.

Setting it to any other value is equivalent to `option'.Vhaiku-shift-keysym
Which key Emacs uses as the shift modifier.
This is either one of the symbols `shift', `control', `command', and
`option', or nil, in which case it is treated as `shift'.

Setting it to any other value is equivalent to `shift'.Shaikufns.o
Fhaiku-set-mouse-absolute-pixel-position
Move mouse pointer to a pixel position at (X, Y).  The
coordinates X and Y are interpreted to start from the top-left
corner of the screen.

(fn X Y)Fhaiku-mouse-absolute-pixel-position
Return absolute position of mouse cursor in pixels.
The position is returned as a cons cell (X . Y) of the coordinates of
the mouse cursor position in pixels relative to a position (0, 0) of the
selected frame's display.

(fn)Fxw-display-color-p
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fxw-color-defined-p
SKIP: real doc in xfns.c.

(fn COLOR &optional FRAME)Fxw-color-values
SKIP: real doc in xfns.c.

(fn COLOR &optional FRAME)Fx-display-grayscale-p
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-open-connection
SKIP: real doc in xfns.c.

(fn DISPLAY &optional RESOURCE-STRING MUST-SUCCEED)Fx-display-pixel-width
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-pixel-height
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-mm-height
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-mm-width
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-create-frame
SKIP: real doc in xfns.c.

(fn PARMS)Fx-display-visual-class
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-show-tip
SKIP: real doc in xfns.c.

(fn STRING &optional FRAME PARMS TIMEOUT DX DY)Fx-hide-tip
SKIP: real doc in xfns.c.

(fn)Fx-close-connection
SKIP: real doc in xfns.c.

(fn TERMINAL)Fx-display-list
SKIP: real doc in xfns.c.

(fn)Fx-server-vendor
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-server-version
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-screens
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fhaiku-get-version-string
Return a string describing the current Haiku version.

(fn)Fx-display-color-cells
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-planes
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-double-buffered-p
SKIP: real doc in xfns.c.

(fn &optional FRAME)Fx-display-backing-store
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fhaiku-frame-geometry
Return geometric attributes of FRAME.
FRAME must be a live frame and defaults to the selected one.  The return
value is an association list of the attributes listed below.  All height
and width values are in pixels.

`outer-position' is a cons of the outer left and top edges of FRAME
  relative to the origin - the position (0, 0) - of FRAME's display.

`outer-size' is a cons of the outer width and height of FRAME.  The
  outer size includes the title bar and the external borders as well as
  any menu and/or tool bar of frame.

`external-border-size' is a cons of the horizontal and vertical width of
  FRAME's external borders as supplied by the window manager.

`title-bar-size' is a cons of the width and height of the title bar of
  FRAME as supplied by the window manager.  If both of them are zero,
  FRAME has no title bar.  If only the width is zero, Emacs was not
  able to retrieve the width information.

`menu-bar-external', if non-nil, means the menu bar is external (never
  included in the inner edges of FRAME).

`menu-bar-size' is a cons of the width and height of the menu bar of
  FRAME.

`tool-bar-external', if non-nil, means the tool bar is external (never
  included in the inner edges of FRAME).

`tool-bar-position' tells on which side the tool bar on FRAME is and can
  be one of `left', `top', `right' or `bottom'.  If this is nil, FRAME
  has no tool bar.

`tool-bar-size' is a cons of the width and height of the tool bar of
  FRAME.

`internal-border-width' is the width of the internal border of
  FRAME.

(fn &optional FRAME)Fhaiku-frame-edges
Return edge coordinates of FRAME.
FRAME must be a live frame and defaults to the selected one.  The return
value is a list of the form (LEFT, TOP, RIGHT, BOTTOM).  All values are
in pixels relative to the origin - the position (0, 0) - of FRAME's
display.

If optional argument TYPE is the symbol `outer-edges', return the outer
edges of FRAME.  The outer edges comprise the decorations of the window
manager (like the title bar or external borders) as well as any external
menu or tool bar of FRAME.  If optional argument TYPE is the symbol
`native-edges' or nil, return the native edges of FRAME.  The native
edges exclude the decorations of the window manager and any external
menu or tool bar of FRAME.  If TYPE is the symbol `inner-edges', return
the inner edges of FRAME.  These edges exclude title bar, any borders,
menu bar or tool bar of FRAME.

(fn &optional FRAME TYPE)Fhaiku-read-file-name
Use a graphical panel to read a file name, using prompt PROMPT.
Optional arg FRAME specifies a frame on which to display the file panel.
If it is nil, the current frame is used instead.
The frame being used will be brought to the front of
the display after the file panel is closed.
Optional arg DIR, if non-nil, supplies a default directory.
Optional arg MUSTMATCH, if non-nil, means the returned file or
directory must exist.
Optional arg DIR_ONLY_P, if non-nil, means choose only directories.
Optional arg SAVE_TEXT, if non-nil, specifies some text to show in the entry field.

(fn PROMPT &optional FRAME DIR MUSTMATCH DIR-ONLY-P SAVE-TEXT)Fhaiku-put-resource
Place STRING by the key RESOURCE in the resource database.
It can later be retrieved with `x-get-resource'.

(fn RESOURCE STRING)Fhaiku-frame-list-z-order
Return list of Emacs's frames, in Z (stacking) order.
If TERMINAL is non-nil and specifies a live frame, return the child
frames of that frame in Z (stacking) order.

As it is impossible to reliably determine the frame stacking order on
Haiku, the selected frame is always the first element of the returned
list, while the rest are not guaranteed to be in any particular order.

Frames are listed from topmost (first) to bottommost (last).

(fn &optional TERMINAL)Fx-display-save-under
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fhaiku-frame-restack
Restack FRAME1 below FRAME2.
This means that if both frames are visible and the display areas of
these frames overlap, FRAME2 (partially) obscures FRAME1.  If optional
third argument ABOVE is non-nil, restack FRAME1 above FRAME2.  This
means that if both frames are visible and the display areas of these
frames overlap, FRAME1 (partially) obscures FRAME2.

Some window managers may refuse to restack windows.

(fn FRAME1 FRAME2 &optional ABOVE)Fhaiku-save-session-reply
Reply to a `save-session' event.
QUIT-REPLY means whether or not all files were saved and program
termination should proceed.

Calls to this function must be balanced by the amount of
`save-session' events received.  This is done automatically, so do not
call this function yourself.

(fn QUIT-REPLY)Fhaiku-display-monitor-attributes-list
Return a list of physical monitor attributes on the display TERMINAL.

The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

Internal use only, use `display-monitor-attributes-list' instead.

(fn &optional TERMINAL)Vx-max-tooltip-size
SKIP: real doc in xfns.c.Vx-cursor-fore-pixel
SKIP: real doc in xfns.c.Vx-pointer-shape
SKIP: real doc in xfns.c.Vx-hourglass-pointer-shape
SKIP: real doc in xfns.c.Vx-sensitive-text-pointer-shape
SKIP: real doc in xfns.c.Vhaiku-pass-control-tab-to-system
Whether or not to pass C-TAB to the system.
Setting this variable will cause Emacs to pass C-TAB to the system
(allowing window switching on the Haiku operating system), rather than
intercepting it.Vhaiku-allowed-ui-colors
Vector of UI colors that Emacs can look up from the system.
If this is set up incorrectly, Emacs can crash when encountering an
invalid color.Vcairo-version-string
Version info for cairo.Shaikumenu.o
Fmenu-or-popup-active-p
SKIP: real doc in xmenu.c.

(fn)Fhaiku-menu-bar-open
Show and start key navigation of the menu bar in FRAME.
This initially opens the first menu bar item and you can then navigate
with the arrow keys, select a menu entry with the return key, or
cancel with the escape key.  If FRAME is nil or not given, use the
selected frame.  If FRAME has no menu bar, a pop-up is displayed at
the position of the last non-menu event instead.

(fn &optional FRAME)Shaikufont.o
Fx-select-font
Read a font using a native dialog.
Return a font spec describing the font chosen by the user.

FRAME is the frame on which to pop up the font chooser.  If omitted or
nil, it defaults to the selected frame.
If EXCLUDE-PROPORTIONAL is non-nil, exclude proportional fonts
in the font selection dialog.

(fn &optional FRAME EXCLUDE-PROPORTIONAL)Ffont-get-system-normal-font
SKIP: real doc in xsettings.c.

(fn)Ffont-get-system-font
SKIP: real doc in xsettings.c.

(fn)Vfont-use-system-font
SKIP: real doc in xsettings.c.Sandroidterm.o
Vandroid-wait-for-event-timeout
How long to wait for Android events.

Emacs will wait up to this many seconds to receive events after
making changes which affect the state of the graphical interface.
Under some situations this can take an indefinite amount of time,
so it is important to limit the wait.

If set to a non-float value, there will be no wait at all.Vandroid-quit-keycode
Keycode that signals quit when typed twice in rapid succession.

This is the key code of a key whose repeated activation should prompt
Emacs to quit, enabling quitting on systems where a keyboard capable of
typing C-g is unavailable, when set to a key that does exist on the
device.  Its value must be a keycode defined by the operating system,
and defaults to 25 (KEYCODE_VOLUME_DOWN), though one of the following
values might be desired on those devices where this default is also
unavailable, or if another key must otherwise serve this function
instead:

  - 4  (KEYCODE_BACK)
  - 24 (KEYCODE_VOLUME_UP)Vx-use-underline-position-properties
SKIP: real doc in xterm.c.Vx-underline-at-descent-line
SKIP: real doc in xterm.c.Vandroid-build-fingerprint
String identifying the device's OS version.
This is a string that uniquely identifies the version of Android
Emacs is running on.Vandroid-build-manufacturer
Name of the developer of the running version of Android.Vandroid-display-planes
Depth and visual class of the display.
This variable controls the visual class and depth of the display, which
cannot be detected on Android.  The default value of 24, and values from
there to 8 represent a TrueColor display providing 24 planes, values
between 8 and 1 StaticGray displays providing that many planes, and 1 or
lower monochrome displays with a single plane.  Modifications to this
variable must be completed before the window system is initialized, in,
for instance, `early-init.el', or they will be of no effect.Vx-ctrl-keysym
SKIP: real doc in xterm.c.Vx-alt-keysym
SKIP: real doc in xterm.c.Vx-hyper-keysym
SKIP: real doc in xterm.c.Vx-meta-keysym
SKIP: real doc in xterm.c.Vx-super-keysym
SKIP: real doc in xterm.c.Vx-toolkit-scroll-bars
SKIP: real doc in xterm.c.Sandroidfns.o
Fx-create-frame
SKIP: real doc in xfns.c.

(fn PARMS)Fxw-color-defined-p
SKIP: real doc in xfns.c.

(fn COLOR &optional FRAME)Fxw-color-values
SKIP: real doc in xfns.c.

(fn COLOR &optional FRAME)Fxw-display-color-p
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-grayscale-p
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-pixel-width
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-pixel-height
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-planes
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-color-cells
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-server-vendor
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-server-version
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-screens
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-mm-width
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-mm-height
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-backing-store
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fx-display-visual-class
SKIP: real doc in xfns.c.

(fn &optional TERMINAL)Fandroid-display-monitor-attributes-list
Return a list of physical monitor attributes on the X display TERMINAL.

The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be a terminal object, a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display.

Internal use only, use `display-monitor-attributes-list' instead.

(fn &optional TERMINAL)Fandroid-frame-geometry
Return geometric attributes of FRAME.
FRAME must be a live frame and defaults to the selected one.  The return
value is an association list of the attributes listed below.  All height
and width values are in pixels.

`outer-position' is a cons of the outer left and top edges of FRAME
  relative to the origin - the position (0, 0) - of FRAME's display.

`outer-size' is a cons of the outer width and height of FRAME.  The
  outer size includes the title bar and the external borders as well as
  any menu and/or tool bar of frame.

`external-border-size' is a cons of the horizontal and vertical width of
  FRAME's external borders as supplied by the window manager.

`title-bar-size' is a cons of the width and height of the title bar of
  FRAME as supplied by the window manager.  If both of them are zero,
  FRAME has no title bar.  If only the width is zero, Emacs was not
  able to retrieve the width information.

`menu-bar-external', if non-nil, means the menu bar is external (never
  included in the inner edges of FRAME).

`menu-bar-size' is a cons of the width and height of the menu bar of
  FRAME.

`tool-bar-external', if non-nil, means the tool bar is external (never
  included in the inner edges of FRAME).

`tool-bar-position' tells on which side the tool bar on FRAME is and can
  be one of `left', `top', `right' or `bottom'.  If this is nil, FRAME
  has no tool bar.

`tool-bar-size' is a cons of the width and height of the tool bar of
  FRAME.

`internal-border-width' is the width of the internal border of
  FRAME.

(fn &optional FRAME)Fandroid-frame-edges
Return edge coordinates of FRAME.
FRAME must be a live frame and defaults to the selected one.  The return
value is a list of the form (LEFT, TOP, RIGHT, BOTTOM).  All values are
in pixels relative to the origin - the position (0, 0) - of FRAME's
display.

If optional argument TYPE is the symbol `outer-edges', return the outer
edges of FRAME.  The outer edges comprise the decorations of the window
manager (like the title bar or external borders) as well as any external
menu or tool bar of FRAME.  If optional argument TYPE is the symbol
`native-edges' or nil, return the native edges of FRAME.  The native
edges exclude the decorations of the window manager and any external
menu or tool bar of FRAME.  If TYPE is the symbol `inner-edges', return
the inner edges of FRAME.  These edges exclude title bar, any borders,
menu bar or tool bar of FRAME.

(fn &optional FRAME TYPE)Fandroid-frame-list-z-order
Return list of Emacs's frames, in Z (stacking) order.
The optional argument TERMINAL specifies which display to ask about.
TERMINAL should be either a frame or a display name (a string).  If
omitted or nil, that stands for the selected frame's display.  Return
nil if TERMINAL contains no Emacs frame.

As a special case, if TERMINAL is non-nil and specifies a live frame,
return the child frames of that frame in Z (stacking) order.

Frames are listed from topmost (first) to bottommost (last).

On Android, the order of the frames returned is undefined unless
TERMINAL is a frame.

(fn &optional TERMINAL)Fandroid-frame-restack
Restack FRAME1 below FRAME2.
This means that if both frames are visible and the display areas of
these frames overlap, FRAME2 (partially) obscures FRAME1.  If optional
third argument ABOVE is non-nil, restack FRAME1 above FRAME2.  This
means that if both frames are visible and the display areas of these
frames overlap, FRAME1 (partially) obscures FRAME2.

This may be thought of as an atomic action performed in two steps: The
first step removes FRAME1's window-step window from the display.  The
second step reinserts FRAME1's window below (above if ABOVE is true)
that of FRAME2.  Hence the position of FRAME2 in its display's Z
(stacking) order relative to all other frames excluding FRAME1 remains
unaltered.

Android does not facilitate restacking top-level windows managed by
its own window manager; nor is it possible to restack frames that are
children of different parents.  Consequently, this function only
functions when FRAME1 and FRAME2 are both child frames subordinate to
the same parent frame.

(fn FRAME1 FRAME2 &optional ABOVE)Fandroid-mouse-absolute-pixel-position
Return absolute position of mouse cursor in pixels.
The position is returned as a cons cell (X . Y) of the coordinates of
the mouse cursor position in pixels relative to a position (0, 0) of the
selected frame's display.  This does not work on Android.

(fn)Fandroid-set-mouse-absolute-pixel-position
Move mouse pointer to a pixel position at (X, Y).  The
coordinates X and Y are interpreted to start from the top-left corner
of the screen.  This does not work on Android.

(fn X Y)Fandroid-get-connection
Get the connection to the display server.
Return the terminal if it exists, else nil.

Emacs cannot open a connection to the display server itself under
Android, so there is no equivalent of `x-open-connection'.

(fn)Fx-display-list
SKIP: real doc in xfns.c.

(fn)Fx-show-tip
SKIP: real doc in xfns.c.

(fn STRING &optional FRAME PARMS TIMEOUT DX DY)Fx-hide-tip
SKIP: real doc in xfns.c.

(fn)Fandroid-detect-mouse
Figure out whether or not there is a mouse.
Return non-nil if a mouse is connected to this computer, and nil if
there is no mouse.

(fn)Fandroid-detect-keyboard
Return whether a keyboard is connected.
Return non-nil if a key is connected to this computer, or nil
if there is no keyboard.

(fn)Fandroid-toggle-on-screen-keyboard
Display or hide the on-screen keyboard.
If HIDE is non-nil, hide the on screen keyboard if it is currently
being displayed.  Else, request that the system display it on behalf
of FRAME.  This request may be rejected if FRAME does not have the
input focus.

(fn FRAME HIDE)Fandroid-query-battery
Perform a query for battery information.
Value is nil upon failure, or a list of the form:

  (CAPACITY CHARGE-COUNTER CURRENT-AVERAGE CURRENT-NOW STATUS
   REMAINING PLUGGED TEMP)

where REMAINING, CURRENT-AVERAGE, and CURRENT-NOW are undefined prior
to Android 5.0.

See the documentation at

  https://developer.android.com/reference/android/os/BatteryManager

for more details about these values.

(fn)Fandroid-request-directory-access
Request access to a directory within external storage.
On Android 5.0 and later, prompt for a directory within external or
application storage, and grant access to it; some of these directories
cannot be accessed through the regular `/sdcard' filesystem.

If access to the directory is granted, it will eventually appear
within the directory `/content/storage'.

(fn)Fandroid-external-storage-available-p
Return non-nil if Emacs is entitled to access external storage.
Return nil if the requisite permissions for external storage access
have not been granted to Emacs, t otherwise.  Such permissions can be
requested by means of the `android-request-storage-access'
command.

External storage on Android encompasses the `/sdcard' and
`/storage/emulated' directories, access to which is denied to programs
absent these permissions.

(fn)Fandroid-request-storage-access
Request permissions to access external storage.

Return nil regardless of whether access permissions are granted or not,
immediately after displaying the permissions request dialog.

Use `android-external-storage-available-p' (which see) to verify
whether Emacs has actually received such access permissions.

(fn)Fandroid-recreate-activity
Recreate the activity attached to the current frame.
This function exists for debugging purposes and is of no interest to
users.

(fn)Vx-pointer-shape
SKIP: real text in xfns.c.Vx-nontext-pointer-shape
SKIP: real doc in xfns.c.Vx-hourglass-pointer-shape
SKIP: real text in xfns.c.Vx-sensitive-text-pointer-shape
SKIP: real text in xfns.c.Vx-window-horizontal-drag-cursor
SKIP: real text in xfns.c.Vx-window-vertical-drag-cursor
SKIP: real text in xfns.c.Vx-window-left-edge-cursor
SKIP: real text in xfns.c.Vx-window-top-left-corner-cursor
SKIP: real text in xfns.c.Vx-window-top-edge-cursor
SKIP: real text in xfns.c.Vx-window-top-right-corner-cursor
SKIP: real text in xfns.c.Vx-window-right-edge-cursor
SKIP: real text in xfns.c.Vx-window-bottom-right-corner-cursor
SKIP: real text in xfns.c.Vx-window-bottom-edge-cursor
SKIP: real text in xfns.c.Vx-mode-pointer-shape
SKIP: real doc in xfns.c.Vx-window-bottom-left-corner-cursor
SKIP: real text in xfns.c.Vx-cursor-fore-pixel
SKIP: real doc in xfns.c.Vx-max-tooltip-size
SKIP: real doc in xfns.c.Vandroid-pass-multimedia-buttons-to-system
Whether or not to pass volume control buttons to the system.
Generally, the `volume-up', `volume-down' and `volume-mute' keys are
processed by Emacs, but setting this to non-nil they are passed to the
operating system instead of being intercepted by Emacs.

Note that if you set this, you will no longer be able to quit Emacs
using the volume down button.Vandroid-intercept-control-space
Whether Emacs should intercept C-SPC.
When this variable is set, Emacs intercepts C-SPC events as they are
delivered to a frame before they are registered and filtered by the
input method.

For no apparent purpose, Android input methods customarily discard SPC
events with the Ctrl modifier set without delivering them to Emacs
afterwards, which is an impediment to typing key sequences
incorporating such keys.Vandroid-use-exec-loader
Whether or not to bypass system restrictions on program execution.

Android 10 and later prevent programs from executing files installed
in writable directories, such as the application data directory.

When non-nil, Emacs will bypass this restriction by running such
executables under system call tracing, and replacing the `execve'
system call with a version which ignores the system's security
restrictions.

This option has no effect on Android 9 and earlier.Vandroid-keyboard-bell-duration
Number of milliseconds to vibrate after ringing the keyboard bell.
The keyboard bell under Android systems takes the form of a vibrating
element that is activated for a given number of milliseconds upon the
bell being rung.Vandroid-os-language
A list representing the configured system language on Android.
This list has four elements: LANGUAGE, COUNTRY, SCRIPT and VARIANT, where:

LANGUAGE and COUNTRY are ISO language and country codes identical to
those found in POSIX locale specifications.

SCRIPT is an ISO 15924 script tag, representing the script used
if available, or if required to disambiguate between distinct
writing systems for the same combination of language and country.

VARIANT is an arbitrary string representing the variant of the
LANGUAGE or SCRIPT.

Each of these fields might be empty or nil, but the locale is invalid
if LANGUAGE is empty.  Users of this variable should consider the
language to be US English if LANGUAGE is empty.Sandroidfont.o
Sandroidselect.c
Fandroid-clipboard-owner-p
Return whether or not Emacs owns the clipboard.
Alternatively, return the symbol `lambda' if that could not be
determined.

(fn)Fandroid-set-clipboard
Set the clipboard text to STRING.

(fn STRING)Fandroid-get-clipboard
Return the current contents of the clipboard.
Value is a multibyte string containing decoded clipboard
text.
Alternatively, return nil if the clipboard is empty.

(fn)Fandroid-clipboard-exists-p
Return whether or not clipboard contents exist.

(fn)Fandroid-browse-url-internal
Open URL in an external application.

URL should be a URL-encoded URL with a scheme specified unless SEND is
non-nil.  Signal an error upon failure.

If SEND is nil, start a program that is able to display the URL, such
as a web browser.  Otherwise, try to share URL using programs such as
email clients.

If URL is a file URI, convert it into a `content' address accessible to
other programs.  Files inside the /content or /assets directories cannot
be opened through such addresses, which this function does not provide
for.  Use `android-browse-url' instead.

(fn URL &optional SEND)Fandroid-get-clipboard-targets
Return a list of data types in the clipboard.
Value is a list of MIME types as strings, each defining a single extra
data type available from the clipboard.

(fn)Fandroid-get-clipboard-data
Return the clipboard data of the given MIME TYPE.
Value is a unibyte string containing the entire contents of the
clipboard, after its owner has converted the data to the given
MIME type.  Value is nil if the conversion fails, or if the data
is not present.

Value is also nil if the clipboard data consists of a single URL which
does not have any corresponding data.  In that case, use
`android-get-clipboard' instead.

(fn TYPE)Fandroid-notifications-notify
Display a desktop notification.
ARGS must contain keywords followed by values.  Each of the following
keywords is understood:

  :title	The notification title.
  :body		The notification body.
  :replaces-id	The ID of a previous notification to supersede.
  :group	The notification group, or nil.
  :urgency	One of the symbols `low', `normal' or `critical',
		defining the importance of the notification group.
  :icon		The name of a drawable resource to display as the
		notification's icon.
  :actions	A list of actions of the form:
		  (KEY TITLE KEY TITLE ...)
		where KEY and TITLE are both strings.
		The action for which CALLBACK is called when the
		notification itself is selected is named "default",
		its existence is implied, and its TITLE is ignored.
		No more than three actions defined here will be
		displayed, not counting any with "default" as its
		key.
  :timeout	Number of milliseconds from the display of the
		notification at which it will be automatically
		dismissed, or a value of zero or smaller if it
		is to remain until user action is taken to dismiss
		it.
  :resident     When set the notification will not be automatically
		dismissed when it or an action is selected.
  :on-action	Function to call when an action is invoked.
		The notification id and the key of the action are
		provided as arguments to the function.
  :on-close	Function to call if the notification is dismissed,
		with the notification id and the symbol `undefined'
		for arguments.

The notification group and timeout are ignored on Android 7.1 and
earlier versions of Android.  On more recent versions, the group
identifies a category that will be displayed in the system Settings
menu, and the urgency provided always extends to affect all
notifications displayed within that category, though it may be ignored
if higher than any previously-specified urgency or if the user have
already configured a different urgency for this category from Settings.
If the group is not provided, it defaults to the string "Desktop
Notifications" with the urgency suffixed.

Each caller should strive to provide one unchanging combination of
notification group and urgency for each kind of notification it sends,
inasmuch as the system may, subject to user configuration, disregard
the urgency specified within a notification, should it not be the
first notification sent to its notification group.

The provided icon should be the name of a "drawable resource" present
within the "android.R.drawable" class designating an icon with a
transparent background.  Should no icon be provided (or the icon is
absent from this system), it defaults to "ic_dialog_alert".

Actions specified with :actions cannot be displayed on Android 4.0 and
earlier versions of the system.

When the system is running Android 13 or later, notifications sent
will be silently disregarded unless permission to display
notifications is expressly granted from the "App Info" settings panel
corresponding to Emacs.

A title and body must be supplied.  Value is an integer (fixnum or
bignum) uniquely designating the notification displayed, which may
subsequently be specified as the `:replaces-id' of another call to
this function.

(fn &rest ARGS)Sandroidvfs.c
Fandroid-relinquish-directory-access
Relinquish access to the provided directory.
DIRECTORY must be the toplevel directory of an open SAF volume (i.e., a
file under /content/storage), or one of its inferiors.  Once the command
completes, the SAF directory holding this directory will vanish, but no
files will be removed.

(fn FILE)Ssfntfont-android.c
Fandroid-enumerate-fonts
Enumerate fonts present on the system.

Signal an error if fonts have already been enumerated.  This would
normally have been done in C, but reading fonts require Lisp to be
loaded before character sets are made available.

(fn)Ssfntfont.c
Vsfnt-default-family-alist
Alist between "emulated" and actual font family names.
Much Emacs code assumes that font families named "Monospace" and "Sans
Serif" exist, and map to the default monospace and Sans Serif fonts on
a system.  When the `sfnt' font driver is asked to look for a font
with one of the families in this alist, it uses its value instead.Vsfnt-uninstructable-family-regexp
Regexp matching font families whose glyphs must not be instructed.
If nil, instruction code supplied by all fonts will be executed.  This
variable takes effect when a font entity is opened, not after, and
therefore won't affect the scaling of realized faces until their
frames' font caches are cleared (see `clear-font-cache').

TrueType fonts incorporate instruction code executed to fit each glyph
to a pixel grid, so as to improve the visual fidelity of each glyph by
eliminating artifacts and chance effects consequent upon the direct
upscaling of glyph outline data.  Instruction code is occasionally
incompatible with Emacs and must be disregarded.Vsfnt-raster-glyphs-exactly
How font glyph outlines should be converted to graphics.
If non-nil, glyphs will be displayed in a more precise manner, at the
cost of performance on devices where floating-point math operations
are slow.Sdispnew.o
Fdump-redisplay-history
Dump redisplay history to stderr.

(fn)Fredraw-frame
Clear frame FRAME and output again what is supposed to appear on it.
If FRAME is omitted or nil, the selected frame is used.

(fn &optional FRAME)Fredraw-display
Clear and redisplay all visible frames.

(fn)Fdisplay--update-for-mouse-movement
Handle mouse movement detected by Lisp code.

This function should be called when Lisp code detects the mouse has
moved, even if `track-mouse' is nil.  This handles updates that do not
rely on input events such as updating display for mouse-face
properties or updating the help echo text.

(fn MOUSE-X MOUSE-Y)Fopen-termscript
Start writing all terminal output to FILE as well as the terminal.
FILE = nil means just close any termscript file currently open.

(fn FILE)Fsend-string-to-terminal
Send STRING to the terminal without alteration.
Control characters in STRING will have terminal-dependent effects.

Optional parameter TERMINAL specifies the tty terminal device to use.
It may be a terminal object, a frame, or nil for the terminal used by
the currently selected frame.  In batch mode, STRING is sent to stdout
when TERMINAL is nil.

(fn STRING &optional TERMINAL)Fding
Beep, or flash the screen.
Also, unless an argument is given,
terminate any keyboard macro currently executing.

(fn &optional ARG)Fsleep-for
Pause, without updating display, for SECONDS seconds.
SECONDS may be a floating-point value, meaning that you can wait for a
fraction of a second.
An optional second arg MILLISECONDS can be provided but is deprecated:
it specifies an additional wait period, in milliseconds.

(fn SECONDS &optional MILLISECONDS)Fredisplay
Perform redisplay.
Optional arg FORCE, if non-nil, prevents redisplay from being
preempted by arriving input, even if `redisplay-dont-pause' is nil.
If `redisplay-dont-pause' is non-nil (the default), redisplay is never
preempted by arriving input, so FORCE does nothing.

Return t if redisplay was performed, nil if redisplay was preempted
immediately by pending input.

(fn &optional FORCE)Fframe-or-buffer-changed-p
Return non-nil if the frame and buffer state appears to have changed.
VARIABLE is a variable name whose value is either nil or a state vector
that will be updated to contain all frames and buffers,
aside from buffers whose names start with space,
along with the buffers' read-only and modified flags.  This allows a fast
check to see whether buffer menus might need to be recomputed.
If this function returns non-nil, it updates the internal vector to reflect
the current state.

If VARIABLE is nil, an internal variable is used.  Users should not
pass nil for VARIABLE.

(fn &optional VARIABLE)Finternal-show-cursor
Set the cursor-visibility flag of WINDOW to SHOW.
WINDOW nil means use the selected window.  SHOW non-nil means
show a cursor in WINDOW in the next redisplay.  SHOW nil means
don't show a cursor.

(fn WINDOW SHOW)Finternal-show-cursor-p
Value is non-nil if next redisplay will display a cursor in WINDOW.
WINDOW nil or omitted means report on the selected window.

(fn &optional WINDOW)Vbaud-rate
The output baud rate of the terminal.
On most systems, changing this value will affect the amount of padding
and the other strategic decisions made during redisplay.Vinverse-video
Non-nil means invert the entire frame display.
This means everything is in inverse video which otherwise would not be.Vvisible-bell
Non-nil means try to flash the frame to represent a bell.

See also `ring-bell-function'.Vno-redraw-on-reenter
Non-nil means no need to redraw entire frame after suspending.
A non-nil value is useful if the terminal can automatically preserve
Emacs's frame display when you reenter Emacs.
It is up to you to set this variable if your terminal can do that.Vinitial-window-system
Name of the window system that Emacs uses for the first frame.
The value is a symbol:
 nil for a termcap frame (a character-only terminal),
 `x' for an Emacs frame that is really an X window,
 `w32' for an Emacs frame that is a window on MS-Windows display,
 `ns' for an Emacs frame on a GNUstep or Macintosh Cocoa display,
 `pc' for a direct-write MS-DOS frame.
 `pgtk' for an Emacs frame using pure GTK facilities.
 `haiku' for an Emacs frame running in Haiku.

Use of this variable as a boolean is deprecated.  Instead,
use `display-graphic-p' or any of the other `display-*-p'
predicates which report frame's specific UI-related capabilities.Vwindow-system
Name of window system through which the selected frame is displayed.
The value is a symbol:
 nil for a termcap frame (a character-only terminal),
 `x' for an Emacs frame that is really an X window,
 `w32' for an Emacs frame that is a window on MS-Windows display,
 `ns' for an Emacs frame on a GNUstep or Macintosh Cocoa display,
 `pc' for a direct-write MS-DOS frame.
 `pgtk' for an Emacs frame using pure GTK facilities.
 `haiku' for an Emacs frame running in Haiku.
 `android' for an Emacs frame running in Android.

Use of this variable as a boolean is deprecated.  Instead,
use `display-graphic-p' or any of the other `display-*-p'
predicates which report frame's specific UI-related capabilities.Vcursor-in-echo-area
Non-nil means put cursor in minibuffer, at end of any message there.Vmouse-prefer-closest-glyph
Non-nil means mouse click position is taken from glyph closest to click.

When non-nil, mouse position lists will report buffer position set to
the position of the glyph that is the closest to the mouse pointer
at the time of the click, instead of the glyph immediately under it.Vglyph-table
Table defining how to output a glyph code to the frame.
If not nil, this is a vector indexed by glyph code to define the glyph.
Each element can be:
 integer: a glyph code which this glyph is an alias for.
 string: output this glyph using that string (not impl. in X windows).
 nil: this glyph mod 524288 is the code of a character to output,
    and this glyph / 524288 is the face number (see `face-id') to use
    while outputting it.Vstandard-display-table
Display table to use for buffers that specify none.
It is also used for standard output and error streams.
See `buffer-display-table' for more information.Vredisplay-dont-pause
Nil means display update is paused when input is detected.Vx-show-tooltip-timeout
The default timeout (in seconds) for `x-show-tip'.Vtab-bar-position
Specify on which side from the tool bar the tab bar shall be.
Possible values are t (below the tool bar), nil (above the tool bar).
This option affects only builds where the tool bar is not external.Sframe.o
Fframep
Return non-nil if OBJECT is a frame.
Value is:
  t for a termcap frame (a character-only terminal),
 `x' for an Emacs frame that is really an X window,
 `w32' for an Emacs frame that is a window on MS-Windows display,
 `ns' for an Emacs frame on a GNUstep or Macintosh Cocoa display,
 `pc' for a direct-write MS-DOS frame,
 `pgtk' for an Emacs frame running on pure GTK.
 `haiku' for an Emacs frame running in Haiku.
 `android' for an Emacs frame running in Android.
See also `frame-live-p'.

(fn OBJECT)Fframe-live-p
Return non-nil if OBJECT is a frame which has not been deleted.
Value is nil if OBJECT is not a live frame.  If object is a live
frame, the return value indicates what sort of terminal device it is
displayed on.  See the documentation of `framep' for possible
return values.

(fn OBJECT)Fwindow-system
The name of the window system that FRAME is displaying through.
The value is a symbol:
 nil for a termcap frame (a character-only terminal),
 `x' for an Emacs frame that is really an X window,
 `w32' for an Emacs frame that is a window on MS-Windows display,
 `ns' for an Emacs frame on a GNUstep or Macintosh Cocoa display,
 `pc' for a direct-write MS-DOS frame.
 `pgtk' for an Emacs frame using pure GTK facilities.
 `haiku' for an Emacs frame running in Haiku.
 `android' for an Emacs frame running in Android.

FRAME defaults to the currently selected frame.

Use of this function as a predicate is deprecated.  Instead,
use `display-graphic-p' or any of the other `display-*-p'
predicates which report frame's specific UI-related capabilities.

(fn &optional FRAME)Fframe-windows-min-size
SKIP: real doc in window.el.

(fn FRAME HORIZONTAL IGNORE PIXELWISE)Fmake-terminal-frame
Create an additional terminal frame, possibly on another terminal.
This function takes one argument, an alist specifying frame parameters.

You can create multiple frames on a single text terminal, but only one
of them (the selected terminal frame) is actually displayed.

In practice, generally you don't need to specify any parameters,
except when you want to create a new frame on another terminal.
In that case, the `tty' parameter specifies the device file to open,
and the `tty-type' parameter specifies the terminal type.  Example:

   (make-terminal-frame \='((tty . "/dev/pts/5") (tty-type . "xterm")))

Note that changing the size of one terminal frame automatically
affects all frames on the same terminal device.

(fn PARMS)Fselect-frame
Select FRAME.
Subsequent editing commands apply to its selected window.
Optional argument NORECORD means to neither change the order of
recently selected windows nor the buffer list.

The selection of FRAME lasts until the next time the user does
something to select a different frame, or until the next time
this function is called.  If you are using a window system, the
previously selected frame may be restored as the selected frame
when returning to the command loop, because it still may have
the window system's input focus.  On a text terminal, the next
redisplay will display FRAME.

This function returns FRAME, or nil if FRAME has been deleted.

(fn FRAME &optional NORECORD)Fhandle-switch-frame
Handle a switch-frame event EVENT.
Switch-frame events are usually bound to this function.
A switch-frame event is an event Emacs sends itself to
indicate that input is arriving in a new frame. It does not
necessarily represent user-visible input focus.

(fn EVENT)Fselected-frame
Return the frame that is now selected.

(fn)Fold-selected-frame
Return the old selected FRAME.
FRAME must be a live frame and defaults to the selected one.

The return value is the frame selected the last time window change
functions were run.

(fn)Fframe-list
Return a list of all live frames.
The return value does not include any tooltip frame.

(fn)Fframe-parent
Return the parent frame of FRAME.
The parent frame of FRAME is the Emacs frame whose window-system window
is the parent window of FRAME's window-system window.  When such a frame
exists, FRAME is considered a child frame of that frame.

Return nil if FRAME has no parent frame.  This means that FRAME's
window-system window is either a "top-level" window (a window whose
parent window is the window-system's root window) or an embedded window
(a window whose parent window is owned by some other application).

(fn &optional FRAME)Fframe-ancestor-p
Return non-nil if ANCESTOR is an ancestor of DESCENDANT.
ANCESTOR is an ancestor of DESCENDANT when it is either DESCENDANT's
parent frame or it is an ancestor of DESCENDANT's parent frame.  Both,
ANCESTOR and DESCENDANT must be live frames and default to the selected
frame.

(fn ANCESTOR DESCENDANT)Fnext-frame
Return the next frame in the frame list after FRAME.
Only frames on the same terminal as FRAME are included in the list
of candidate frames.  If omitted, FRAME defaults to the selected frame.

If MINIFRAME is nil (the default), include all frames except
minibuffer-only frames.

If MINIFRAME is a window, include only its own frame and any frame now
using that window as the minibuffer.

If MINIFRAME is `visible', include only visible frames.

If MINIFRAME is 0, include only visible and iconified frames.

If MINIFRAME is any other value, include all frames.

(fn &optional FRAME MINIFRAME)Fprevious-frame
Return the previous frame in the frame list before FRAME.
It considers only frames on the same terminal as FRAME.
By default, skip minibuffer-only frames.
If omitted, FRAME defaults to the selected frame.
If optional argument MINIFRAME is nil, exclude minibuffer-only frames.
If MINIFRAME is a window, include only its own frame
and any frame now using that window as the minibuffer.
If MINIFRAME is `visible', include all visible frames.
If MINIFRAME is 0, include all visible and iconified frames.
Otherwise, include all frames.

(fn &optional FRAME MINIFRAME)Flast-nonminibuffer-frame
Return last non-minibuffer frame selected.

(fn)Fdelete-frame
Delete FRAME, eliminating it from use.
FRAME must be a live frame and defaults to the selected one.

When `undelete-frame-mode' is enabled, the 16 most recently deleted
frames can be undeleted with `undelete-frame', which see.

A frame may not be deleted if its minibuffer serves as surrogate
minibuffer for another frame.  Normally, you may not delete a frame if
all other frames are invisible, but if the second optional argument
FORCE is non-nil, you may do so.

This function runs `delete-frame-functions' before actually
deleting the frame, unless the frame is a tooltip.
The functions are run with one argument, the frame to be deleted.

(fn &optional FRAME FORCE)Fmouse-position
Return a list (FRAME X . Y) giving the current mouse frame and position.
The position is given in canonical character cells, where (0, 0) is the
upper-left corner of the frame, X is the horizontal offset, and Y is the
vertical offset, measured in units of the frame's default character size.
If Emacs is running on a mouseless terminal or hasn't been programmed
to read the mouse position, it returns the selected frame for FRAME
and nil for X and Y.

FRAME might be nil if `track-mouse' is set to `drag-source'.  This
means there is no frame under the mouse.  If `mouse-position-function'
is non-nil, `mouse-position' calls it, passing the normal return value
to that function as an argument, and returns whatever that function
returns.

(fn)Fmouse-pixel-position
Return a list (FRAME X . Y) giving the current mouse frame and position.
The position is given in pixel units, where (0, 0) is the
upper-left corner of the frame, X is the horizontal offset, and Y is
the vertical offset.
FRAME might be nil if `track-mouse' is set to `drag-source'.  This
means there is no frame under the mouse.  If Emacs is running on a
mouseless terminal or hasn't been programmed to read the mouse
position, it returns the selected frame for FRAME and nil for X and
Y.

(fn)Fset-mouse-position
Move the mouse pointer to the center of character cell (X,Y) in FRAME.
Coordinates are relative to the frame, not a window,
so the coordinates of the top left character in the frame
may be nonzero due to left-hand scroll bars or the menu bar.

The position is given in canonical character cells, where (0, 0) is
the upper-left corner of the frame, X is the horizontal offset, and
Y is the vertical offset, measured in units of the frame's default
character size.

This function is a no-op for an X frame that is not visible.
If you have just created a frame, you must wait for it to become visible
before calling this function on it, like this.
  (while (not (frame-visible-p frame)) (sleep-for .5))

(fn FRAME X Y)Fset-mouse-pixel-position
Move the mouse pointer to pixel position (X,Y) in FRAME.
The position is given in pixels, where (0, 0) is the upper-left corner
of the frame, X is the horizontal offset, and Y is the vertical offset.

Note, this is a no-op for an X frame that is not visible.
If you have just created a frame, you must wait for it to become visible
before calling this function on it, like this.
  (while (not (frame-visible-p frame)) (sleep-for .5))

(fn FRAME X Y)Fmake-frame-visible
Make the frame FRAME visible (assuming it is an X window).
If omitted, FRAME defaults to the currently selected frame.

(fn &optional FRAME)Fmake-frame-invisible
Make the frame FRAME invisible.
If omitted, FRAME defaults to the currently selected frame.
On graphical displays, invisible frames are not updated and are
usually not displayed at all, even in a window system's "taskbar".

Normally you may not make FRAME invisible if all other frames are invisible,
but if the second optional argument FORCE is non-nil, you may do so.

This function has no effect on text terminal frames.  Such frames are
always considered visible, whether or not they are currently being
displayed in the terminal.

(fn &optional FRAME FORCE)Ficonify-frame
Make the frame FRAME into an icon.
If omitted, FRAME defaults to the currently selected frame.

If FRAME is a child frame, consult the variable `iconify-child-frame'
for how to proceed.

(fn &optional FRAME)Fframe-visible-p
Return t if FRAME is "visible" (actually in use for display).
Return the symbol `icon' if FRAME is iconified or "minimized".
Return nil if FRAME was made invisible, via `make-frame-invisible'.
On graphical displays, invisible frames are not updated and are
usually not displayed at all, even in a window system's "taskbar".

If FRAME is a text terminal frame, this always returns t.
Such frames are always considered visible, whether or not they are
currently being displayed on the terminal.

(fn FRAME)Fvisible-frame-list
Return a list of all frames now "visible" (being updated).

(fn)Fraise-frame
Bring FRAME to the front, so it occludes any frames it overlaps.
If FRAME is invisible or iconified, make it visible.
If you don't specify a frame, the selected frame is used.
If Emacs is displaying on an ordinary terminal or some other device which
doesn't support multiple overlapping frames, this function selects FRAME.

(fn &optional FRAME)Flower-frame
Send FRAME to the back, so it is occluded by any frames that overlap it.
If you don't specify a frame, the selected frame is used.
If Emacs is displaying on an ordinary terminal or some other device which
doesn't support multiple overlapping frames, this function does nothing.

(fn &optional FRAME)Fredirect-frame-focus
Arrange for keystrokes typed at FRAME to be sent to FOCUS-FRAME.
In other words, switch-frame events caused by events in FRAME will
request a switch to FOCUS-FRAME, and `last-event-frame' will be
FOCUS-FRAME after reading an event typed at FRAME.

If FOCUS-FRAME is nil, any existing redirection is canceled, and the
frame again receives its own keystrokes.

Focus redirection is useful for temporarily redirecting keystrokes to
a surrogate minibuffer frame when a frame doesn't have its own
minibuffer window.

A frame's focus redirection can be changed by `select-frame'.  If frame
FOO is selected, and then a different frame BAR is selected, any
frames redirecting their focus to FOO are shifted to redirect their
focus to BAR.  This allows focus redirection to work properly when the
user switches from one frame to another using `select-window'.

This means that a frame whose focus is redirected to itself is treated
differently from a frame whose focus is redirected to nil; the former
is affected by `select-frame', while the latter is not.

The redirection lasts until `redirect-frame-focus' is called to change it.

(fn FRAME &optional FOCUS-FRAME)Fframe-focus
Return the frame to which FRAME's keystrokes are currently being sent.
If FRAME is omitted or nil, the selected frame is used.
Return nil if FRAME's focus is not redirected.
See `redirect-frame-focus'.

(fn &optional FRAME)Fx-focus-frame
Set the input focus to FRAME.
FRAME nil means use the selected frame.  Optional argument NOACTIVATE
means do not activate FRAME.

If there is no window system support, this function does nothing.

(fn FRAME &optional NOACTIVATE)Fframe-after-make-frame
Mark FRAME as made.
FRAME nil means use the selected frame.  Second argument MADE non-nil
means functions on `window-configuration-change-hook' are called
whenever the window configuration of FRAME changes.  MADE nil means
these functions are not called.

This function is currently called by `make-frame' only and should be
otherwise used with utter care to avoid that running functions on
`window-configuration-change-hook' is impeded forever.

(fn FRAME MADE)Fframe-parameters
Return the parameters-alist of frame FRAME.
It is a list of elements of the form (PARM . VALUE), where PARM is a symbol.
The meaningful PARMs depend on the kind of frame.
If FRAME is omitted or nil, return information on the currently selected frame.

(fn &optional FRAME)Fframe-parameter
Return FRAME's value for parameter PARAMETER.
If FRAME is nil, describe the currently selected frame.

(fn FRAME PARAMETER)Fmodify-frame-parameters
Modify FRAME according to new values of its parameters in ALIST.
If FRAME is nil, it defaults to the selected frame.
ALIST is an alist of parameters to change and their new values.
Each element of ALIST has the form (PARM . VALUE), where PARM is a symbol.
Which PARMs are meaningful depends on the kind of frame.
The meaningful parameters are acted upon, i.e. the frame is changed
according to their new values, and are also stored in the frame's
parameter list so that `frame-parameters' will return them.
PARMs that are not meaningful are still stored in the frame's parameter
list, but are otherwise ignored.

(fn FRAME ALIST)Fframe-char-height
Height in pixels of a line in the font in frame FRAME.
If FRAME is omitted or nil, the selected frame is used.
For a terminal frame, the value is always 1.

(fn &optional FRAME)Fframe-char-width
Width in pixels of characters in the font in frame FRAME.
If FRAME is omitted or nil, the selected frame is used.
On a graphical screen, the width is the standard width of the default font.
For a terminal screen, the value is always 1.

(fn &optional FRAME)Fframe-native-width
Return FRAME's native width in pixels.
For a terminal frame, the result really gives the width in characters.
If FRAME is omitted or nil, the selected frame is used.

If you're interested only in the width of the text portion of the
frame, see `frame-text-width' instead.

(fn &optional FRAME)Fframe-native-height
Return FRAME's native height in pixels.
If FRAME is omitted or nil, the selected frame is used.  The exact value
of the result depends on the window-system and toolkit in use:

In the Gtk+ and NS versions, it includes only any window (including the
minibuffer or echo area), mode line, and header line.  It does not
include the tool bar or menu bar.  With other graphical versions, it may
also include the tool bar and the menu bar.

If you're interested only in the height of the text portion of the
frame, see `frame-text-height' instead.

For a text terminal, it includes the menu bar.  In this case, the
result is really in characters rather than pixels (i.e., is identical
to `frame-height').

(fn &optional FRAME)Ftool-bar-pixel-width
Return width in pixels of FRAME's tool bar.
The result is greater than zero only when the tool bar is on the left
or right side of FRAME.  If FRAME is omitted or nil, the selected frame
is used.

(fn &optional FRAME)Fframe-text-cols
Return width in columns of FRAME's text area.

(fn &optional FRAME)Fframe-text-lines
Return height in lines of FRAME's text area.

(fn &optional FRAME)Fframe-total-cols
Return number of total columns of FRAME.

(fn &optional FRAME)Fframe-total-lines
Return number of total lines of FRAME.

(fn &optional FRAME)Fframe-text-width
Return text area width of FRAME in pixels.

(fn &optional FRAME)Fframe-text-height
Return text area height of FRAME in pixels.

(fn &optional FRAME)Fframe-scroll-bar-width
Return scroll bar width of FRAME in pixels.

(fn &optional FRAME)Fframe-scroll-bar-height
Return scroll bar height of FRAME in pixels.

(fn &optional FRAME)Fframe-fringe-width
Return fringe width of FRAME in pixels.

(fn &optional FRAME)Fframe-child-frame-border-width
Return width of FRAME's child-frame border in pixels.
 If FRAME's `child-frame-border-width' parameter is nil, return FRAME's
 internal border width instead.

(fn &optional FRAME)Fframe-internal-border-width
Return width of FRAME's internal border in pixels.

(fn &optional FRAME)Fframe-right-divider-width
Return width (in pixels) of vertical window dividers on FRAME.

(fn &optional FRAME)Fframe-bottom-divider-width
Return width (in pixels) of horizontal window dividers on FRAME.

(fn &optional FRAME)Fset-frame-height
Set text height of frame FRAME to HEIGHT lines.
Optional third arg PRETEND non-nil means that redisplay should use
HEIGHT lines but that the idea of the actual height of the frame should
not be changed.

Optional fourth argument PIXELWISE non-nil means that FRAME should be
HEIGHT pixels high.  Note: When `frame-resize-pixelwise' is nil, some
window managers may refuse to honor a HEIGHT that is not an integer
multiple of the default frame font height.

When called interactively, HEIGHT is the numeric prefix and the
currently selected frame will be set to this height.

If FRAME is nil, it defaults to the selected frame.

(fn FRAME HEIGHT &optional PRETEND PIXELWISE)Fset-frame-width
Set text width of frame FRAME to WIDTH columns.
Optional third arg PRETEND non-nil means that redisplay should use WIDTH
columns but that the idea of the actual width of the frame should not
be changed.

Optional fourth argument PIXELWISE non-nil means that FRAME should be
WIDTH pixels wide.  Note: When `frame-resize-pixelwise' is nil, some
window managers may refuse to honor a WIDTH that is not an integer
multiple of the default frame font width.

When called interactively, WIDTH is the numeric prefix and the
currently selected frame will be set to this width.

If FRAME is nil, it defaults to the selected frame.

(fn FRAME WIDTH &optional PRETEND PIXELWISE)Fset-frame-size
Set text size of FRAME to WIDTH by HEIGHT, measured in characters.
Optional argument PIXELWISE non-nil means to measure in pixels.  Note:
When `frame-resize-pixelwise' is nil, some window managers may refuse to
honor a WIDTH that is not an integer multiple of the default frame font
width or a HEIGHT that is not an integer multiple of the default frame
font height.

If FRAME is nil, it defaults to the selected frame.

(fn FRAME WIDTH HEIGHT &optional PIXELWISE)Fframe-position
Return top left corner of FRAME in pixels.
FRAME must be a live frame and defaults to the selected one.  The return
value is a cons (x, y) of the coordinates of the top left corner of
FRAME's outer frame, in pixels relative to an origin (0, 0) of FRAME's
display.

Note that the values returned are not guaranteed to be accurate: The
values depend on the underlying window system, and some systems add a
constant offset to the values.

(fn &optional FRAME)Fset-frame-position
Set position of FRAME to (X, Y).
FRAME must be a live frame and defaults to the selected one.  X and Y,
if positive, specify the coordinate of the left and top edge of FRAME's
outer frame in pixels relative to an origin (0, 0) of FRAME's display.
If any of X or Y is negative, it specifies the coordinates of the right
or bottom edge of the outer frame of FRAME relative to the right or
bottom edge of FRAME's display.

(fn FRAME X Y)Fframe-window-state-change
Return t if FRAME's window state change flag is set, nil otherwise.
FRAME must be a live frame and defaults to the selected one.

If FRAME's window state change flag is set, the default values of
`window-state-change-functions' and `window-state-change-hook' will be
run during next redisplay, regardless of whether a window state change
actually occurred on FRAME or not.  After that, the value of this flag
is reset.

(fn &optional FRAME)Fset-frame-window-state-change
Set FRAME's window state change flag according to ARG.
Set FRAME's window state change flag if ARG is non-nil, reset it
otherwise.

If FRAME's window state change flag is set, the default values of
`window-state-change-functions' and `window-state-change-hook' will be
run during next redisplay, regardless of whether a window state change
actually occurred on FRAME or not.  After that, the value of FRAME's
window state change flag is reset.

(fn &optional FRAME ARG)Fframe-scale-factor
Return FRAMEs scale factor.
If FRAME is omitted or nil, the selected frame is used.
The scale factor is the amount by which a logical pixel size must be
multiplied to find the real number of pixels.

(fn &optional FRAME)Fx-get-resource
Return the value of ATTRIBUTE, of class CLASS, from the X defaults database.
This uses `INSTANCE.ATTRIBUTE' as the key and `Emacs.CLASS' as the
class, where INSTANCE is the name under which Emacs was invoked, or
the name specified by the `-name' or `-rn' command-line arguments.

The optional arguments COMPONENT and SUBCLASS add to the key and the
class, respectively.  You must specify both of them or neither.
If you specify them, the key is `INSTANCE.COMPONENT.ATTRIBUTE'
and the class is `Emacs.CLASS.SUBCLASS'.

(fn ATTRIBUTE CLASS &optional COMPONENT SUBCLASS)Fx-parse-geometry
Parse a display geometry string STRING.
Returns an alist of the form ((top . TOP), (left . LEFT) ... ).
The properties returned may include `top', `left', `height', and `width'.
For X, the value of `left' or `top' may be an integer,
or a list (+ N) meaning N pixels relative to top/left corner,
or a list (- N) meaning -N pixels relative to bottom/right corner.
On Nextstep, this just calls `ns-parse-geometry'.

(fn STRING)Fframe-pointer-visible-p
Return t if the mouse pointer displayed on FRAME is visible.
Otherwise it returns nil.  FRAME omitted or nil means the
selected frame.  This is useful when `make-pointer-invisible' is set.

(fn &optional FRAME)Fframe--set-was-invisible
Set FRAME's was-invisible flag if WAS-INVISIBLE is non-nil.
This function is for internal use only.

(fn FRAME WAS-INVISIBLE)Freconsider-frame-fonts
Recreate FRAME's default font using updated font parameters.
Signal an error if FRAME is not a window system frame.  This should be
called after a `config-changed' event is received, signaling that the
parameters (such as pixel density) used by the system to open fonts
have changed.

(fn FRAME)Vx-resource-name
The name Emacs uses to look up X resources.
`x-get-resource' uses this as the first component of the instance name
when requesting resource values.
Emacs initially sets `x-resource-name' to the name under which Emacs
was invoked, or to the value specified with the `-name' or `-rn'
switches, if present.

It may be useful to bind this variable locally around a call
to `x-get-resource'.  See also the variable `x-resource-class'.Vx-resource-class
The class Emacs uses to look up X resources.
`x-get-resource' uses this as the first component of the instance class
when requesting resource values.

Emacs initially sets `x-resource-class' to "Emacs".

Setting this variable permanently is not a reasonable thing to do,
but binding this variable locally around a call to `x-get-resource'
is a reasonable practice.  See also the variable `x-resource-name'.Vframe-alpha-lower-limit
The lower limit of the frame opacity (alpha transparency).
The value should range from 0 (invisible) to 100 (completely opaque).
You can also use a floating number between 0.0 and 1.0.Vdefault-frame-alist
Alist of default values of frame parameters for frame creation.
These may be set in your init file, like this:
  (setq default-frame-alist \='((width . 80) (height . 55) (menu-bar-lines . 1)))

These override values given in window system configuration data,
including X Windows' defaults database.

Note that many display-related modes (like `scroll-bar-mode' or
`menu-bar-mode') alter `default-frame-alist', so if you set this
variable directly, you may be overriding other settings
unintentionally.  Instead it's often better to use
`modify-all-frames-parameters' or push new elements to the front of
this alist.

For values specific to the first Emacs frame, see `initial-frame-alist'.

For window-system specific values, see `window-system-default-frame-alist'.

For values specific to the separate minibuffer frame, see
`minibuffer-frame-alist'.

Setting this variable does not affect existing frames, only new ones.Vdefault-frame-scroll-bars
Default position of vertical scroll bars on this window-system.Vscroll-bar-adjust-thumb-portion
Adjust scroll bars for overscrolling for Gtk+, Motif and Haiku.
Non-nil means adjust the thumb in the scroll bar so it can be dragged downwards
even if the end of the buffer is shown (i.e. overscrolling).
Set to nil if you want the thumb to be at the bottom when the end of the buffer
is shown.  Also, the thumb fills the whole scroll bar when the entire buffer
is visible.  In this case you can not overscroll.Vterminal-frame
The initial frame-object, which represents Emacs's stdout.Vmouse-position-function
If non-nil, function to transform normal value of `mouse-position'.
`mouse-position' and `mouse-pixel-position' call this function, passing their
usual return value as argument, and return whatever this function returns.
This abnormal hook exists for the benefit of packages like `xt-mouse.el'
which need to do mouse handling at the Lisp level.Vmouse-highlight
If non-nil, clickable text is highlighted when mouse is over it.
If the value is an integer, highlighting is shown only after moving the
mouse, while keyboard input turns off the highlight even when the mouse
is over the clickable text.  However, the mouse shape still indicates
when the mouse is over clickable text.Vmake-pointer-invisible
If non-nil, make mouse pointer invisible while typing.
The pointer becomes visible again when the mouse is moved.

When using this, you might also want to disable highlighting of
clickable text.  See `mouse-highlight'.Vmove-frame-functions
Functions run after a frame was moved.
The functions are run with one arg, the frame that moved.Vdelete-frame-functions
Functions run before deleting a frame.
The functions are run with one arg, the frame to be deleted.
See `delete-frame'.

Note that functions in this list may be called just before the frame is
actually deleted, or some time later (or even both when an earlier function
in `delete-frame-functions' (indirectly) calls `delete-frame'
recursively).Vafter-delete-frame-functions
Functions run after deleting a frame.
The functions are run with one arg, the frame that was deleted and
which is now dead.Vmenu-bar-mode
Non-nil if Menu-Bar mode is enabled.
See the command `menu-bar-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `menu-bar-mode'.Vtab-bar-mode
Non-nil if Tab-Bar mode is enabled.
See the command `tab-bar-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `tab-bar-mode'.Vtool-bar-mode
Non-nil if Tool-Bar mode is enabled.
See the command `tool-bar-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `tool-bar-mode'.Vdefault-minibuffer-frame
Minibuffer-less frames by default use this frame's minibuffer.
Emacs consults this variable only when creating a minibuffer-less frame
and no explicit minibuffer window has been specified for that frame via
the `minibuffer' frame parameter.  Once such a frame has been created,
setting this variable does not change that frame's previous association.

This variable is local to the current terminal and cannot be buffer-local.Vresize-mini-frames
Non-nil means resize minibuffer-only frames automatically.
If this is nil, do not resize minibuffer-only frames automatically.

If this is a function, call that function with the minibuffer-only
frame that shall be resized as sole argument.  The buffer of the root
window of that frame is the buffer whose text will be eventually shown
in the minibuffer window.

Any other non-nil value means to resize minibuffer-only frames by
calling `fit-mini-frame-to-buffer'.Vfocus-follows-mouse
Non-nil if window system changes focus when you move the mouse.
You should set this variable to tell Emacs how your window manager
handles focus, since there is no way in general for Emacs to find out
automatically.

There are three meaningful values:

- The default nil should be used when your window manager follows a
  "click-to-focus" policy where you have to click the mouse inside of a
  frame in order for that frame to get focus.

- The value t should be used when your window manager has the focus
  automatically follow the position of the mouse pointer but a window
  that gains focus is not raised automatically.

- The value `auto-raise' should be used when your window manager has the
  focus automatically follow the position of the mouse pointer and a
  window that gains focus is raised automatically.

If this option is non-nil, Emacs moves the mouse pointer to the frame
selected by `select-frame-set-input-focus'.  This function is used by a
number of commands like, for example, `other-frame' and `pop-to-buffer'.
If this option is nil and your focus follows mouse window manager does
not autonomously move the mouse pointer to the newly selected frame, the
previously selected window manager window might get reselected instead
immediately.

The distinction between the values t and `auto-raise' is not needed for
"normal" frames because the window manager takes care of raising them.
Setting this to `auto-raise' will, however, override the standard
behavior of a window manager that does not automatically raise the frame
that gets focus.  Setting this to `auto-raise' is also necessary to
automatically raise child frames which are usually left alone by the
window manager.

Note that this option does not distinguish "sloppy" focus (where the
frame that previously had focus retains focus as long as the mouse
pointer does not move into another window manager window) from "strict"
focus (where a frame immediately loses focus when it's left by the mouse
pointer).

In order to extend a "focus follows mouse" policy to individual Emacs
windows, customize the variable `mouse-autoselect-window'.Vframe-resize-pixelwise
Non-nil means resize frames pixelwise.
If this option is nil, resizing a frame rounds its sizes to the frame's
current values of `frame-char-height' and `frame-char-width'.  If this
is non-nil, no rounding occurs, hence frame sizes can increase/decrease
by one pixel.

With some window managers you may have to set this to non-nil in order
to set the size of a frame in pixels, to maximize frames or to make them
fullscreen.  To resize your initial frame pixelwise, set this option to
a non-nil value in your init file.Vframe-inhibit-implied-resize
Whether frames should be resized implicitly.
If this option is nil, setting font, menu bar, tool bar, tab bar, internal
borders, fringes or scroll bars of a specific frame may resize the frame
in order to preserve the number of columns or lines it displays.  If
this option is t, no such resizing is done.  Note that the size of
fullscreen and maximized frames, the height of fullheight frames and the
width of fullwidth frames never change implicitly.

The value of this option can be also a list of frame parameters.  In
this case, resizing is inhibited when changing a parameter that
appears in that list.  The parameters currently handled by this option
include `font', `font-backend', `internal-border-width',
`menu-bar-lines', `tool-bar-lines' and `tab-bar-lines'.

Changing any of the parameters `scroll-bar-width', `scroll-bar-height',
`vertical-scroll-bars', `horizontal-scroll-bars', `left-fringe' and
`right-fringe' is handled as if the frame contained just one live
window.  This means, for example, that removing vertical scroll bars on
a frame containing several side by side windows will shrink the frame
width by the width of one scroll bar provided this option is nil and
keep it unchanged if this option is either t or a list containing
`vertical-scroll-bars'.

In GTK+ and NS that use the external tool bar, the default value is
\='(tab-bar-lines) which means that adding/removing a tab bar does
not change the frame height.  On all other types of GUI frames, the
default value is \='(tab-bar-lines tool-bar-lines) which means that
adding/removing a tool bar or tab bar does not change the frame
height.  Otherwise it's t which means the frame size never changes
implicitly when there's no window system support.

Note that when a frame is not large enough to accommodate a change of
any of the parameters listed above, Emacs may try to enlarge the frame
even if this option is non-nil.Vframe-size-history
History of frame size adjustments.
If non-nil, list recording frame size adjustment.  Adjustments are
recorded only if the first element of this list is a positive number.
Adding an adjustment decrements that number by one.

The remaining elements are the adjustments.  Each adjustment is a list
of four elements `frame', `function', `sizes' and `more'.  `frame' is
the affected frame and `function' the invoking function.  `sizes' is
usually a list of four elements `old-width', `old-height', `new-width'
and `new-height' representing the old and new sizes recorded/requested
by `function'.  `more' is a list with additional information.

The function `frame--size-history' displays the value of this variable
in a more readable form.Vtooltip-reuse-hidden-frame
Non-nil means reuse hidden tooltip frames.
When this is nil, delete a tooltip frame when hiding the associated
tooltip.  When this is non-nil, make the tooltip frame invisible only,
so it can be reused when the next tooltip is shown.

Setting this to non-nil may drastically reduce the consing overhead
incurred by creating new tooltip frames.  However, a value of non-nil
means also that intermittent changes of faces or `default-frame-alist'
are not applied when showing a tooltip in a reused frame.

This variable is effective only with the X toolkit (and there only when
Gtk+ tooltips are not used) and on Windows.Vuse-system-tooltips
Whether to use the toolkit to display tooltips.
This option is only meaningful when Emacs is built with GTK+, NS or Haiku
windowing support, and, if it's non-nil (the default), it results in
tooltips that look like those displayed by other GTK+/NS/Haiku programs,
but will not be able to display text properties inside tooltip text.Viconify-child-frame
How to handle iconification of child frames.
This variable tells Emacs how to proceed when it is asked to iconify a
child frame.  If it is nil, `iconify-frame' will do nothing when invoked
on a child frame.  If it is `iconify-top-level', Emacs will try to
iconify the top level frame associated with this child frame instead.
If it is `make-invisible', Emacs will try to make this child frame
invisible instead.

Any other value means to try iconifying the child frame.  Since such an
attempt is not honored by all window managers and may even lead to
making the child frame unresponsive to user actions, the default is to
iconify the top level frame instead.Vframe-internal-parameters
Frame parameters specific to every frame.Sscroll.o
Sxdisp.o
Fset-buffer-redisplay
Mark the current buffer for redisplay.
This function may be passed to `add-variable-watcher'.

(fn SYMBOL NEWVAL OP WHERE)Fline-pixel-height
Return height in pixels of text line in the selected window.

Value is the height in pixels of the line at point.

(fn)Fget-display-property
Get the value of the `display' property PROP at POSITION.
If OBJECT, this should be a buffer or string where the property is
fetched from.  If omitted, OBJECT defaults to the current buffer.

If PROPERTIES, look for value of PROP in PROPERTIES instead of the
properties at POSITION.

(fn POSITION PROP &optional OBJECT PROPERTIES)Fwindow-text-pixel-size
Return the dimensions of the text of WINDOW's buffer in pixels.
WINDOW must be a live window and defaults to the selected one.  The
return value is a cons of the maximum pixel-width of any text line and
the pixel-height of all the text lines in the accessible portion of
buffer text.

If FROM is a cons cell, the return value includes, in addition to the
dimensions, also a third element that provides the buffer position
from which measuring of the text dimensions was actually started.

This function exists to allow Lisp programs to adjust the dimensions
of WINDOW to the buffer text it needs to display.

The optional argument FROM, if non-nil, specifies the first text
position to consider, and defaults to the minimum accessible position
of the buffer.  If FROM is a cons, its car specifies a buffer
position, and its cdr specifies the vertical offset in pixels from
that position to the first screen line to be measured.  If FROM is t,
it stands for the minimum accessible position that starts a non-empty
line.  TO, if non-nil, specifies the last text position and defaults
to the maximum accessible position of the buffer.  If TO is t, it
stands for the maximum accessible position that ends a non-empty line.

The optional argument X-LIMIT, if non-nil, specifies the maximum X
coordinate beyond which the text should be ignored.  It is therefore
also the maximum width that the function can return.  X-LIMIT nil or
omitted means to use the pixel-width of WINDOW's body.  This default
means text of truncated lines wider than the window will be ignored;
specify a non-nil value for X-LIMIT if lines are truncated and you need
to account for the truncated text.

Use nil for X-LIMIT if you want to know how high WINDOW should become in
order to fit all of its buffer's text with the width of WINDOW
unaltered.  Use the maximum width WINDOW may assume if you intend to
change WINDOW's width.  Use t for the maximum possible value.  Since
calculating the width of long lines can take some time, it's always a
good idea to make this argument as small as possible; in particular, if
the buffer contains long lines that shall be truncated anyway.

The optional argument Y-LIMIT, if non-nil, specifies the maximum Y
coordinate beyond which the text is to be ignored; it is therefore
also the maximum height that the function can return (excluding the
height of the mode- or header-line, if any).  Y-LIMIT nil or omitted
means consider all of the accessible portion of buffer text up to the
position specified by TO.  Since calculating the text height of a
large buffer can take some time, it makes sense to specify this
argument if the size of the buffer is large or unknown.

Optional argument MODE-LINES nil or omitted means do not include the
height of the mode-, tab- or header-line of WINDOW in the return value.
If it is the symbol `mode-line', `tab-line' or `header-line', include
only the height of that line, if present, in the return value.  If t,
include the height of any of these, if present, in the return value.

IGNORE-LINE-AT-END, if non-nil, means to not add the height of the
screen line that includes TO to the returned height of the text.

(fn &optional WINDOW FROM TO X-LIMIT Y-LIMIT MODE-LINES IGNORE-LINE-AT-END)Fbuffer-text-pixel-size
Return the dimensions of whole text of BUFFER-OR-NAME in WINDOW.
BUFFER-OR-NAME must specify a live buffer or the name of a live buffer
and defaults to the current buffer.  WINDOW must be a live window and
defaults to the selected one.  The return value is a cons of the maximum
pixel-width of any text line and the pixel-height of all the text lines
of the buffer specified by BUFFER-OR-NAME.

The optional arguments X-LIMIT and Y-LIMIT have the same meaning as with
`window-text-pixel-size'.

Do not use this function if the buffer specified by BUFFER-OR-NAME is
already displayed in WINDOW.  `window-text-pixel-size' is cheaper in
that case because it does not have to temporarily show that buffer in
WINDOW.

(fn &optional BUFFER-OR-NAME WINDOW X-LIMIT Y-LIMIT)Fdisplay--line-is-continued-p
Return non-nil if the current screen line is continued on display.

(fn)Ftab-bar-height
Return the number of lines occupied by the tab bar of FRAME.
If FRAME is nil or omitted, use the selected frame.  Optional argument
PIXELWISE non-nil means return the height of the tab bar in pixels.

(fn &optional FRAME PIXELWISE)Ftool-bar-height
Return the number of lines occupied by the tool bar of FRAME.
If FRAME is nil or omitted, use the selected frame.  Optional argument
PIXELWISE non-nil means return the height of the tool bar in pixels.

(fn &optional FRAME PIXELWISE)Flong-line-optimizations-p
Return non-nil if long-line optimizations are in effect in current buffer.
See `long-line-threshold' and `large-hscroll-threshold' for what these
optimizations mean and when they are in effect.

(fn)Fdump-glyph-matrix
Dump the current matrix of the selected window to stderr.
Shows contents of glyph row structures.  With non-nil
parameter GLYPHS, dump glyphs as well.  If GLYPHS is 1 show
glyphs in short form, otherwise show glyphs in long form.

Interactively, no argument means show glyphs in short form;
with numeric argument, its value is passed as the GLYPHS flag.

(fn &optional GLYPHS)Fdump-frame-glyph-matrix
Dump the current glyph matrix of the selected frame to stderr.
Only text-mode frames have frame glyph matrices.

(fn)Fdump-glyph-row
Dump glyph row ROW to stderr.
Interactively, ROW is the prefix numeric argument and defaults to
the row which displays point.
Optional argument GLYPHS 0 means don't dump glyphs.
GLYPHS 1 means dump glyphs in short form.
GLYPHS > 1 or omitted means dump glyphs in long form.

(fn ROW &optional GLYPHS)Fdump-tab-bar-row
Dump glyph row ROW of the tab-bar of the current frame to stderr.
Interactively, ROW is the prefix numeric argument and defaults to zero.
GLYPHS 0 means don't dump glyphs.
GLYPHS 1 means dump glyphs in short form.
GLYPHS > 1 or omitted means dump glyphs in long form.

If there's no tab-bar, or if the tab-bar is not drawn by Emacs,
do nothing.

(fn ROW &optional GLYPHS)Fdump-tool-bar-row
Dump glyph row ROW of the tool-bar of the current frame to stderr.
Interactively, ROW is the prefix numeric argument and defaults to zero.
GLYPHS 0 means don't dump glyphs.
GLYPHS 1 means dump glyphs in short form.
GLYPHS > 1 or omitted means dump glyphs in long form.

If there's no tool-bar, or if the tool-bar is not drawn by Emacs,
do nothing.

(fn ROW &optional GLYPHS)Ftrace-redisplay
Toggle tracing of redisplay.
With ARG, turn tracing on if and only if ARG is positive.

(fn &optional ARG)Ftrace-to-stderr
Like `format', but print result to stderr.

(fn STRING &rest OBJECTS)Fcurrent-bidi-paragraph-direction
Return paragraph direction at point in BUFFER.
Value is either `left-to-right' or `right-to-left'.
If BUFFER is omitted or nil, it defaults to the current buffer.

Paragraph direction determines how the text in the paragraph is displayed.
In left-to-right paragraphs, text begins at the left margin of the window
and the reading direction is generally left to right.  In right-to-left
paragraphs, text begins at the right margin and is read from right to left.

See also `bidi-paragraph-direction'.

(fn &optional BUFFER)Fbidi-find-overridden-directionality
Return position between FROM and TO where directionality was overridden.

This function returns the first character position in the specified
region of OBJECT where characters have their bidirectional
properties affected in a way that might make its text look confusingly
on display.  For example, characters whose `bidi-class' property is `L',
could be forced to display as `R' by a directional override, and
likewise characters whose `bidi-class' is `R' or `AL' that are
forced to display as `L'.

If no such character is found, the function returns nil.

OBJECT is a Lisp string or buffer to search for overridden
directionality, and defaults to the current buffer if nil.
OBJECT can also be a window, in which case the function will search
the buffer displayed in that window.  Passing the window instead of
a buffer is preferable when the buffer is displayed in some window,
because this function will then be able to correctly account for
window-specific overlays, which can affect the results.

Optional argument BASE-DIR specifies the base paragraph directory
of the text.  It should be a symbol, either `left-to-right'
or `right-to-left', and defaults to `left-to-right'.

Strong directional characters `L', `R', and `AL' can have their
intrinsic directionality overridden by directional override control
characters RLO (u+202E) and LRO (u+202D).  They can also have their
directionality affected by other formatting control characters: LRE
(u+202A), RLE (u+202B), LRI (u+2066), and RLI (u+2067).  See the
function `get-char-code-property' for a way to inquire about the
`bidi-class' property of a character.  Characters whose intrinsic
directionality is weak or neutral, such as numbers or punctuation
characters, can be forced to display in a very different place with
respect of its surrounding characters, so as to make the surrounding
text confuse the user regarding what the text says.

Also see the `highlight-confusing-reorderings' function, which can be
useful in similar circumstances as this function.

(fn FROM TO OBJECT &optional BASE-DIR)Fmove-point-visually
Move point in the visual order in the specified DIRECTION.
DIRECTION can be 1, meaning move to the right, or -1, which moves to the
left.

Value is the new character position of point.

(fn DIRECTION)Fbidi-resolved-levels
Return the resolved bidirectional levels of characters at VPOS.

The resolved levels are produced by the Emacs bidi reordering engine
that implements the UBA, the Unicode Bidirectional Algorithm.  Please
read the Unicode Standard Annex 9 (UAX#9) for background information
about these levels.

VPOS is the zero-based number of the current window's screen line
for which to produce the resolved levels.  If VPOS is nil or omitted,
it defaults to the screen line of point.  If the window displays a
header line, VPOS of zero will report on the header line, and first
line of text in the window will have VPOS of 1.

Value is an array of resolved levels, indexed by glyph number.
Glyphs are numbered from zero starting from the beginning of the
screen line, i.e. the left edge of the window for left-to-right lines
and from the right edge for right-to-left lines.  The resolved levels
are produced only for the window's text area; text in display margins
is not included.

If the selected window's display is not up-to-date, or if the specified
screen line does not display text, this function returns nil.  It is
highly recommended to bind this function to some simple key, like F8,
in order to avoid these problems.

This function exists mainly for testing the correctness of the
Emacs UBA implementation, in particular with the test suite.

(fn &optional VPOS)Fformat-mode-line
Return a string formatted according to mode-line format specification.
First arg FORMAT specifies the mode line format (see `mode-line-format'
for details) to use.

By default, the format is evaluated for the currently selected window.

Optional second arg FACE specifies the face property to put on all
characters for which no face is specified.  The value nil means the
default face.  The value t means whatever face the window's mode line
currently uses (either `mode-line' or `mode-line-inactive',
depending on whether the window is the selected window or not).
An integer value means the value string has no text
properties.

Optional third and fourth args WINDOW and BUFFER specify the window
and buffer to use as the context for the formatting (defaults
are the selected window and the WINDOW's buffer).

(fn FORMAT &optional FACE WINDOW BUFFER)Finvisible-p
Non-nil if text properties at POS cause text there to be currently invisible.
POS should be a marker or a buffer position; the value of the `invisible'
property at that position in the current buffer is examined.
POS can also be the actual value of the `invisible' text or overlay
property of the text of interest, in which case the value itself is
examined.

The non-nil value returned can be t for currently invisible text that is
entirely hidden on display, or some other non-nil, non-t value if the
text is replaced by an ellipsis.

Note that whether text with `invisible' property is actually hidden on
display may depend on `buffer-invisibility-spec', which see.

(fn POS)Flookup-image-map
Lookup in image map MAP coordinates X and Y.
An image map is an alist where each element has the format (AREA ID PLIST).
An AREA is specified as either a rectangle, a circle, or a polygon:
A rectangle is a cons (rect . ((x0 . y0) . (x1 . y1))) specifying the
pixel coordinates of the upper left and bottom right corners.
A circle is a cons (circle . ((x0 . y0) . r)) specifying the center
and the radius of the circle; r may be a float or integer.
A polygon is a cons (poly . [x0 y0 x1 y1 ...]) where each pair in the
vector describes one corner in the polygon.
Returns the alist element for the first matching AREA in MAP.

(fn MAP X Y)Vscroll-minibuffer-conservatively
Non-nil means scroll conservatively in minibuffer windows.
When the value is nil, scrolling in minibuffer windows obeys the
settings of `scroll-conservatively'.Vinhibit-message
Non-nil means calls to `message' are not displayed.
They are still logged to the *Messages* buffer.

Do NOT set this globally to a non-nil value, as doing that will
disable messages everywhere, including in I-search and other
places where they are necessary.  This variable is intended to
be let-bound around code that needs to disable messages temporarily.Vmessages-buffer-name
The name of the buffer where messages are logged.
This is normally "*Messages*", but can be rebound by packages that
wish to redirect messages to a different buffer.  (If the buffer
doesn't exist, it will be created and put into
`messages-buffer-mode'.)Vx-stretch-cursor
Non-nil means draw block cursor as wide as the glyph under it.
For example, if a block cursor is over a tab, it will be drawn as
wide as that tab on the display.Vshow-trailing-whitespace
Non-nil means highlight trailing whitespace.
The face used for trailing whitespace is `trailing-whitespace'.Vmode-line-compact
Non-nil means that mode lines should be compact.
This means that repeating spaces will be replaced with a single space.
If this variable is `long', only mode lines that are wider than the
currently selected window are compressed.Vnobreak-char-display
Control highlighting of non-ASCII space and hyphen chars.
If the value is t, Emacs highlights non-ASCII chars which have the
same appearance as an ASCII space or hyphen, using the `nobreak-space'
or `nobreak-hyphen' face respectively.

All of the non-ASCII characters in the Unicode horizontal whitespace
character class, as well as U+00AD (soft hyphen), U+2010 (hyphen), and
U+2011 (non-breaking hyphen) are affected.

Any other non-nil value means to display these characters as an escape
glyph followed by an ordinary space or hyphen.

A value of nil means no special handling of these characters.Vnobreak-char-ascii-display
Control display of non-ASCII space and hyphen chars.
If the value of this variable is nil, the default, Emacs displays
non-ASCII chars which have the same appearance as an ASCII space
or hyphen as themselves, with the `nobreak-space' or `nobreak-hyphen'
face, respectively.

If the value is t, these characters are displayed as their ASCII
counterparts: whitespace characters as ASCII space, hyphen characters
as ASCII hyphen (a.k.a. "dash"), using the `nobreak-space' or
the `nobreak-hyphen' face.

This variable has effect only if `nobreak-char-display' is t;
otherwise it is ignored.

All of the non-ASCII characters in the Unicode horizontal whitespace
character class, as well as U+00AD (soft hyphen), U+2010 (hyphen), and
U+2011 (non-breaking hyphen) are affected.Vvoid-text-area-pointer
The pointer shape to show in void text areas.
A value of nil means to show the text pointer.  Other options are
`arrow', `text', `hand', `vdrag', `hdrag', `nhdrag', `modeline', and
`hourglass'.Vinhibit-redisplay
Non-nil means don't actually do any redisplay.
This is used for internal purposes.Vglobal-mode-string
String (or mode line construct) included (normally) in `mode-line-misc-info'.Voverlay-arrow-position
Marker for where to display an arrow on top of the buffer text.
This must be the beginning of a line in order to work.
See also `overlay-arrow-string'.Voverlay-arrow-string
String to display as an arrow in text-mode frames.
See also `overlay-arrow-position'.Voverlay-arrow-variable-list
List of variables (symbols) which hold markers for overlay arrows.
The symbols on this list are examined during redisplay to determine
where to display overlay arrows.
See also `overlay-arrow-string'.Vscroll-step
The number of lines to try scrolling a window by when point moves out.
If that fails to bring point back on frame, point is centered instead.
If this is zero, point is always centered after it moves off frame.
If you want scrolling to always be a line at a time, you should set
`scroll-conservatively' to a large value rather than set this to 1.Vscroll-conservatively
Scroll up to this many lines, to bring point back on screen.
If point moves off-screen, redisplay will scroll by up to
`scroll-conservatively' lines in order to bring point just barely
onto the screen again.  If that cannot be done, then redisplay
recenters point as usual.

If the value is greater than 100, redisplay will never recenter point,
but will always scroll just enough text to bring point into view, even
if you move far away.

A value of zero means always recenter point if it moves off screen.Vscroll-margin
Number of lines of margin at the top and bottom of a window.
Trigger automatic scrolling whenever point gets within this many lines
of the top or bottom of the window (see info node `Auto Scrolling').Vmaximum-scroll-margin
Maximum effective value of `scroll-margin'.
Given as a fraction of the current window's lines.  The value should
be a floating point number between 0.0 and 0.5.  The effective maximum
is limited to (/ (1- window-lines) 2).  Non-float values for this
variable are ignored and the default 0.25 is used instead.Vdisplay-pixels-per-inch
Pixels per inch value for non-window system displays.
Value is a number or a cons (WIDTH-DPI . HEIGHT-DPI).Vdebug-end-pos
Don't ask.Vtruncate-partial-width-windows
Non-nil means truncate lines in windows narrower than the frame.
For an integer value, truncate lines in each window narrower than the
full frame width, provided the total window width in column units is less
than that integer; otherwise, respect the value of `truncate-lines'.
The total width of the window is as returned by `window-total-width', it
includes the fringes, the continuation and truncation glyphs, the
display margins (if any), and the scroll bar

For any other non-nil value, truncate lines in all windows that do
not span the full frame width.

A value of nil means to respect the value of `truncate-lines'.

If `word-wrap' is enabled, you might want to reduce the value of this.

Don't set this to a non-nil value when `visual-line-mode' is
turned on, as it could produce confusing results.Vword-wrap-by-category
Non-nil means also wrap after characters of a certain category.
Normally when `word-wrap' is on, Emacs only breaks lines after
whitespace characters.  When this option is turned on, Emacs also
breaks lines after characters that have the "|" category (defined in
characters.el).  This is useful for allowing breaking after CJK
characters and improves the word-wrapping for CJK text mixed with
Latin text.

If this variable is set using Customize, Emacs automatically loads
kinsoku.el.  When kinsoku.el is loaded, Emacs respects kinsoku rules
when breaking lines.  That means characters with the ">" category
don't appear at the beginning of a line (e.g., FULLWIDTH COMMA), and
characters with the "<" category don't appear at the end of a line
(e.g., LEFT DOUBLE ANGLE BRACKET).Vline-number-display-limit
Maximum buffer size for which line number should be displayed.
If the buffer is bigger than this, the line number does not appear
in the mode line.  A value of nil means no limit.Vline-number-display-limit-width
Maximum line width (in characters) for line number display.
If the average length of the lines near point is bigger than this, then the
line number may be omitted from the mode line.Vhighlight-nonselected-windows
Non-nil means highlight active region even in nonselected windows.
When nil (the default), the active region is only highlighted when
the window is selected.Vmultiple-frames
Non-nil if more than one frame is visible on this display.
Minibuffer-only frames don't count, but iconified frames do.
This variable is not guaranteed to be accurate except while processing
`frame-title-format' and `icon-title-format'.Vframe-title-format
Template for displaying the title bar of visible frames.
(Assuming the window manager supports this feature.)

This variable has the same structure as `mode-line-format', except that
the %c, %C, and %l constructs are ignored.  It is used only on frames for
which no explicit name has been set (see `modify-frame-parameters').Vicon-title-format
Template for displaying the title bar of an iconified frame.
(Assuming the window manager supports this feature.)
If the value is a string, it should have the same structure
as `mode-line-format' (which see), and is used only on frames
for which no explicit name has been set (see `modify-frame-parameters').
If the value is t, that means use `frame-title-format' for
iconified frames.Vmessage-log-max
Maximum number of lines to keep in the message log buffer.
If nil, disable message logging.  If t, log messages but don't truncate
the buffer when it becomes large.Vwindow-scroll-functions
List of functions to call before redisplaying a window with scrolling.
Each function is called with two arguments, the window and its new
display-start position.
These functions are called whenever the `window-start' marker is modified,
either to point into another buffer (e.g. via `set-window-buffer') or another
place in the same buffer.
When each function is called, the `window-start' marker of its window
argument has been already set to the new value, and the buffer which that
window will display is set to be the current buffer.
Note that the value of `window-end' is not valid when these functions are
called.

Warning: Do not use this feature to alter the way the window
is scrolled.  It is not designed for that, and such use probably won't
work.Vmouse-autoselect-window
Non-nil means autoselect window with mouse pointer.
If nil, do not autoselect windows.
A positive number means delay autoselection by that many seconds: a
window is autoselected only after the mouse has remained in that
window for the duration of the delay.
A negative number has a similar effect, but causes windows to be
autoselected only after the mouse has stopped moving.  (Because of
the way Emacs compares mouse events, you will occasionally wait twice
that time before the window gets selected.)
Any other value means to autoselect window instantaneously when the
mouse pointer enters it.

Autoselection selects the minibuffer only if it is active, and never
unselects the minibuffer if it is active.

If you want to use the mouse to autoselect a window on another frame,
make sure that (1) your window manager has focus follow the mouse and
(2) the value of the option `focus-follows-mouse' matches the policy
of your window manager.Vauto-resize-tab-bars
Non-nil means automatically resize tab-bars.
This dynamically changes the tab-bar's height to the minimum height
that is needed to make all tab-bar items visible.
If value is `grow-only', the tab-bar's height is only increased
automatically; to decrease the tab-bar height, use \[recenter],
after setting `recenter-redisplay' to the value of t.Vauto-raise-tab-bar-buttons
Non-nil means raise tab-bar buttons when the mouse moves over them.Vauto-resize-tool-bars
Non-nil means automatically resize tool-bars.
This dynamically changes the tool-bar's height to the minimum height
that is needed to make all tool-bar items visible.
If value is `grow-only', the tool-bar's height is only increased
automatically; to decrease the tool-bar height, use \[recenter],
after setting `recenter-redisplay' to the value of t.Vauto-raise-tool-bar-buttons
Non-nil means raise tool-bar buttons when the mouse moves over them.Vmake-cursor-line-fully-visible
Whether to scroll the window if the cursor line is not fully visible.
If the value is non-nil, Emacs scrolls or recenters the window to make
the cursor line fully visible.  The value could also be a function, which
is called with a single argument, the window to be scrolled, and should
return non-nil if the partially-visible cursor requires scrolling the
window, nil if it's okay to leave the cursor partially-visible.Vmake-window-start-visible
Whether to ensure `window-start' position is never invisible.Vtab-bar-border
Border below tab-bar in pixels.
If an integer, use it as the height of the border.
If it is one of `internal-border-width' or `border-width', use the
value of the corresponding frame parameter.
Otherwise, no border is added below the tab-bar.Vtab-bar-button-margin
Margin around tab-bar buttons in pixels.
If an integer, use that for both horizontal and vertical margins.
Otherwise, value should be a pair of integers `(HORZ . VERT)' with
HORZ specifying the horizontal margin, and VERT specifying the
vertical margin.Vtab-bar-button-relief
Relief thickness of tab-bar buttons.Vtool-bar-border
Border below tool-bar in pixels.
If an integer, use it as the height of the border.
If it is one of `internal-border-width' or `border-width', use the
value of the corresponding frame parameter.
Otherwise, no border is added below the tool-bar.Vtool-bar-button-margin
Margin around tool-bar buttons in pixels.
If an integer, use that for both horizontal and vertical margins.
Otherwise, value should be a pair of integers `(HORZ . VERT)' with
HORZ specifying the horizontal margin, and VERT specifying the
vertical margin.Vtool-bar-button-relief
Relief thickness of tool-bar buttons.Vtool-bar-style
Tool bar style to use.
It can be one of
 image            - show images only
 text             - show text only
 both             - show both, text below image
 both-horiz       - show text to the right of the image
 text-image-horiz - show text to the left of the image
 any other        - use system default or image if no system default.

This variable only affects the GTK+ toolkit version of Emacs.Vtool-bar-max-label-size
Maximum number of characters a label can have to be shown.
The tool bar style must also show labels for this to have any effect, see
`tool-bar-style'.Vfontification-functions
List of functions to call to fontify regions of text.
Each function is called with one argument POS.  Functions must
fontify a region starting at POS in the current buffer, and give
fontified regions the property `fontified' with a non-nil value.

Note that, when `long-line-optimizations-p' is non-nil in the buffer,
these functions are called as if they were in a `with-restriction' form,
with a `long-line-optimizations-in-fontification-functions' label and
with the buffer narrowed to a portion around POS whose size is
specified by `long-line-optimizations-region-size'.Vunibyte-display-via-language-environment
Non-nil means display unibyte text according to language environment.
Specifically, this means that raw bytes in the range 160-255 decimal
are displayed by converting them to the equivalent multibyte characters
according to the current language environment.  As a result, they are
displayed according to the current fontset.

Note that this variable affects only how these bytes are displayed,
but does not change the fact they are interpreted as raw bytes.Vmax-mini-window-height
Maximum height for resizing mini-windows (the minibuffer and the echo area).
If a float, it specifies the maximum height in units of the
mini-window frame's height.
If an integer, it specifies the maximum height in units of the
mini-window frame's default font's height.Vresize-mini-windows
How to resize mini-windows (the minibuffer and the echo area).
A value of nil means don't automatically resize mini-windows.
A value of t means resize them to fit the text displayed in them.
A value of `grow-only', the default, means let mini-windows grow only;
they return to their normal size when the minibuffer is closed, or the
echo area becomes empty.

This variable does not affect resizing of the minibuffer window of
minibuffer-only frames.  These are handled by `resize-mini-frames'
only.Vblink-cursor-alist
Alist specifying how to blink the cursor off.
Each element has the form (ON-STATE . OFF-STATE).  Whenever the
`cursor-type' frame-parameter or variable equals ON-STATE,
comparing using `equal', Emacs uses OFF-STATE to specify
how to blink it off.  ON-STATE and OFF-STATE are values for
the `cursor-type' frame parameter.

If a frame's ON-STATE has no entry in this list,
the frame's other specifications determine how to blink the cursor off.Vauto-hscroll-mode
Allow or disallow automatic horizontal scrolling of windows.
The value `current-line' means the line displaying point in each window
is automatically scrolled horizontally to make point visible.
Any other non-nil value means all the lines in a window are automatically
scrolled horizontally to make point visible.Vhscroll-margin
How many columns away from the window edge point is allowed to get
before automatic hscrolling will horizontally scroll the window.Vhscroll-step
How many columns to scroll the window when point gets too close to the edge.
When point is less than `hscroll-margin' columns from the window
edge, automatic hscrolling will scroll the window by the amount of columns
determined by this variable.  If its value is a positive integer, scroll that
many columns.  If it's a positive floating-point number, it specifies the
fraction of the window's width to scroll.  If it's nil or zero, point will be
centered horizontally after the scroll.  Any other value, including negative
numbers, are treated as if the value were zero.

Automatic hscrolling always moves point outside the scroll margin, so if
point was more than scroll step columns inside the margin, the window will
scroll more than the value given by the scroll step.

Note that the lower bound for automatic hscrolling specified by `scroll-left'
and `scroll-right' overrides this variable's effect.Vmessage-truncate-lines
If non-nil, messages are truncated when displaying the echo area.
Bind this around calls to `message' to let it take effect.Vmenu-bar-update-hook
Normal hook run to update the menu bar definitions.
Redisplay runs this hook before it redisplays the menu bar.
This is used to update menus such as Buffers, whose contents depend on
various data.Vmenu-updating-frame
Frame for which we are updating a menu.
The enable predicate for a menu binding should check this variable.Vinhibit-menubar-update
Non-nil means don't update menu bars.  Internal use only.Vwrap-prefix
Prefix prepended to all continuation lines at display time.
The value may be a string, an image, or a stretch-glyph; it is
interpreted in the same way as the value of a `display' text property.

This variable is overridden by any `wrap-prefix' text or overlay
property.

To add a prefix to non-continuation lines, use `line-prefix'.Vline-prefix
Prefix prepended to all non-continuation lines at display time.
The value may be a string, an image, or a stretch-glyph; it is
interpreted in the same way as the value of a `display' text property.

This variable is overridden by any `line-prefix' text or overlay
property.

To add a prefix to continuation lines, use `wrap-prefix'.Vdisplay-line-numbers
Non-nil means display line numbers.

If the value is t, display the absolute number of each line of a buffer
shown in a window.  Absolute line numbers count from the beginning of
the current narrowing, or from buffer beginning.  The variable
`display-line-numbers-offset', if non-zero, is a signed offset added
to each absolute line number; it also forces line numbers to be counted
from the beginning of the buffer, as if `display-line-numbers-widen'
were non-nil.  It has no effect when line numbers are not absolute.

If the value is `relative', display for each line not containing the
window's point its relative number instead, i.e. the number of the line
relative to the line showing the window's point.

In either case, line numbers are displayed at the beginning of each
non-continuation line that displays buffer text, i.e. after each newline
character that comes from the buffer.  The value `visual' is like
`relative' but counts screen lines instead of buffer lines.  In practice
this means that continuation lines count as well when calculating the
relative number of a line.

Lisp programs can disable display of a line number of a particular
buffer line by putting the `display-line-numbers-disable' text property
or overlay property on the first visible character of that line.Vdisplay-line-numbers-width
Minimum width of space reserved for line number display.
A positive number means reserve that many columns for line numbers,
even if the actual number needs less space.
The default value of nil means compute the space dynamically.
Any other value is treated as nil.Vdisplay-line-numbers-current-absolute
Non-nil means display absolute number of current line.
This variable has effect only when `display-line-numbers' is
either `relative' or `visual'.Vdisplay-line-numbers-widen
Non-nil means display line numbers disregarding any narrowing.Vdisplay-line-numbers-offset
A signed integer added to each absolute line number.
When this variable is non-zero, line numbers are always counted from
the beginning of the buffer even if `display-line-numbers-widen' is nil.
It has no effect when set to 0, or when line numbers are not absolute.Vdisplay-fill-column-indicator
Non-nil means display the fill column indicator.
If you set this non-nil, make sure `display-fill-column-indicator-character'
is also non-nil.
See Info node `Displaying Boundaries' for details.Vdisplay-fill-column-indicator-column
Column for indicator when `display-fill-column-indicator' is non-nil.
The default value is t which means that the indicator
will use the `fill-column' variable.  If it is set to an integer the
indicator will be drawn in that column.
See Info node `Displaying Boundaries' for details.Vdisplay-fill-column-indicator-character
Character to draw the indicator when `display-fill-column-indicator' is non-nil.
A good candidate is U+2502, and an alternative is (ascii 124) if the
font of `fill-column-indicator' face does not support Unicode characters.
See Info node `Displaying Boundaries' for details.Vdisplay-line-numbers-major-tick
If an integer N > 0, highlight line number of every Nth line.
The line number is shown with the `line-number-major-tick' face.
Otherwise, no special highlighting is done every Nth line.
Note that major ticks take precedence over minor ticks.Vdisplay-line-numbers-minor-tick
If an integer N > 0, highlight line number of every Nth line.
The line number is shown with the `line-number-minor-tick' face.
Otherwise, no special highlighting is done every Nth line.
Note that major ticks take precedence over minor ticks.Vinhibit-eval-during-redisplay
Non-nil means don't eval Lisp during redisplay.Vinhibit-free-realized-faces
Non-nil means don't free realized faces.  Internal use only.Vinhibit-bidi-mirroring
Non-nil means don't mirror characters even when bidi context requires that.
Intended for use during debugging and for testing bidi display;
see biditest.el in the test suite.Vbidi-inhibit-bpa
Non-nil means inhibit the Bidirectional Parentheses Algorithm.
Disabling the BPA makes redisplay faster, but might produce incorrect
display reordering of bidirectional text with embedded parentheses and
other bracket characters whose `paired-bracket' Unicode property is
non-nil, see `get-char-code-property'.Vinhibit-try-window-id
Inhibit try_window_id display optimization.Vinhibit-try-window-reusing
Inhibit try_window_reusing display optimization.Vinhibit-try-cursor-movement
Inhibit try_cursor_movement display optimization.Voverline-margin
Space between overline and text, in pixels.
The default value is 2: the height of the overline (1 pixel) plus 1 pixel
margin to the character height.Vunderline-minimum-offset
Minimum distance between baseline and underline.
This can improve legibility of underlined text at small font sizes,
particularly when using variable `x-use-underline-position-properties'
with fonts that specify an UNDERLINE_POSITION relatively close to the
baseline.  The default value is 1.Vdisplay-hourglass
Non-nil means show an hourglass pointer, when Emacs is busy.
This feature only works when on a window system that can change
cursor shapes.Vhourglass-delay
Seconds to wait before displaying an hourglass pointer when Emacs is busy.Vpre-redisplay-function
Function run just before redisplay.
It is called with one argument, which is the set of windows that are to
be redisplayed.  This set can be nil (meaning, only the selected window),
or t (meaning all windows).Vglyphless-char-display
Char-table defining glyphless characters.
Each element, if non-nil, should be one of the following:
  an ASCII acronym string: display this string in a box
  `hex-code':   display the hexadecimal code of a character in a box
  `empty-box':  display as an empty box
  `thin-space': display as 1-pixel width space
  `zero-width': don't display
Any other value is interpreted as `empty-box'.
An element may also be a cons cell (GRAPHICAL . TEXT), which specifies the
display method for graphical terminals and text terminals respectively.
GRAPHICAL and TEXT should each have one of the values listed above.

The char-table has one extra slot to control the display of characters
for which no font is found on graphical terminals, and characters that
cannot be displayed by text-mode terminals.  Its value should be an
ASCII acronym string, `hex-code', `empty-box', or `thin-space'.  It
could also be a cons cell of any two of these, to specify separate
values for graphical and text terminals.  The default is `empty-box'.

With the obvious exception of `zero-width', all the other representations
are displayed using the face `glyphless-char'.

If a character has a non-nil entry in an active display table, the
display table takes effect; in this case, Emacs does not consult
`glyphless-char-display' at all.Vdebug-on-message
If non-nil, debug if a message matching this regexp is displayed.Vset-message-function
If non-nil, function to handle display of echo-area messages.
The function is called with one argument that is the text of a message.
If this function returns nil, the message is displayed in the echo area
as usual.  If the function returns a string, the returned string is
displayed in the echo area.  If this function returns any other non-nil
value, this means that the message was already handled, and the original
message text will not be displayed in the echo area.

Also see `clear-message-function' (which can be used to clear the
message displayed by this function), and `command-error-function'
(which controls how error messages are displayed).Vclear-message-function
If non-nil, function to clear echo-area messages.
Usually this function is called when the next input event arrives.
It is expected to clear the message displayed by its counterpart
function specified by `set-message-function'.

The function is called without arguments.

If this function returns a value that isn't `dont-clear-message', the
message is cleared from the echo area as usual.  If this function
returns `dont-clear-message', this means that the message was already
handled, and the original message text will not be cleared from the
echo area.Vredisplay--all-windows-cause
Code of the cause for redisplaying all windows.
Internal use only.Vredisplay--mode-lines-cause
Code of the cause for redisplaying mode lines.
Internal use only.Vredisplay--inhibit-bidi
Non-nil means it is not safe to attempt bidi reordering for display.Vdisplay-raw-bytes-as-hex
Non-nil means display raw bytes in hexadecimal format.
The default is to use octal format (\200) whereas hexadecimal (\x80)
may be more familiar to users.Vmouse-fine-grained-tracking
Non-nil for pixelwise mouse-movement.
When nil, mouse-movement events will not be generated as long as the
mouse stays within the extent of a single glyph (except for images).
When nil and `mouse-prefer-closest-glyph' is non-nil, mouse-movement
events will instead not be generated as long as the mouse stays within
the extent of a single left/right half glyph (except for images).Vtab-bar--dragging-in-progress
Non-nil when maybe dragging tab bar item.Vredisplay-skip-initial-frame
Non-nil means skip redisplay of the initial frame.
The initial frame is the text-mode frame used by Emacs internally during
the early stages of startup.  That frame is not displayed anywhere, so
skipping it is best except in special circumstances such as running
redisplay tests in batch mode.Vredisplay-skip-fontification-on-input
Skip `fontification_functions` when there is input pending.
If non-nil and there was input pending at the beginning of the command,
the `fontification_functions` hook is not run.  This usually does not
affect the display because redisplay is completely skipped anyway if input
was pending, but it can make scrolling smoother by avoiding
unnecessary fontification.
It is similar to `fast-but-imprecise-scrolling' with similar tradeoffs,
but with the advantage that it should only affect the behavior when Emacs
has trouble keeping up with the incoming input rate.Vredisplay-adhoc-scroll-in-resize-mini-windows
If nil always use normal scrolling in minibuffer windows.
Otherwise, use custom-tailored code after resizing minibuffer windows to try
and display the most important part of the minibuffer.Vcomposition-break-at-point
If non-nil, prevent auto-composition of characters around point.
This makes it easier to edit character sequences that are
composed on display.Vmax-redisplay-ticks
Maximum number of redisplay ticks before aborting redisplay of a window.

This enables aborting the display of a window if the amount of
low-level redisplay operations exceeds the value of this variable.
When display of a window is aborted due to this reason, the buffer
shown in that window will not have its windows redisplayed until the
buffer is modified or until you type \[recenter-top-bottom] with one
of its windows selected.  You can also decide to kill the buffer and
visit it in some other way, like under `so-long-mode' or literally.

The default value is zero, which disables this feature.
The recommended non-zero value is between 100000 and 1000000,
depending on your patience and the speed of your system.Smenu.o
Fmenu-bar-menu-at-x-y
Return the menu-bar menu on FRAME at pixel coordinates X, Y.
X and Y are frame-relative pixel coordinates, assumed to define
a location within the menu bar.
If FRAME is nil or omitted, it defaults to the selected frame.

Value is the symbol of the menu at X/Y, or nil if the specified
coordinates are not within the FRAME's menu bar.  The symbol can
be used to look up the menu like this:

     (lookup-key MAP [menu-bar SYMBOL])

where MAP is either the current global map or the current local map,
since menu-bar items come from both.

This function can return non-nil only on a text-terminal frame
or on an X frame that doesn't use any GUI toolkit.  Otherwise,
Emacs does not manage the menu bar and cannot convert coordinates
into menu items.

(fn X Y &optional FRAME)Fx-popup-menu
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 pixels from the top left
corner of WINDOW.  (WINDOW may be a window or a frame object.)
This controls the position of the top left of the menu as a whole.
If POSITION is t, it means to use the current mouse position.

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.

If REAL-DEFINITION is nil, that puts a nonselectable string in the menu.
Otherwise, REAL-DEFINITION should be a valid key binding definition.

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 the
list of events corresponding to the user's choice. Note that
`x-popup-menu' does not actually execute the command bound to that
sequence 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.

If POSITION is nil, don't display the menu at all, just precalculate the
cached information about equivalent key sequences.

If the user gets rid of the menu without making a valid choice, for
instance by clicking the mouse away from a valid choice or by typing
keyboard input, then this normally results in a quit and
`x-popup-menu' does not return.  But if POSITION is a mouse button or
touch screen event (indicating that the user invoked the menu with the
a pointing device) then no quit occurs and `x-popup-menu' returns
nil.

(fn POSITION MENU)Fx-popup-dialog
Pop up a dialog box and return user's selection.
POSITION specifies which frame to use.
This is normally a mouse button event or a window or frame.
If POSITION is t, it means to use the frame the mouse is on.
The dialog box appears in the middle of the specified frame.

CONTENTS specifies the alternatives to display in the dialog box.
It is a list of the form (DIALOG ITEM1 ITEM2...).
Each ITEM is a cons cell (STRING . VALUE).
The return value is VALUE from the chosen item.

An ITEM may also be just a string--that makes a nonselectable item.
An ITEM may also be nil--that means to put all preceding items
on the left of the dialog box and all following items on the right.
(By default, approximately half appear on each side.)

If HEADER is non-nil, the frame title for the box is "Information",
otherwise it is "Question".

If the user gets rid of the dialog box without making a valid choice,
for instance using the window manager, then this produces a quit and
`x-popup-dialog' does not return.

(fn POSITION CONTENTS &optional HEADER)Vx-pre-popup-menu-hook
Hook run before `x-popup-menu' displays a popup menu.
It is only run before the menu is really going to be displayed.  It
won't be run if `x-popup-menu' fails or returns for some other reason
(such as the keymap is invalid).Swindow.o
Fwindowp
Return t if OBJECT is a window and nil otherwise.

(fn OBJECT)Fwindow-valid-p
Return t if OBJECT is a valid window and nil otherwise.
A valid window is either a window that displays a buffer or an internal
window.  Windows that have been deleted are not valid.

(fn OBJECT)Fwindow-live-p
Return t if OBJECT is a live window and nil otherwise.
A live window is a window that displays a buffer.
Internal windows and deleted windows are not live.

(fn OBJECT)Fwindow-frame
Return the frame that window WINDOW is on.
WINDOW must be a valid window and defaults to the selected one.

(fn &optional WINDOW)Fframe-root-window
Return the root window of FRAME-OR-WINDOW.
If omitted, FRAME-OR-WINDOW defaults to the currently selected frame.
With a frame argument, return that frame's root window.
With a window argument, return the root window of that window's frame.

(fn &optional FRAME-OR-WINDOW)Fminibuffer-window
Return the minibuffer window for frame FRAME.
If FRAME is omitted or nil, it defaults to the selected frame.

(fn &optional FRAME)Fwindow-minibuffer-p
Return t if WINDOW is a minibuffer window.
WINDOW must be a valid window and defaults to the selected one.

(fn &optional WINDOW)Fframe-first-window
Return the topmost, leftmost live window on FRAME-OR-WINDOW.
If omitted, FRAME-OR-WINDOW defaults to the currently selected frame.
Else if FRAME-OR-WINDOW denotes a valid window, return the first window
of that window's frame.  If FRAME-OR-WINDOW denotes a live frame, return
the first window of that frame.

(fn &optional FRAME-OR-WINDOW)Fframe-selected-window
Return the selected window of FRAME-OR-WINDOW.
If omitted, FRAME-OR-WINDOW defaults to the currently selected frame.
Else if FRAME-OR-WINDOW denotes a valid window, return the selected
window of that window's frame.  If FRAME-OR-WINDOW denotes a live frame,
return the selected window of that frame.

(fn &optional FRAME-OR-WINDOW)Fframe-old-selected-window
Return old selected window of FRAME.
FRAME must be a live frame and defaults to the selected one.

The return value is the window selected on FRAME the last time window
change functions were run for FRAME.

(fn &optional FRAME)Fset-frame-selected-window
Set selected window of FRAME to WINDOW.
FRAME must be a live frame and defaults to the selected one.  If FRAME
is the selected frame, this makes WINDOW the selected window.  Optional
argument NORECORD non-nil means to neither change the order of recently
selected windows nor the buffer list.  WINDOW must denote a live window.
Return WINDOW.

(fn FRAME WINDOW &optional NORECORD)Fselected-window
Return the selected window.
The selected window is the window in which the standard cursor for
selected windows appears and to which many commands apply.

Also see `old-selected-window' and `minibuffer-selected-window'.

(fn)Fold-selected-window
Return the old selected window.
The return value is the window selected the last time window change
functions were run.

(fn)Fselect-window
Select WINDOW which must be a live window.
Also make WINDOW's frame the selected frame and WINDOW that frame's
selected window.  In addition, make WINDOW's buffer current and set its
buffer's value of `point' to the value of WINDOW's `window-point'.
Return WINDOW.

Optional second arg NORECORD non-nil means do not put this buffer at the
front of the buffer list and do not make this window the most recently
selected one.  Also, do not mark WINDOW for redisplay unless NORECORD
equals the special symbol `mark-for-redisplay'.

Run `buffer-list-update-hook' unless NORECORD is non-nil.  Note that
applications and internal routines often select a window temporarily for
various purposes; mostly, to simplify coding.  As a rule, such
selections should not be recorded and therefore will not pollute
`buffer-list-update-hook'.  Selections that "really count" are those
causing a visible change in the next redisplay of WINDOW's frame and
should always be recorded.  So if you think of running a function each
time a window gets selected, put it on `buffer-list-update-hook' or
`window-selection-change-functions'.

Also note that the main editor command loop sets the current buffer to
the buffer of the selected window before each command.

(fn WINDOW &optional NORECORD)Fwindow-buffer
Return the buffer displayed in window WINDOW.
If WINDOW is omitted or nil, it defaults to the selected window.
Return nil for an internal window or a deleted window.

(fn &optional WINDOW)Fwindow-old-buffer
Return the old buffer displayed by WINDOW.
WINDOW must be a live window and defaults to the selected one.

The return value is the buffer shown in WINDOW at the last time window
change functions were run.  It is nil if WINDOW was created after
that.  It is t if WINDOW has been restored from a window configuration
after that.

(fn &optional WINDOW)Fwindow-parent
Return the parent window of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.
Return nil for a window with no parent (e.g. a root window).

(fn &optional WINDOW)Fwindow-top-child
Return the topmost child window of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.
Return nil if WINDOW is a live window (live windows have no children).
Return nil if WINDOW is an internal window whose children form a
horizontal combination.

(fn &optional WINDOW)Fwindow-left-child
Return the leftmost child window of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.
Return nil if WINDOW is a live window (live windows have no children).
Return nil if WINDOW is an internal window whose children form a
vertical combination.

(fn &optional WINDOW)Fwindow-next-sibling
Return the next sibling window of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.
Return nil if WINDOW has no next sibling.

(fn &optional WINDOW)Fwindow-prev-sibling
Return the previous sibling window of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.
Return nil if WINDOW has no previous sibling.

(fn &optional WINDOW)Fwindow-combination-limit
Return combination limit of window WINDOW.
WINDOW must be a valid window used in horizontal or vertical combination.
If the return value is nil, child windows of WINDOW can be recombined with
WINDOW's siblings.  A return value of t means that child windows of
WINDOW are never (re-)combined with WINDOW's siblings.

(fn WINDOW)Fset-window-combination-limit
Set combination limit of window WINDOW to LIMIT; return LIMIT.
WINDOW must be a valid window used in horizontal or vertical combination.
If LIMIT is nil, child windows of WINDOW can be recombined with WINDOW's
siblings.  LIMIT t means that child windows of WINDOW are never
(re-)combined with WINDOW's siblings.  Other values are reserved for
future use.

(fn WINDOW LIMIT)Fwindow-use-time
Return the use time of window WINDOW.
WINDOW must specify a live window and defaults to the selected one.

The window with the highest use time is usually the one most recently
selected by calling `select-window' with NORECORD nil.  The window with
the lowest use time is usually the least recently selected one chosen in
such a way.

Note that the use time of a window can be also changed by calling
`window-bump-use-time' for that window.

(fn &optional WINDOW)Fwindow-bump-use-time
Mark WINDOW as second most recently used.
WINDOW must specify a live window.

If WINDOW is not selected and the selected window has the highest use
time of all windows, set the use time of WINDOW to that of the selected
window, increase the use time of the selected window by one and return
the new use time of WINDOW.  Otherwise, do nothing and return nil.

(fn &optional WINDOW)Fwindow-pixel-width
Return the width of window WINDOW in pixels.
WINDOW must be a valid window and defaults to the selected one.

The return value includes the fringes and margins of WINDOW as well as
any vertical dividers or scroll bars belonging to WINDOW.  If WINDOW is
an internal window, its pixel width is the width of the screen areas
spanned by its children.

(fn &optional WINDOW)Fwindow-pixel-height
Return the height of window WINDOW in pixels.
WINDOW must be a valid window and defaults to the selected one.

The return value includes the mode line and header line and the bottom
divider, if any.  If WINDOW is an internal window, its pixel height is
the height of the screen areas spanned by its children.

(fn &optional WINDOW)Fwindow-old-pixel-width
Return old total pixel width of WINDOW.
WINDOW must be a valid window and defaults to the selected one.

The return value is the total pixel width of WINDOW after the last
time window change functions found WINDOW live on its frame.  It is
zero if WINDOW was created after that.

(fn &optional WINDOW)Fwindow-old-pixel-height
Return old total pixel height of WINDOW.
WINDOW must be a valid window and defaults to the selected one.

The return value is the total pixel height of WINDOW after the last
time window change functions found WINDOW live on its frame.  It is
zero if WINDOW was created after that.

(fn &optional WINDOW)Fwindow-total-height
Return the height of window WINDOW in lines.
WINDOW must be a valid window and defaults to the selected one.

The return value includes the heights of WINDOW's mode and header line
and its bottom divider, if any.  If WINDOW is an internal window, the
total height is the height of the screen areas spanned by its children.

If WINDOW's pixel height is not an integral multiple of its frame's
character height, the number of lines occupied by WINDOW is rounded
internally.  This is done in a way such that, if WINDOW is a parent
window, the sum of the total heights of all its children internally
equals the total height of WINDOW.

If the optional argument ROUND is `ceiling', return the smallest integer
larger than WINDOW's pixel height divided by the character height of
WINDOW's frame.  ROUND `floor' means to return the largest integer
smaller than WINDOW's pixel height divided by the character height of
WINDOW's frame.  Any other value of ROUND means to return the internal
total height of WINDOW.

(fn &optional WINDOW ROUND)Fwindow-total-width
Return the total width of window WINDOW in columns.
WINDOW must be a valid window and defaults to the selected one.

The return value includes the widths of WINDOW's fringes, margins,
scroll bars and its right divider, if any.  If WINDOW is an internal
window, the total width is the width of the screen areas spanned by its
children.

If WINDOW's pixel width is not an integral multiple of its frame's
character width, the number of lines occupied by WINDOW is rounded
internally.  This is done in a way such that, if WINDOW is a parent
window, the sum of the total widths of all its children internally
equals the total width of WINDOW.

If the optional argument ROUND is `ceiling', return the smallest integer
larger than WINDOW's pixel width divided by the character width of
WINDOW's frame.  ROUND `floor' means to return the largest integer
smaller than WINDOW's pixel width divided by the character width of
WINDOW's frame.  Any other value of ROUND means to return the internal
total width of WINDOW.

(fn &optional WINDOW ROUND)Fwindow-new-total
Return the new total size of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.

The new total size of WINDOW is the value set by the last call of
`set-window-new-total' for WINDOW.  If it is valid, it will be shortly
installed as WINDOW's total height (see `window-total-height') or total
width (see `window-total-width').

(fn &optional WINDOW)Fwindow-normal-size
Return the normal height of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.
If HORIZONTAL is non-nil, return the normal width of WINDOW.

The normal height of a frame's root window or a window that is
horizontally combined (a window that has a left or right sibling) is
1.0.  The normal height of a window that is vertically combined (has a
sibling above or below) is the fraction of the window's height with
respect to its parent.  The sum of the normal heights of all windows in a
vertical combination equals 1.0.

Similarly, the normal width of a frame's root window or a window that is
vertically combined equals 1.0.  The normal width of a window that is
horizontally combined is the fraction of the window's width with respect
to its parent.  The sum of the normal widths of all windows in a
horizontal combination equals 1.0.

The normal sizes of windows are used to restore the proportional sizes
of windows after they have been shrunk to their minimum sizes; for
example when a frame is temporarily made very small and afterwards gets
re-enlarged to its previous size.

(fn &optional WINDOW HORIZONTAL)Fwindow-new-normal
Return new normal size of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.

The new normal size of WINDOW is the value set by the last call of
`set-window-new-normal' for WINDOW.  If valid, it will be shortly
installed as WINDOW's normal size (see `window-normal-size').

(fn &optional WINDOW)Fwindow-new-pixel
Return new pixel size of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.

The new pixel size of WINDOW is the value set by the last call of
`set-window-new-pixel' for WINDOW.  If it is valid, it will be shortly
installed as WINDOW's pixel height (see `window-pixel-height') or pixel
width (see `window-pixel-width').

(fn &optional WINDOW)Fwindow-pixel-left
Return left pixel edge of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-pixel-top
Return top pixel edge of window WINDOW.
WINDOW must be a valid window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-left-column
Return left column of window WINDOW.
This is the distance, in columns, between the left edge of WINDOW and
the left edge of the frame's window area.  For instance, the return
value is 0 if there is no window to the left of WINDOW.

WINDOW must be a valid window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-top-line
Return top line of window WINDOW.
This is the distance, in lines, between the top of WINDOW and the top
of the frame's window area.  For instance, the return value is 0 if
there is no window above WINDOW.

WINDOW must be a valid window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-body-width
Return the width of WINDOW's text area.
WINDOW must be a live window and defaults to the selected one.  The
return value does not include any vertical dividers, fringes or
marginal areas, or scroll bars.

The optional argument PIXELWISE defines the units to use for the
width.  If nil, return the largest integer smaller than WINDOW's pixel
width in units of the character width of WINDOW's frame.  If PIXELWISE
is `remap' and the default face is remapped (see
`face-remapping-alist'), use the remapped face to determine the
character width.  For any other non-nil value, return the width in
pixels.

Note that the returned value includes the column reserved for the
continuation glyph.

Also see `window-max-chars-per-line'.

(fn &optional WINDOW PIXELWISE)Fwindow-body-height
Return the height of WINDOW's text area.
WINDOW must be a live window and defaults to the selected one.  The
return value does not include the mode line or header line or any
horizontal divider.

The optional argument PIXELWISE defines the units to use for the
height.  If nil, return the largest integer smaller than WINDOW's
pixel height in units of the character height of WINDOW's frame.  If
PIXELWISE is `remap' and the default face is remapped (see
`face-remapping-alist'), use the remapped face to determine the
character height.  For any other non-nil value, return the height in
pixels.

(fn &optional WINDOW PIXELWISE)Fwindow-old-body-pixel-width
Return old width of WINDOW's text area in pixels.
WINDOW must be a live window and defaults to the selected one.

The return value is the pixel width of WINDOW's text area after the
last time window change functions found WINDOW live on its frame.  It
is zero if WINDOW was created after that.

(fn &optional WINDOW)Fwindow-old-body-pixel-height
Return old height of WINDOW's text area in pixels.
WINDOW must be a live window and defaults to the selected one.

The return value is the pixel height of WINDOW's text area after the
last time window change functions found WINDOW live on its frame.  It
is zero if WINDOW was created after that.

(fn &optional WINDOW)Fwindow-mode-line-height
Return the height in pixels of WINDOW's mode-line.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-header-line-height
Return the height in pixels of WINDOW's header-line.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-tab-line-height
Return the height in pixels of WINDOW's tab-line.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-right-divider-width
Return the width in pixels of WINDOW's right divider.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-bottom-divider-width
Return the width in pixels of WINDOW's bottom divider.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-scroll-bar-width
Return the width in pixels of WINDOW's vertical scrollbar.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-scroll-bar-height
Return the height in pixels of WINDOW's horizontal scrollbar.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-hscroll
Return the number of columns by which WINDOW is scrolled from left margin.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fset-window-hscroll
Set number of columns WINDOW is scrolled from left margin to NCOL.
WINDOW must be a live window and defaults to the selected one.
Clip the number to a reasonable value if out of range.
Return the new number.  NCOL should be zero or positive.

Note that if `auto-hscroll-mode' is non-nil, you cannot scroll the
window so that the location of point moves off-window.

(fn WINDOW NCOL)Fcoordinates-in-window-p
Return non-nil if COORDINATES are in WINDOW.
WINDOW must be a live window and defaults to the selected one.
COORDINATES is a cons of the form (X . Y), X and Y being distances
measured in characters from the upper-left corner of the frame.
(0 . 0) denotes the character in the upper left corner of the
frame.
If COORDINATES are in the text portion of WINDOW,
   the coordinates relative to the window are returned.
If they are in the bottom divider of WINDOW, `bottom-divider' is returned.
If they are in the right divider of WINDOW, `right-divider' is returned.
If they are in the mode line of WINDOW, `mode-line' is returned.
If they are in the header line of WINDOW, `header-line' is returned.
If they are in the tab line of WINDOW, `tab-line' is returned.
If they are in the left fringe of WINDOW, `left-fringe' is returned.
If they are in the right fringe of WINDOW, `right-fringe' is returned.
If they are on the border between WINDOW and its right sibling,
  `vertical-line' is returned.
If they are in the windows's left or right marginal areas, `left-margin'
  or `right-margin' is returned.

(fn COORDINATES WINDOW)Fwindow-at
Return window containing coordinates X and Y on FRAME.
FRAME must be a live frame and defaults to the selected one.
X and Y are measured in units of canonical columns and rows.
The top left corner of the frame is considered to be column 0, row 0.
Tool-bar and tab-bar pseudo-windows are ignored by this function: if
the specified coordinates are in any of these two windows, this
function returns nil.

(fn X Y &optional FRAME)Fwindow-point
Return current value of point in WINDOW.
WINDOW must be a live window and defaults to the selected one.

For a nonselected window, this is the value point would have if that
window were selected.

Note that, when WINDOW is selected, the value returned is the same as
that returned by `point' for WINDOW's buffer.  It would be more strictly
correct to return the top-level value of `point', outside of any
`save-excursion' forms.  But that is hard to define.

(fn &optional WINDOW)Fwindow-old-point
Return old value of point in WINDOW.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fwindow-start
Return position at which display currently starts in WINDOW.
WINDOW must be a live window and defaults to the selected one.
This is updated by redisplay or by calling `set-window-start'.

(fn &optional WINDOW)Fwindow-end
Return position at which display currently ends in WINDOW.
This is the position after the final character in WINDOW.

WINDOW must be a live window and defaults to the selected one.  This
is updated by redisplay, when it runs to completion.  Simply changing
the buffer text or setting `window-start' does not update this value.

Return nil if there is no recorded value.  (This can happen if the
last redisplay of WINDOW was preempted, and did not finish.)  If
UPDATE is non-nil, compute the up-to-date position if it isn't already
recorded.

(fn &optional WINDOW UPDATE)Fset-window-point
Make point value in WINDOW be at position POS in WINDOW's buffer.
WINDOW must be a live window and defaults to the selected one.
Return POS.

(fn WINDOW POS)Fset-window-start
Make display in WINDOW start at position POS in WINDOW's buffer.
WINDOW must be a live window and defaults to the selected one.  Return
POS.

Optional third arg NOFORCE non-nil prevents next redisplay from
moving point if displaying the window at POS makes point invisible;
redisplay will then choose the WINDOW's start position by itself in
that case, i.e. it will disregard POS if adhering to it will make
point not visible in the window.

For reliable setting of WINDOW start position, make sure point is
at a position that will be visible when that start is in effect,
otherwise there's a chance POS will be disregarded, e.g., if point
winds up in a partially-visible line.

The setting of the WINDOW's start position takes effect during the
next redisplay cycle, not immediately.  If NOFORCE is nil or
omitted, forcing the display of WINDOW to start at POS cancels
any setting of WINDOW's vertical scroll ("vscroll") amount
set by `set-window-vscroll' and by scrolling functions.

(fn WINDOW POS &optional NOFORCE)Fpos-visible-in-window-p
Return non-nil if position POS is currently on the frame in WINDOW.
WINDOW must be a live window and defaults to the selected one.

Return nil if that position is scrolled vertically out of view.  If a
character is only partially visible, nil is returned, unless the
optional argument PARTIALLY is non-nil.  If POS is only out of view
because of horizontal scrolling, return non-nil.  If POS is t, it
specifies either the first position displayed on the last visible
screen line in WINDOW, or the end-of-buffer position, whichever comes
first.  POS defaults to point in WINDOW; WINDOW defaults to the
selected window.

If POS is visible, return t if PARTIALLY is nil; if PARTIALLY is non-nil,
the return value is a list of 2 or 6 elements (X Y [RTOP RBOT ROWH VPOS]),
where X and Y are the pixel coordinates relative to the top left corner
of the window.  The remaining elements are omitted if the character after
POS is fully visible; otherwise, RTOP and RBOT are the number of pixels
off-window at the top and bottom of the screen line ("row") containing
POS, ROWH is the visible height of that row, and VPOS is the row number
(zero-based).

(fn &optional POS WINDOW PARTIALLY)Fwindow-line-height
Return height in pixels of text line LINE in window WINDOW.
WINDOW must be a live window and defaults to the selected one.

Return height of current line if LINE is omitted or nil.  Return height of
header or mode line if LINE is `header-line' or `mode-line'.
Otherwise, LINE is a text line number starting from 0.  A negative number
counts from the end of the window.

Value is a list (HEIGHT VPOS YPOS OFFBOT), where HEIGHT is the height
in pixels of the visible part of the line, VPOS and YPOS are the
vertical position in lines and pixels of the line, relative to the top
of the first text line, and OFFBOT is the number of off-window pixels at
the bottom of the text line.  If there are off-window pixels at the top
of the (first) text line, YPOS is negative.

Return nil if window display is not up-to-date.  In that case, use
`pos-visible-in-window-p' to obtain the information.

(fn &optional LINE WINDOW)Fwindow-lines-pixel-dimensions
Return pixel dimensions of WINDOW's lines.
The return value is a list of the x- and y-coordinates of the lower
right corner of the last character of each line.  Return nil if the
current glyph matrix of WINDOW is not up-to-date.

Optional argument WINDOW specifies the window whose lines' dimensions
shall be returned.  Nil or omitted means to return the dimensions for
the selected window.

FIRST, if non-nil, specifies the index of the first line whose
dimensions shall be returned.  If FIRST is nil and BODY is non-nil,
start with the first text line of WINDOW.  Otherwise, start with the
first line of WINDOW.

LAST, if non-nil, specifies the last line whose dimensions shall be
returned.  If LAST is nil and BODY is non-nil, the last line is the last
line of the body (text area) of WINDOW.  Otherwise, last is the last
line of WINDOW.

INVERSE, if nil, means that the y-pixel value returned for a specific
line specifies the distance in pixels from the left edge (body edge if
BODY is non-nil) of WINDOW to the right edge of the last glyph of that
line.  INVERSE non-nil means that the y-pixel value returned for a
specific line specifies the distance in pixels from the right edge of
the last glyph of that line to the right edge (body edge if BODY is
non-nil) of WINDOW.

LEFT non-nil means to return the x- and y-coordinates of the lower left
corner of the leftmost character on each line.  This is the value that
should be used for buffers that mostly display text from right to left.

If LEFT is non-nil and INVERSE is nil, this means that the y-pixel value
returned for a specific line specifies the distance in pixels from the
left edge of the last (leftmost) glyph of that line to the right edge
(body edge if BODY is non-nil) of WINDOW.  If LEFT and INVERSE are both
non-nil, the y-pixel value returned for a specific line specifies the
distance in pixels from the left edge (body edge if BODY is non-nil) of
WINDOW to the left edge of the last (leftmost) glyph of that line.

Normally, the value of this function is not available while Emacs is
busy, for example, when processing a command.  It should be retrievable
though when run from an idle timer with a delay of zero seconds.

(fn &optional WINDOW FIRST LAST BODY INVERSE LEFT)Fwindow-dedicated-p
Return non-nil when WINDOW is dedicated to its buffer.
More precisely, return the value assigned by the last call of
`set-window-dedicated-p' for WINDOW.  Return nil if that function was
never called with WINDOW as its argument, or the value set by that
function was internally reset since its last call.  WINDOW must be a
live window and defaults to the selected one.

When a window is dedicated to its buffer, `display-buffer' will refrain
from displaying another buffer in it.  `get-lru-window' and
`get-largest-window' treat dedicated windows specially.
`delete-windows-on', `replace-buffer-in-windows', `quit-window' and
`kill-buffer' can delete a dedicated window and the containing frame.

Functions like `set-window-buffer' may change the buffer displayed by a
window, unless that window is "strongly" dedicated to its buffer, that
is the value returned by `window-dedicated-p' is t.

(fn &optional WINDOW)Fset-window-dedicated-p
Mark WINDOW as dedicated according to FLAG.
WINDOW must be a live window and defaults to the selected one.  FLAG
non-nil means mark WINDOW as dedicated to its buffer.  FLAG nil means
mark WINDOW as non-dedicated.  Return FLAG.

When a window is dedicated to its buffer, `display-buffer' will refrain
from displaying another buffer in it.  `get-lru-window' and
`get-largest-window' treat dedicated windows specially.
`delete-windows-on', `replace-buffer-in-windows', `quit-window',
`quit-restore-window' and `kill-buffer' can delete a dedicated window
and the containing frame.

As a special case, if FLAG is t, mark WINDOW as "strongly" dedicated to
its buffer.  Functions like `set-window-buffer' may change the buffer
displayed by a window, unless that window is strongly dedicated to its
buffer.  If and when `set-window-buffer' displays another buffer in a
window, it also makes sure that the window is no more dedicated.

(fn WINDOW FLAG)Fwindow-prev-buffers
Return buffers previously shown in WINDOW.
WINDOW must be a live window and defaults to the selected one.

The return value is a list of elements (BUFFER WINDOW-START POS),
where BUFFER is a buffer, WINDOW-START is the start position of the
window for that buffer, and POS is a window-specific point value.

(fn &optional WINDOW)Fset-window-prev-buffers
Set WINDOW's previous buffers to PREV-BUFFERS.
WINDOW must be a live window and defaults to the selected one.

PREV-BUFFERS should be a list of elements (BUFFER WINDOW-START POS),
where BUFFER is a buffer, WINDOW-START is the start position of the
window for that buffer, and POS is a window-specific point value.

(fn WINDOW PREV-BUFFERS)Fwindow-next-buffers
Return list of buffers recently re-shown in WINDOW.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fset-window-next-buffers
Set WINDOW's next buffers to NEXT-BUFFERS.
WINDOW must be a live window and defaults to the selected one.
NEXT-BUFFERS should be a list of buffers.

(fn WINDOW NEXT-BUFFERS)Fwindow-parameters
Return the parameters of WINDOW and their values.
WINDOW must be a valid window and defaults to the selected one.  The
return value is a list of elements of the form (PARAMETER . VALUE).

(fn &optional WINDOW)Fwindow-parameter
Return WINDOW's value for PARAMETER.
WINDOW can be any window and defaults to the selected one.

(fn WINDOW PARAMETER)Fset-window-parameter
Set WINDOW's value of PARAMETER to VALUE.
WINDOW can be any window and defaults to the selected one.
Return VALUE.

(fn WINDOW PARAMETER VALUE)Fwindow-display-table
Return the display-table that WINDOW is using.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fset-window-display-table
Set WINDOW's display-table to TABLE.
WINDOW must be a live window and defaults to the selected one.

(fn WINDOW TABLE)Fnext-window
Return live window after WINDOW in the cyclic ordering of windows.
WINDOW must be a live window and defaults to the selected one.  The
optional arguments MINIBUF and ALL-FRAMES specify the set of windows to
consider.

MINIBUF nil or omitted means consider the minibuffer window only if the
minibuffer is active.  MINIBUF t means consider the minibuffer window
even if the minibuffer is not active.  Any other value means do not
consider the minibuffer window even if the minibuffer is active.

ALL-FRAMES nil or omitted means consider all windows on WINDOW's frame,
plus the minibuffer window if specified by the MINIBUF argument.  If the
minibuffer counts, consider all windows on all frames that share that
minibuffer too.  The following non-nil values of ALL-FRAMES have special
meanings:

- t means consider all windows on all existing frames.

- `visible' means consider all windows on all visible frames.

- 0 (the number zero) means consider all windows on all visible and
  iconified frames.

- A frame means consider all windows on that frame only.

Anything else means consider all windows on WINDOW's frame and no
others.

If you use consistent values for MINIBUF and ALL-FRAMES, you can use
`next-window' to iterate through the entire cycle of acceptable
windows, eventually ending up back at the window you started with.
`previous-window' traverses the same cycle, in the reverse order.

(fn &optional WINDOW MINIBUF ALL-FRAMES)Fprevious-window
Return live window before WINDOW in the cyclic ordering of windows.
WINDOW must be a live window and defaults to the selected one.  The
optional arguments MINIBUF and ALL-FRAMES specify the set of windows to
consider.

MINIBUF nil or omitted means consider the minibuffer window only if the
minibuffer is active.  MINIBUF t means consider the minibuffer window
even if the minibuffer is not active.  Any other value means do not
consider the minibuffer window even if the minibuffer is active.

ALL-FRAMES nil or omitted means consider all windows on WINDOW's frame,
plus the minibuffer window if specified by the MINIBUF argument.  If the
minibuffer counts, consider all windows on all frames that share that
minibuffer too.  The following non-nil values of ALL-FRAMES have special
meanings:

- t means consider all windows on all existing frames.

- `visible' means consider all windows on all visible frames.

- 0 (the number zero) means consider all windows on all visible and
  iconified frames.

- A frame means consider all windows on that frame only.

Anything else means consider all windows on WINDOW's frame and no
others.

If you use consistent values for MINIBUF and ALL-FRAMES, you can
use `previous-window' to iterate through the entire cycle of
acceptable windows, eventually ending up back at the window you
started with.  `next-window' traverses the same cycle, in the
reverse order.

(fn &optional WINDOW MINIBUF ALL-FRAMES)Fwindow-list
Return a list of windows on FRAME, starting with WINDOW.
FRAME nil or omitted means use the selected frame.
WINDOW nil or omitted means use the window selected within FRAME.
MINIBUF t means include the minibuffer window, even if it isn't active.
MINIBUF nil or omitted means include the minibuffer window only
if it's active.
MINIBUF neither nil nor t means never include the minibuffer window.

(fn &optional FRAME MINIBUF WINDOW)Fwindow-list-1
Return a list of all live windows.
WINDOW specifies the first window to list and defaults to the selected
window.

Optional argument MINIBUF nil or omitted means consider the minibuffer
window only if the minibuffer is active.  MINIBUF t means consider the
minibuffer window even if the minibuffer is not active.  Any other value
means do not consider the minibuffer window even if the minibuffer is
active.

Optional argument ALL-FRAMES nil or omitted means consider all windows
on WINDOW's frame, plus the minibuffer window if specified by the
MINIBUF argument.  If the minibuffer counts, consider all windows on all
frames that share that minibuffer too.  The following non-nil values of
ALL-FRAMES have special meanings:

- t means consider all windows on all existing frames.

- `visible' means consider all windows on all visible frames.

- 0 (the number zero) means consider all windows on all visible and
  iconified frames.

- A frame means consider all windows on that frame only.

Anything else means consider all windows on WINDOW's frame and no
others.

If WINDOW is not on the list of windows returned, some other window will
be listed first but no error is signaled.

(fn &optional WINDOW MINIBUF ALL-FRAMES)Fget-buffer-window
Return a window currently displaying BUFFER-OR-NAME, or nil if none.
BUFFER-OR-NAME may be a buffer or a buffer name and defaults to
the current buffer.

The optional argument ALL-FRAMES specifies the frames to consider:

- t means consider all windows on all existing frames.

- `visible' means consider all windows on all visible frames.

- 0 (the number zero) means consider all windows on all visible
    and iconified frames.

- A frame means consider all windows on that frame only.

Any other value of ALL-FRAMES means consider all windows on the
selected frame and no others.

(fn &optional BUFFER-OR-NAME ALL-FRAMES)Fdelete-other-windows-internal
Make WINDOW fill its frame.
Only the frame WINDOW is on is affected.  WINDOW must be a valid window
and defaults to the selected one.

Optional argument ROOT, if non-nil, must specify an internal window such
that WINDOW is in its window subtree.  If this is the case, replace ROOT
by WINDOW and leave alone any windows not part of ROOT's subtree.

When WINDOW is live try to reduce display jumps by keeping the text
previously visible in WINDOW in the same place on the frame.  Doing this
depends on the value of (window-start WINDOW), so if calling this
function in a program gives strange scrolling, make sure the
window-start value is reasonable when this function is called.

(fn &optional WINDOW ROOT)Frun-window-configuration-change-hook
Run `window-configuration-change-hook' for FRAME.
If FRAME is omitted or nil, it defaults to the selected frame.

This function should not be needed any more and will be therefore
considered obsolete.

(fn &optional FRAME)Frun-window-scroll-functions
Run `window-scroll-functions' for WINDOW.
If WINDOW is omitted or nil, it defaults to the selected window.

This function is called by `split-window' for the new window, after it
has established the size of the new window.

(fn &optional WINDOW)Fset-window-buffer
Make WINDOW display BUFFER-OR-NAME.
WINDOW must be a live window and defaults to the selected one.
BUFFER-OR-NAME must be a buffer or the name of an existing buffer.

Optional third argument KEEP-MARGINS non-nil means that WINDOW's current
display margins, fringe widths, and scroll bar settings are preserved;
the default is to reset these from the local settings for BUFFER-OR-NAME
or the frame defaults.  Return nil.

This function throws an error when WINDOW is strongly dedicated to its
buffer (that is `window-dedicated-p' returns t for WINDOW) and does not
already display BUFFER-OR-NAME.

This function runs `window-scroll-functions' before running
`window-configuration-change-hook'.

(fn WINDOW BUFFER-OR-NAME &optional KEEP-MARGINS)Fforce-window-update
Force all windows to be updated on next redisplay.
If optional arg OBJECT is a window, force redisplay of that window only.
If OBJECT is a buffer or buffer name, force redisplay of all windows
displaying that buffer.

(fn &optional OBJECT)Fset-window-new-pixel
Set new pixel size of WINDOW to SIZE.
WINDOW must be a valid window and defaults to the selected one.
Return SIZE.

Optional argument ADD non-nil means add SIZE to the new pixel size of
WINDOW and return the sum.

The new pixel size of WINDOW, if valid, will be shortly installed as
WINDOW's pixel height (see `window-pixel-height') or pixel width (see
`window-pixel-width').

Note: This function does not operate on any child windows of WINDOW.

(fn WINDOW SIZE &optional ADD)Fset-window-new-total
Set new total size of WINDOW to SIZE.
WINDOW must be a valid window and defaults to the selected one.
Return SIZE.

Optional argument ADD non-nil means add SIZE to the new total size of
WINDOW and return the sum.

The new total size of WINDOW, if valid, will be shortly installed as
WINDOW's total height (see `window-total-height') or total width (see
`window-total-width').

Note: This function does not operate on any child windows of WINDOW.

(fn WINDOW SIZE &optional ADD)Fset-window-new-normal
Set new normal size of WINDOW to SIZE.
WINDOW must be a valid window and defaults to the selected one.
Return SIZE.

The new normal size of WINDOW, if valid, will be shortly installed as
WINDOW's normal size (see `window-normal-size').

Note: This function does not operate on any child windows of WINDOW.

(fn WINDOW &optional SIZE)Fwindow-resize-apply
Apply requested size values for window-tree of FRAME.
If FRAME is omitted or nil, it defaults to the selected frame.

Optional argument HORIZONTAL omitted or nil means apply requested
height values.  HORIZONTAL non-nil means apply requested width values.

The requested size values are those set by `set-window-new-pixel' and
`set-window-new-normal'.  This function checks whether the requested
values sum up to a valid window layout, recursively assigns the new
sizes of all child windows and calculates and assigns the new start
positions of these windows.

Return t if the requested values have been applied correctly, nil
otherwise.

Note: This function does not check any of `window-fixed-size-p',
`window-min-height' or `window-min-width'.  All these checks have to
be applied on the Elisp level.

(fn &optional FRAME HORIZONTAL)Fwindow-resize-apply-total
Apply requested total size values for window-tree of FRAME.
If FRAME is omitted or nil, it defaults to the selected frame.

This function does not assign pixel or normal size values.  You should
have run `window-resize-apply' before running this.

Optional argument HORIZONTAL omitted or nil means apply requested
height values.  HORIZONTAL non-nil means apply requested width
values.

(fn &optional FRAME HORIZONTAL)Fsplit-window-internal
Split window OLD.
Second argument PIXEL-SIZE specifies the number of pixels of the
new window.  It must be a positive integer.

Third argument SIDE nil (or `below') specifies that the new window shall
be located below WINDOW.  SIDE `above' means the new window shall be
located above WINDOW.  In both cases PIXEL-SIZE specifies the pixel
height of the new window including space reserved for the mode and/or
header/tab line.

SIDE t (or `right') specifies that the new window shall be located on
the right side of WINDOW.  SIDE `left' means the new window shall be
located on the left of WINDOW.  In both cases PIXEL-SIZE specifies the
width of the new window including space reserved for fringes and the
scrollbar or a divider column.

Fourth argument NORMAL-SIZE specifies the normal size of the new window
according to the SIDE argument.

The new pixel and normal sizes of all involved windows must have been
set correctly.  See the code of `split-window' for how this is done.

(fn OLD PIXEL-SIZE SIDE NORMAL-SIZE)Fdelete-window-internal
Remove WINDOW from its frame.
WINDOW defaults to the selected window.  Return nil.
Signal an error when WINDOW is the only window on its frame.

(fn WINDOW)Fresize-mini-window-internal
Resize mini window WINDOW.

(fn WINDOW)Fscroll-up
Scroll text of selected window upward ARG lines.
If ARG is omitted or nil, scroll upward by a near full screen.
A near full screen is `next-screen-context-lines' less than a full screen.
Negative ARG means scroll downward.
If ARG is the atom `-', scroll downward by nearly full screen.
When calling from a program, supply as argument a number, nil, or `-'.

(fn &optional ARG)Fscroll-down
Scroll text of selected window down ARG lines.
If ARG is omitted or nil, scroll down by a near full screen.
A near full screen is `next-screen-context-lines' less than a full screen.
Negative ARG means scroll upward.
If ARG is the atom `-', scroll upward by nearly full screen.
When calling from a program, supply as argument a number, nil, or `-'.

(fn &optional ARG)Fother-window-for-scrolling
Return "the other" window for "other window scroll" commands.
If in the minibuffer, and `minibuffer-scroll-window' is non-nil,
it specifies the window to use.
Otherwise, if `other-window-scroll-buffer' is a buffer, a window
showing that buffer is the window to use, popping it up if necessary.
Otherwise, if `other-window-scroll-default' is a function, call it,
and the window it returns is the window to use.
Finally, the function looks for a neighboring window on the selected
frame, followed by windows on all the visible frames on the current
terminal.

(fn)Fscroll-left
Scroll selected window display ARG columns left.
Default for ARG is window width minus 2.
Value is the total amount of leftward horizontal scrolling in
effect after the change.
If SET-MINIMUM is non-nil, the new scroll amount becomes the
lower bound for automatic scrolling, i.e. automatic scrolling
will not scroll a window to a column less than the value returned
by this function.  This happens in an interactive call.

(fn &optional ARG SET-MINIMUM)Fscroll-right
Scroll selected window display ARG columns right.
Default for ARG is window width minus 2.
Value is the total amount of leftward horizontal scrolling in
effect after the change.
If SET-MINIMUM is non-nil, the new scroll amount becomes the
lower bound for automatic scrolling, i.e. automatic scrolling
will not scroll a window to a column less than the value returned
by this function.  This happens in an interactive call.

(fn &optional ARG SET-MINIMUM)Fminibuffer-selected-window
Return window selected just before minibuffer window was selected.
Return nil if the selected window is not a minibuffer window.

(fn)Frecenter
Center point in selected window and maybe redisplay frame.
With a numeric prefix argument ARG, recenter putting point on screen line ARG
relative to the selected window.  If ARG is negative, it counts up from the
bottom of the window.  (ARG should be less than the height of the window.)

If ARG is omitted or nil, then recenter with point on the middle line
of the selected window; if REDISPLAY & `recenter-redisplay' are
non-nil, also erase the entire frame and redraw it (when
`auto-resize-tool-bars' is set to `grow-only', this resets the
tool-bar's height to the minimum height needed); if
`recenter-redisplay' has the special value `tty', then only tty frames
are redrawn.  Interactively, REDISPLAY is always non-nil.

Just C-u as prefix means put point in the center of the window
and redisplay normally--don't erase and redraw the frame.

(fn &optional ARG REDISPLAY)Fwindow-text-width
Return the width in columns of the text display area of WINDOW.
WINDOW must be a live window and defaults to the selected one.

The returned width does not include dividers, scrollbars, margins,
fringes, nor any partial-width columns at the right of the text
area.

Optional argument PIXELWISE non-nil, means to return the width in
pixels.

(fn &optional WINDOW PIXELWISE)Fwindow-text-height
Return the height in lines of the text display area of WINDOW.
WINDOW must be a live window and defaults to the selected one.

The returned height does not include dividers, the mode line, any header
line, nor any partial-height lines at the bottom of the text area.

Optional argument PIXELWISE non-nil, means to return the height in
pixels.

(fn &optional WINDOW PIXELWISE)Fmove-to-window-line
Position point relative to window.
ARG nil means position point at center of window.
Else, ARG specifies vertical position within the window;
zero means top of window, negative means relative to bottom
of window, -1 meaning the last fully visible display line
of the window.

Value is the screen line of the window point moved to, counting
from the top of the window.

(fn ARG)Fwindow-configuration-p
Return t if OBJECT is a window-configuration object.

(fn OBJECT)Fwindow-configuration-frame
Return the frame that CONFIG, a window-configuration object, is about.

(fn CONFIG)Fset-window-configuration
Set the configuration of windows and buffers as specified by CONFIGURATION.
CONFIGURATION must be a value previously returned
by `current-window-configuration' (which see).

Normally, this function selects the frame of the CONFIGURATION, but if
DONT-SET-FRAME is non-nil, it leaves selected the frame which was
current at the start of the function.  If DONT-SET-MINIWINDOW is non-nil,
the mini-window of the frame doesn't get set to the corresponding element
of CONFIGURATION.

This function consults the variable `window-restore-killed-buffer-windows'
when restoring a window whose buffer was killed after CONFIGURATION was
recorded.

If CONFIGURATION was made from a frame that is now deleted,
only frame-independent values can be restored.  In this case,
the return value is nil.  Otherwise the value is t.

(fn CONFIGURATION &optional DONT-SET-FRAME DONT-SET-MINIWINDOW)Fcurrent-window-configuration
Return an object representing the current window configuration of FRAME.
If FRAME is nil or omitted, use the selected frame.
This describes the number of windows, their sizes and current buffers,
and for each displayed buffer, where display starts, and the position of
point.  An exception is made for point in the current buffer:
its value is -not- saved.
This also records the currently selected frame, and FRAME's focus
redirection (see `redirect-frame-focus').  The variable
`window-persistent-parameters' specifies which window parameters are
saved by this function.

(fn &optional FRAME)Fset-window-margins
Set width of marginal areas of window WINDOW.
WINDOW must be a live window and defaults to the selected one.

Second arg LEFT-WIDTH specifies the number of character cells to
reserve for the left marginal area.  Optional third arg RIGHT-WIDTH
does the same for the right marginal area.  A nil width parameter
means no margin.

Leave margins unchanged if WINDOW is not large enough to accommodate
margins of the desired width.  Return t if any margin was actually
changed and nil otherwise.

The margins specified by calling this function may be later overridden
by invoking `set-window-buffer' for the same WINDOW, with its
KEEP-MARGINS argument nil or omitted.

(fn WINDOW LEFT-WIDTH &optional RIGHT-WIDTH)Fwindow-margins
Get width of marginal areas of window WINDOW.
WINDOW must be a live window and defaults to the selected one.

Value is a cons of the form (LEFT-WIDTH . RIGHT-WIDTH).
If a marginal area does not exist, its width will be returned
as nil.

(fn &optional WINDOW)Fset-window-fringes
Set fringes of specified WINDOW.
WINDOW must specify a live window and defaults to the selected one.

Second arg LEFT-WIDTH specifies the number of pixels to reserve for
the left fringe.  Optional third arg RIGHT-WIDTH specifies the right
fringe width.  If a fringe width arg is nil, that means to use the
frame's default fringe width.  Default fringe widths can be set with
the command `set-fringe-style'.

If optional fourth arg OUTSIDE-MARGINS is non-nil, draw the fringes
outside of the display margins.  By default, fringes are drawn between
display marginal areas and the text area.

Optional fifth argument PERSISTENT non-nil means that fringe settings
for WINDOW are persistent, i.e., remain unchanged when another buffer
is shown in WINDOW.  PERSISTENT nil means that fringes are reset from
buffer local values when `set-window-buffer' is called on WINDOW with
the argument KEEP-MARGINS nil.

Leave fringes unchanged if WINDOW is not large enough to accommodate
fringes of the desired width.  Return t if any fringe was actually
changed and nil otherwise.

(fn WINDOW LEFT-WIDTH &optional RIGHT-WIDTH OUTSIDE-MARGINS PERSISTENT)Fwindow-fringes
Return fringe settings for specified WINDOW.
WINDOW must be a live window and defaults to the selected one.

Value is a list of the form (LEFT-WIDTH RIGHT-WIDTH OUTSIDE-MARGINS
PERSISTENT), see `set-window-fringes'.

(fn &optional WINDOW)Fset-window-cursor-type
Set the `cursor-type' of WINDOW to TYPE.

This setting takes precedence over the variable `cursor-type', and TYPE
has the same format as the value of that variable.  The initial value
for new windows is t, which says to respect the buffer-local value of
`cursor-type'.

WINDOW nil means use the selected window.  This setting persists across
buffers shown in WINDOW, so `set-window-buffer' does not reset it.

(fn WINDOW TYPE)Fwindow-cursor-type
Return the `cursor-type' of WINDOW.
WINDOW must be a live window and defaults to the selected one.

(fn &optional WINDOW)Fset-window-scroll-bars
Set width and type of scroll bars of specified WINDOW.
WINDOW must specify a live window and defaults to the selected one.

Second argument WIDTH specifies the pixel width for the vertical scroll
bar.  If WIDTH is nil, use the scroll bar width of WINDOW's frame.
Third argument VERTICAL-TYPE specifies the type of the vertical scroll
bar: left, right, nil or t where nil means to not display a vertical
scroll bar on WINDOW and t means to use WINDOW frame's vertical scroll
bar type.

Fourth argument HEIGHT specifies the pixel height for the horizontal
scroll bar.  If HEIGHT is nil, use the scroll bar height of WINDOW's
frame.  Fifth argument HORIZONTAL-TYPE specifies the type of the
horizontal scroll bar: bottom, nil, or t where nil means to not
display a horizontal scroll bar on WINDOW and t means to use WINDOW
frame's horizontal scroll bar type.  If WINDOW is a mini window, t
effectively behaves like nil.  HORIZONTAL-TYPE must equal bottom in
order to show a scroll bar for mini windows.

Optional sixth argument PERSISTENT non-nil means that scroll bar
settings for WINDOW are persistent, i.e., remain unchanged when
another buffer is shown in WINDOW.  PERSISTENT nil means that scroll
bars are reset from buffer local values when `set-window-buffer' is
called on WINDOW with the argument KEEP-MARGINS nil.

If WINDOW is not large enough to accommodate a scroll bar of the
desired dimension, leave the corresponding scroll bar unchanged.
Return t if scroll bars were actually changed and nil otherwise.

(fn WINDOW &optional WIDTH VERTICAL-TYPE HEIGHT HORIZONTAL-TYPE PERSISTENT)Fwindow-scroll-bars
Get width and type of scroll bars of window WINDOW.
WINDOW must be a live window and defaults to the selected one.

Value is a list of the form (WIDTH COLUMNS VERTICAL-TYPE HEIGHT LINES
HORIZONTAL-TYPE PERSISTENT).  WIDTH reports the pixel width of the
vertical scroll bar; COLUMNS is the equivalent number of columns.
Similarly, HEIGHT and LINES are the height of the horizontal scroll
bar in pixels and the equivalent number of lines.  VERTICAL-TYPE
reports the type of the vertical scroll bar, either left, right, nil,
or t.  HORIZONTAL-TYPE reports the type of the horizontal scroll bar,
either bottom, nil or t.  PERSISTENT reports the value specified by
the last successful call to `set-window-scroll-bars', or nil if there
was none.

If WIDTH or HEIGHT is nil or VERTICAL-TYPE or HORIZONTAL-TYPE is t,
WINDOW is using the corresponding value specified for the frame.

(fn &optional WINDOW)Fwindow-vscroll
Return the amount by which WINDOW is scrolled vertically.
This takes effect when displaying tall lines or images.

If WINDOW is omitted or nil, it defaults to the selected window.
Normally, value is a multiple of the canonical character height of WINDOW;
optional second arg PIXELS-P means value is measured in pixels.

(fn &optional WINDOW PIXELS-P)Fset-window-vscroll
Set amount by which WINDOW should be scrolled vertically to VSCROLL.
This takes effect when displaying tall lines or images.

WINDOW nil means use the selected window.  Normally, VSCROLL is a
non-negative multiple of the canonical character height of WINDOW;
optional third arg PIXELS-P non-nil means that VSCROLL is in pixels.
If PIXELS-P is nil, VSCROLL may have to be rounded so that it
corresponds to an integral number of pixels.  The return value is the
result of this rounding.
If PIXELS-P is non-nil, the return value is VSCROLL.

PRESERVE-VSCROLL-P makes setting the start of WINDOW preserve the
vscroll if its start is "frozen" due to a resized mini-window.

(fn WINDOW VSCROLL &optional PIXELS-P PRESERVE-VSCROLL-P)Fwindow-configuration-equal-p
Say whether two window configurations have the same window layout.
This function ignores details such as the values of point and
scrolling positions.

(fn X Y)Vtemp-buffer-show-function
Non-nil means call as function to display a help buffer.
The function is called with one argument, the buffer to be displayed.
Used by `with-output-to-temp-buffer'.
If this function is used, then it must do the entire job of showing
the buffer; `temp-buffer-show-hook' is not run unless this function runs it.Vminibuffer-scroll-window
Non-nil means it is the window that C-M-v in minibuffer should scroll.Vmode-line-in-non-selected-windows
Non-nil means to use `mode-line-inactive' face in non-selected windows.
If the minibuffer is active, the `minibuffer-scroll-window' mode line
is displayed in the `mode-line' face.Vother-window-scroll-buffer
If this is a live buffer, \[scroll-other-window] should scroll its window.Vother-window-scroll-default
Function that provides the window to scroll by \[scroll-other-window].
The function `other-window-for-scrolling' first tries to use
`minibuffer-scroll-window' and `other-window-scroll-buffer'.
But when both are nil, then by default it uses a neighboring window.
This variable is intended to get another default instead of `next-window'.Vauto-window-vscroll
Non-nil means to automatically adjust `window-vscroll' to view tall lines.Vnext-screen-context-lines
Number of lines of continuity when scrolling by screenfuls.Vscroll-preserve-screen-position
Controls if scroll commands move point to keep its screen position unchanged.

A value of nil means point does not keep its screen position except
at the scroll margin or window boundary respectively.

A value of t means point keeps its screen position if the scroll
command moved it vertically out of the window, e.g. when scrolling
by full screens.  If point is within `next-screen-context-lines' lines
from the edges of the window, point will typically not keep its screen
position when doing commands like `scroll-up-command'/`scroll-down-command'
and the like.

Any other value means point always keeps its screen position.
Scroll commands should have the `scroll-command' property
on their symbols to be controlled by this variable.Vwindow-point-insertion-type
Insertion type of marker to use for `window-point'.
See `marker-insertion-type' for the meaning of the possible values.Vwindow-buffer-change-functions
Functions called during redisplay when window buffers have changed.
The value should be a list of functions that take one argument.

Functions specified buffer-locally are called for each window showing
the corresponding buffer if and only if that window has been added or
changed its buffer since the last redisplay.  In this case the window
is passed as argument.

Functions specified by the default value are called for each frame if
at least one window on that frame has been added, deleted or changed
its buffer since the last redisplay.  In this case the frame is passed
as argument.Vwindow-size-change-functions
Functions called during redisplay when window sizes have changed.
The value should be a list of functions that take one argument.

Functions specified buffer-locally are called for each window showing
the corresponding buffer if and only if that window has been added or
changed its buffer or its total or body size since the last redisplay.
In this case the window is passed as argument.

Functions specified by the default value are called for each frame if
at least one window on that frame has been added or changed its buffer
or its total or body size since the last redisplay.  In this case the
frame is passed as argument.

For instance, to hide the title bar when the frame is maximized, you
can add `frame-hide-title-bar-when-maximized' to this variable.Vwindow-selection-change-functions
Functions called during redisplay when the selected window has changed.
The value should be a list of functions that take one argument.

Functions specified buffer-locally are called for each window showing
the corresponding buffer if and only if that window has been selected
or deselected since the last redisplay.  In this case the window is
passed as argument.

Functions specified by the default value are called for each frame if
the frame's selected window has changed since the last redisplay.  In
this case the frame is passed as argument.Vwindow-state-change-functions
Functions called during redisplay when the window state changed.
The value should be a list of functions that take one argument.

Functions specified buffer-locally are called for each window showing
the corresponding buffer if and only if that window has been added,
resized, changed its buffer or has been (de-)selected since the last
redisplay.  In this case the window is passed as argument.

Functions specified by the default value are called for each frame if
at least one window on that frame has been added, deleted, changed its
buffer or its total or body size or the frame has been (de-)selected,
its selected window has changed or the window state change flag has
been set for this frame since the last redisplay.  In this case the
frame is passed as argument.Vwindow-state-change-hook
Functions called during redisplay when the window state changed.
The value should be a list of functions that take no argument.

This hook is called during redisplay when at least one window has been
added, deleted, (de-)selected, changed its buffer or its total or body
size or the window state change flag has been set for at least one
frame.  This hook is called after all other window change functions
have been run and should be used only if a function should react to
changes that happened on at least two frames since last redisplay or
the function intends to change the window configuration.Vwindow-configuration-change-hook
Functions called during redisplay when window configuration has changed.
The value should be a list of functions that take no argument.

Functions specified buffer-locally are called for each window showing
the corresponding buffer if at least one window on that frame has been
added, deleted or changed its buffer or its total or body size since
the last redisplay.  Each call is performed with the window showing
the buffer temporarily selected.

Functions specified by the default value are called for each frame if
at least one window on that frame has been added, deleted or changed
its buffer or its total or body size since the last redisplay.  Each
call is performed with the frame temporarily selected.Vwindow-restore-killed-buffer-windows
Control restoring windows whose buffer was killed.
This variable specifies how the functions `set-window-configuration' and
`window-state-put' shall handle a window whose buffer has been killed
since the corresponding configuration or state was recorded.  Any such
window may be live -- in which case it shows some other buffer -- or
dead at the time one of these functions is called.

By default, `set-window-configuration' leaves the window alone if it is
live, while `window-state-put' deletes it.  The following values can be
used to override the default behavior for dead windows in the case of
`set-window-configuration' and for dead and live windows in the case of
`window-state-put'.

 - t means to restore the window and show some other buffer in it.

 - `delete' means to try to delete the window.

 - `dedicated' means to try to delete the window if and only if it is
   dedicated to its buffer.

 - nil, the default, which means that `set-window-configuration' will
   try to delete the window if and only if it is dedicated to its
   buffer while `window-state-put' will unconditionally try to delete
   it.

 - a function means to restore the window and show some other buffer in
   it, like if the value were t, but also to add an entry for that
   window to a list that will be later passed as argument to that
   function.

If a window cannot be deleted (typically, because it is the last window
on its frame), show another buffer in it.

If the value is a function, it should take three arguments.  The first
argument specifies the frame whose windows have been restored.  The
third argument is the symbol `configuration' if the windows are
restored by `set-window-configuration' and the symbol `state' if the
windows are restored by `window-state-put'.

The second argument specifies a list of entries for all windows whose
previous buffers have been found dead at the time
`set-window-configuration' or `window-state-put' tried to restore them
(minibuffer windows are excluded).  This means that the function
specified by this variable may also delete windows which were found to
be alive by `set-window-configuration'.

Each entry is a list of six values: the window whose buffer was found
dead, the dead buffer or its name, the positions of window-start and
window-point of the buffer in that window, the dedicated state of the
window as reported by `window-dedicated-p', and a boolean -- t if the
window was live when `set-window-configuration' tried to restore it,
and nil otherwise.Vrecenter-redisplay
Non-nil means `recenter' redraws entire frame.
If this option is non-nil, then the `recenter' command with a nil
argument will redraw the entire frame; the special value `tty' causes
the frame to be redrawn only if it is a tty frame.Vwindow-combination-resize
If t, resize window combinations proportionally.
If this variable is nil, splitting a window gets the entire screen space
for displaying the new window from the window to split.  Deleting and
resizing a window preferably resizes one adjacent window only.

If this variable is t, splitting a window tries to get the space
proportionally from all windows in the same combination.  This also
allows splitting a window that is otherwise too small or of fixed size.
Resizing and deleting a window proportionally resize all windows in the
same combination.

Other values are reserved for future use.

A specific split operation may ignore the value of this variable if it
is affected by a non-nil value of `window-combination-limit'.Vwindow-combination-limit
If non-nil, splitting a window makes a new parent window.
The following values are recognized:

nil means splitting a window will create a new parent window only if the
    window has no parent window or the window shall become part of a
    combination orthogonal to the one it is part of.

`window-size' means that splitting a window for displaying a buffer
    makes a new parent window provided `display-buffer' is supposed to
    explicitly set the window's size due to the presence of a
    `window-height' or `window-width' entry in the alist used by
    `display-buffer'.  Otherwise, this value is handled like nil.

`temp-buffer-resize' means that splitting a window for displaying a
    temporary buffer via `with-temp-buffer-window' makes a new parent
    window only if `temp-buffer-resize-mode' is enabled.  Otherwise,
    this value is handled like nil.

`temp-buffer' means that splitting a window for displaying a temporary
    buffer via `with-temp-buffer-window' always makes a new parent
    window.  Otherwise, this value is handled like nil.

`display-buffer' means that splitting a window for displaying a buffer
    always makes a new parent window.  Since temporary buffers are
    displayed by the function `display-buffer', this value is stronger
    than `temp-buffer'.  Splitting a window for other purpose makes a
    new parent window only if needed.

t means that splitting a window always creates a new parent window.  If
    all splits behave this way, each frame's window tree is a binary
    tree and every window but the frame's root window has exactly one
    sibling.

The default value is `window-size'.  Other values are reserved for
future use.Vwindow-persistent-parameters
Alist of persistent window parameters.
This alist specifies which window parameters shall get saved by
`current-window-configuration' and `window-state-get' and subsequently
restored to their previous values by `set-window-configuration' and
`window-state-put'.

The car of each entry of this alist is the symbol specifying the
parameter.  The cdr is one of the following:

nil means the parameter is neither saved by `window-state-get' nor by
`current-window-configuration'.

t means the parameter is saved by `current-window-configuration' and,
provided its WRITABLE argument is nil, by `window-state-get'.

The symbol `writable' means the parameter is saved unconditionally by
both `current-window-configuration' and `window-state-get'.  Do not use
this value for parameters without read syntax (like windows or frames).

Parameters not saved by `current-window-configuration' or
`window-state-get' are left alone by `set-window-configuration'
respectively are not installed by `window-state-put'.Vwindow-resize-pixelwise
Non-nil means resize windows pixelwise.
This currently affects the functions: `split-window', `maximize-window',
`minimize-window', `fit-window-to-buffer' and `fit-frame-to-buffer', and
all functions that symmetrically resize a parent window.

Note that when a frame's pixel size is not a multiple of the
frame's character size, at least one window may get resized
pixelwise even if this option is nil.Vfast-but-imprecise-scrolling
When non-nil, accelerate scrolling operations.
This comes into play when scrolling rapidly over previously
unfontified buffer regions.  Only those portions of the buffer which
are actually going to be displayed get fontified.

Note that this optimization can cause the portion of the buffer
displayed after a scrolling operation to be somewhat inaccurate.Scharset.o
Fcharsetp
Return non-nil if and only if OBJECT is a charset.

(fn OBJECT)Fmap-charset-chars
Call FUNCTION for all characters in CHARSET.
Optional 3rd argument ARG is an additional argument to be passed
to FUNCTION, see below.
Optional 4th and 5th arguments FROM-CODE and TO-CODE specify the
range of code points (in CHARSET) of target characters on which to
map the FUNCTION.  Note that these are not character codes, but code
points of CHARSET; for the difference see `decode-char' and
`list-charset-chars'.  If FROM-CODE is nil or imitted, it stands for
the first code point of CHARSET; if TO-CODE is nil or omitted, it
stands for the last code point of CHARSET.

FUNCTION will be called with two arguments: RANGE and ARG.
RANGE is a cons (FROM .  TO), where FROM and TO specify a range of
characters that belong to CHARSET on which FUNCTION should do its
job.  FROM and TO are Emacs character codes, unlike FROM-CODE and
TO-CODE, which are CHARSET code points.

(fn FUNCTION CHARSET &optional ARG FROM-CODE TO-CODE)Fdefine-charset-internal
For internal use only.

(fn ...)Fdefine-charset-alias
Define ALIAS as an alias for charset CHARSET.

(fn ALIAS CHARSET)Fcharset-plist
Return the property list of CHARSET.

(fn CHARSET)Fset-charset-plist
Set CHARSET's property list to PLIST.

(fn CHARSET PLIST)Funify-charset
Unify characters of CHARSET with Unicode.
This means reading the relevant file and installing the table defined
by CHARSET's `:unify-map' property.

Optional second arg UNIFY-MAP is a file name string or a vector.  It has
the same meaning as the `:unify-map' attribute in the function
`define-charset' (which see).

Optional third argument DEUNIFY, if non-nil, means to de-unify CHARSET.

(fn CHARSET &optional UNIFY-MAP DEUNIFY)Fget-unused-iso-final-char
Return an unused ISO final char for a charset of DIMENSION and CHARS.
DIMENSION is the number of bytes to represent a character: 1 or 2.
CHARS is the number of characters in a dimension: 94 or 96.

This final char is for private use, thus the range is `0' (48) .. `?' (63).
If there's no unused final char for the specified kind of charset,
return nil.

(fn DIMENSION CHARS)Fdeclare-equiv-charset
Declare an equivalent charset for ISO-2022 decoding.

On decoding by an ISO-2022 base coding system, when a charset
specified by DIMENSION, CHARS, and FINAL-CHAR is designated, behave as
if CHARSET is designated instead.

(fn DIMENSION CHARS FINAL-CHAR CHARSET)Ffind-charset-region
Return a list of charsets in the region between BEG and END.
BEG and END are buffer positions.
Optional arg TABLE if non-nil is a translation table to look up.

If the current buffer is unibyte, the returned list may contain
only `ascii', `eight-bit-control', and `eight-bit-graphic'.

(fn BEG END &optional TABLE)Ffind-charset-string
Return a list of charsets in STR.
Optional arg TABLE if non-nil is a translation table to look up.

If STR is unibyte, the returned list may contain
only `ascii', `eight-bit-control', and `eight-bit-graphic'.

(fn STR &optional TABLE)Fdecode-char
Decode the pair of CHARSET and CODE-POINT into a character.
Return nil if CODE-POINT is not valid in CHARSET.

CODE-POINT may be a cons (HIGHER-16-BIT-VALUE . LOWER-16-BIT-VALUE),
although this usage is obsolescent.

(fn CHARSET CODE-POINT)Fencode-char
Encode the character CH into a code-point of CHARSET.
Return the encoded code-point as an integer,
or nil if CHARSET doesn't support CH.

(fn CH CHARSET)Fmake-char
Return a character of CHARSET whose position codes are CODEn.

CODE1 through CODE4 are optional, but if you don't supply sufficient
position codes, it is assumed that the minimum code in each dimension
is specified.

(fn CHARSET &optional CODE1 CODE2 CODE3 CODE4)Fsplit-char
Return list of charset and one to four position-codes of CH.
The charset is decided by the current priority order of charsets.
A position-code is a byte value of each dimension of the code-point of
CH in the charset.

(fn CH)Fchar-charset
Return the charset of highest priority that contains CH.
ASCII characters are an exception: for them, this function always
returns `ascii'.
If optional 2nd arg RESTRICTION is non-nil, it is a list of charsets
from which to find the charset.  It may also be a coding system.  In
that case, find the charset from what supported by that coding system.

(fn CH &optional RESTRICTION)Fcharset-after
Return charset of a character in the current buffer at position POS.
If POS is nil, it defaults to the current point.
If POS is out of range, the value is nil.

(fn &optional POS)Fiso-charset
Return charset of ISO's specification DIMENSION, CHARS, and FINAL-CHAR.

ISO 2022's designation sequence (escape sequence) distinguishes charsets
by their DIMENSION, CHARS, and FINAL-CHAR,
whereas Emacs distinguishes them by charset symbol.
See the documentation of the function `charset-info' for the meanings of
DIMENSION, CHARS, and FINAL-CHAR.

(fn DIMENSION CHARS FINAL-CHAR)Fclear-charset-maps
Internal use only.
Clear temporary charset mapping tables.
It should be called only from temacs invoked for dumping.

(fn)Fcharset-priority-list
Return the list of charsets ordered by priority.
HIGHESTP non-nil means just return the highest priority one.

(fn &optional HIGHESTP)Fset-charset-priority
Assign higher priority to the charsets given as arguments.

(fn &rest charsets)Fcharset-id-internal
Internal use only.
Return charset identification number of CHARSET.

(fn &optional CHARSET)Fsort-charsets
Sort charset list CHARSETS by a priority of each charset.
Return the sorted list.  CHARSETS is modified by side effects.
See also `charset-priority-list' and `set-charset-priority'.

(fn CHARSETS)Vcharset-map-path
List of directories to search for charset map files.Vinhibit-load-charset-map
Inhibit loading of charset maps.  Used when dumping Emacs.Vcharset-list
List of all charsets ever defined.Vcurrent-iso639-language
ISO639 language mnemonic symbol for the current language environment.
If the current language environment is for multiple languages (e.g. "Latin-1"),
the value may be a list of mnemonics.Scoding.o
Fcoding-system-p
Return t if OBJECT is nil or a coding-system.
See the documentation of `define-coding-system' for information
about coding-system objects.

(fn OBJECT)Fread-non-nil-coding-system
Read a coding system from the minibuffer, prompting with string PROMPT.
Return the symbol of the coding-system.

(fn PROMPT)Fread-coding-system
Read a coding system from the minibuffer, prompting with string PROMPT.
If the user enters null input, return second argument DEFAULT-CODING-SYSTEM.
Return the coding-system's symbol, or nil if both the user input and
DEFAULT-CODING-SYSTEM are empty or null.
Ignores case when completing coding systems (all Emacs coding systems
are lower-case).

(fn PROMPT &optional DEFAULT-CODING-SYSTEM)Fcheck-coding-system
Check validity of CODING-SYSTEM.
If valid, return CODING-SYSTEM, else signal a `coding-system-error' error.
It is valid if it is nil or a symbol defined as a coding system by the
function `define-coding-system'.

(fn CODING-SYSTEM)Fdetect-coding-region
Detect coding system of the text in the region between START and END.
Return a list of possible coding systems ordered by priority.
The coding systems to try and their priorities follows what
the function `coding-system-priority-list' (which see) returns.

If only ASCII characters are found (except for such ISO-2022 control
characters as ESC), it returns a list of single element `undecided'
or its subsidiary coding system according to a detected end-of-line
format.

If optional argument HIGHEST is non-nil, return the coding system of
highest priority.

(fn START END &optional HIGHEST)Fdetect-coding-string
Detect coding system of the text in STRING.
Return a list of possible coding systems ordered by priority.
The coding systems to try and their priorities follows what
the function `coding-system-priority-list' (which see) returns.

If only ASCII characters are found (except for such ISO-2022 control
characters as ESC), it returns a list of single element `undecided'
or its subsidiary coding system according to a detected end-of-line
format.

If optional argument HIGHEST is non-nil, return the coding system of
highest priority.

(fn STRING &optional HIGHEST)Ffind-coding-systems-region-internal
Internal use only.

(fn START END &optional EXCLUDE)Funencodable-char-position
Return position of first un-encodable character in a region.
START and END specify the region and CODING-SYSTEM specifies the
encoding to check.  Return nil if CODING-SYSTEM does encode the region.

If optional 4th argument COUNT is non-nil, it specifies at most how
many un-encodable characters to search.  In this case, the value is a
list of positions.

If optional 5th argument STRING is non-nil, it is a string to search
for un-encodable characters.  In that case, START and END are indexes
to the string and treated as in `substring'.

(fn START END CODING-SYSTEM &optional COUNT STRING)Fcheck-coding-systems-region
Check if text between START and END is encodable by CODING-SYSTEM-LIST.

START and END are buffer positions specifying the region.
CODING-SYSTEM-LIST is a list of coding systems to check.

If all coding systems in CODING-SYSTEM-LIST can encode the region, the
function returns nil.

If some of the coding systems cannot encode the whole region, value is
an alist, each element of which has the form (CODING-SYSTEM POS1 POS2 ...),
which means that CODING-SYSTEM cannot encode the text at buffer positions
POS1, POS2, ...

START may be a string.  In that case, check if the string is
encodable, and the value contains character indices into the string
instead of buffer positions.  END is ignored in this case.

If the current buffer (or START if it is a string) is unibyte, the value
is nil.

(fn START END CODING-SYSTEM-LIST)Fdecode-coding-region
Decode the current region using the specified coding system.
Interactively, prompt for the coding system to decode the region, and
replace the region with the decoded text.

"Decoding" means transforming bytes into readable text (characters).
If, for instance, you have a region that contains data that represents
the two bytes #xc2 #xa9, after calling this function with the utf-8
coding system, the region will contain the single
character ?\N{COPYRIGHT SIGN}.

When called from a program, takes four arguments:
	START, END, CODING-SYSTEM, and DESTINATION.
START and END are buffer positions.

Optional 4th arguments DESTINATION specifies where the decoded text goes.
If nil, the region between START and END is replaced by the decoded text.
If buffer, the decoded text is inserted in that buffer after point (point
does not move).  If that buffer is unibyte, it receives the individual
bytes of the internal representation of the decoded text.
In those cases, the length of the decoded text is returned.
If DESTINATION is t, the decoded text is returned.

This function sets `last-coding-system-used' to the precise coding system
used (which may be different from CODING-SYSTEM if CODING-SYSTEM is
not fully specified.)

(fn START END CODING-SYSTEM &optional DESTINATION)Fencode-coding-region
Encode the current region using the specified coding system.
Interactively, prompt for the coding system to encode the region, and
replace the region with the bytes that are the result of the encoding.

What's meant by "encoding" is transforming textual data (characters)
into bytes.  If, for instance, you have a region that contains the
single character ?\N{COPYRIGHT SIGN}, after calling this function with
the utf-8 coding system, the data in the region will represent the two
bytes #xc2 #xa9.

When called from a program, takes four arguments:
        START, END, CODING-SYSTEM and DESTINATION.
START and END are buffer positions.

Optional 4th argument DESTINATION specifies where the encoded text goes.
If nil, the region between START and END is replaced by the encoded text.
If buffer, the encoded text is inserted in that buffer after point (point
does not move).
In those cases, the length of the encoded text is returned.
If DESTINATION is t, the encoded text is returned.

This function sets `last-coding-system-used' to the precise coding system
used (which may be different from CODING-SYSTEM if CODING-SYSTEM is
not fully specified.)

(fn START END CODING-SYSTEM &optional DESTINATION)Finternal-encode-string-utf-8
Internal use only.

(fn STRING BUFFER NOCOPY HANDLE-8-BIT HANDLE-OVER-UNI ENCODE-METHOD COUNT)Finternal-decode-string-utf-8
Internal use only.

(fn STRING BUFFER NOCOPY HANDLE-8-BIT HANDLE-OVER-UNI DECODE-METHOD COUNT)Fdecode-coding-string
Decode STRING which is encoded in CODING-SYSTEM, and return the result.

Optional third arg NOCOPY non-nil means it is OK to return STRING itself
if the decoding operation is trivial.

Optional fourth arg BUFFER non-nil means that the decoded text is
inserted in that buffer after point (point does not move).  In this
case, the return value is the length of the decoded text.  If that
buffer is unibyte, it receives the individual bytes of the internal
representation of the decoded text.

This function sets `last-coding-system-used' to the precise coding system
used (which may be different from CODING-SYSTEM if CODING-SYSTEM is
not fully specified.)  The function does not change the match data.

(fn STRING CODING-SYSTEM &optional NOCOPY BUFFER)Fencode-coding-string
Encode STRING to CODING-SYSTEM, and return the result.

Optional third arg NOCOPY non-nil means it is OK to return STRING
itself if the encoding operation is trivial.

Optional fourth arg BUFFER non-nil means that the encoded text is
inserted in that buffer after point (point does not move).  In this
case, the return value is the length of the encoded text.

This function sets `last-coding-system-used' to the precise coding system
used (which may be different from CODING-SYSTEM if CODING-SYSTEM is
not fully specified.)  The function does not change the match data.

(fn STRING CODING-SYSTEM &optional NOCOPY BUFFER)Fdecode-sjis-char
Decode a Japanese character which has CODE in shift_jis encoding.
Return the corresponding character.

(fn CODE)Fencode-sjis-char
Encode a Japanese character CH to shift_jis encoding.
Return the corresponding code in SJIS.

(fn CH)Fdecode-big5-char
Decode a Big5 character which has CODE in BIG5 coding system.
Return the corresponding character.

(fn CODE)Fencode-big5-char
Encode the Big5 character CH to BIG5 coding system.
Return the corresponding character code in Big5.

(fn CH)Fset-terminal-coding-system-internal
Internal use only.

(fn CODING-SYSTEM &optional TERMINAL)Fset-safe-terminal-coding-system-internal
Internal use only.

(fn CODING-SYSTEM)Fterminal-coding-system
Return coding system specified for terminal output on the given terminal.
TERMINAL may be a terminal object, a frame, or nil for the selected
frame's terminal device.

(fn &optional TERMINAL)Fset-keyboard-coding-system-internal
Internal use only.

(fn CODING-SYSTEM &optional TERMINAL)Fkeyboard-coding-system
Return coding system specified for decoding keyboard input.

(fn &optional TERMINAL)Ffind-operation-coding-system
Choose a coding system for an operation based on the target name.
The value names a pair of coding systems: (DECODING-SYSTEM . ENCODING-SYSTEM).
DECODING-SYSTEM is the coding system to use for decoding
(in case OPERATION does decoding), and ENCODING-SYSTEM is the coding system
for encoding (in case OPERATION does encoding).

The first argument OPERATION specifies an I/O primitive:
  For file I/O, `insert-file-contents' or `write-region'.
  For process I/O, `call-process', `call-process-region', or `start-process'.
  For network I/O, `open-network-stream'.

The remaining arguments should be the same arguments that were passed
to the primitive.  Depending on which primitive, one of those arguments
is selected as the TARGET.  For example, if OPERATION does file I/O,
whichever argument specifies the file name is TARGET.

TARGET has a meaning which depends on OPERATION:
  For file I/O, TARGET is a file name (except for the special case below).
  For process I/O, TARGET is a process name.
  For network I/O, TARGET is a service name or a port number.

This function looks up what is specified for TARGET in
`file-coding-system-alist', `process-coding-system-alist',
or `network-coding-system-alist' depending on OPERATION.
They may specify a coding system, a cons of coding systems,
or a function symbol to call.
In the last case, we call the function with one argument,
which is a list of all the arguments given to this function.
If the function can't decide a coding system, it can return
`undecided' so that the normal code-detection is performed.

If OPERATION is `insert-file-contents', the argument corresponding to
TARGET may be a cons (FILENAME . BUFFER).  In that case, FILENAME is a
file name to look up, and BUFFER is a buffer that contains the file's
contents (not yet decoded).  If `file-coding-system-alist' specifies a
function to call for FILENAME, that function should examine the
contents of BUFFER instead of reading the file.

(fn OPERATION ARGUMENTS...)Fset-coding-system-priority
Assign higher priority to the coding systems given as arguments.
If multiple coding systems belong to the same category,
all but the first one are ignored.

(fn &rest coding-systems)Fcoding-system-priority-list
Return a list of coding systems ordered by their priorities.
The list contains a subset of coding systems; i.e. coding systems
assigned to each coding category (see `coding-category-list').

HIGHESTP non-nil means just return the highest priority one.

(fn &optional HIGHESTP)Fdefine-coding-system-internal
For internal use only.

(fn ...)Fcoding-system-put
Change value of CODING-SYSTEM's property PROP to VAL.

The following properties, if set by this function, override the values
of the corresponding attributes set by `define-coding-system':

  `:mnemonic', `:default-char', `:ascii-compatible-p'
  `:decode-translation-table', `:encode-translation-table',
  `:post-read-conversion', `:pre-write-conversion'

See `define-coding-system' for the description of these properties.
See `coding-system-get' and `coding-system-plist' for accessing the
property list of a coding-system.

(fn CODING-SYSTEM PROP VAL)Fdefine-coding-system-alias
Define ALIAS as an alias for CODING-SYSTEM.

(fn ALIAS CODING-SYSTEM)Fcoding-system-base
Return the base of CODING-SYSTEM.
Any alias or subsidiary coding system is not a base coding system.

(fn CODING-SYSTEM)Fcoding-system-plist
Return the property list of CODING-SYSTEM.

(fn CODING-SYSTEM)Fcoding-system-aliases
Return the list of aliases of CODING-SYSTEM.

(fn CODING-SYSTEM)Fcoding-system-eol-type
Return eol-type of CODING-SYSTEM.
An eol-type is an integer 0, 1, 2, or a vector of coding systems.

Integer values 0, 1, and 2 indicate a format of end-of-line; LF, CRLF,
and CR respectively.

A vector value indicates that a format of end-of-line should be
detected automatically.  Nth element of the vector is the subsidiary
coding system whose eol-type is N.

(fn CODING-SYSTEM)Vcoding-system-list
List of coding systems.

Do not alter the value of this variable manually.  This variable should be
updated by the functions `define-coding-system' and
`define-coding-system-alias'.Vcoding-system-alist
Alist of coding system names.
Each element is one element list of coding system name.
This variable is given to `completing-read' as COLLECTION argument.

Do not alter the value of this variable manually.  This variable should be
updated by `define-coding-system-alias'.Vcoding-category-list
List of coding-categories (symbols) ordered by priority.

On detecting a coding system, Emacs tries code detection algorithms
associated with each coding-category one by one in this order.  When
one algorithm agrees with a byte sequence of source text, the coding
system bound to the corresponding coding-category is selected.

Don't modify this variable directly, but use `set-coding-system-priority'.Vcoding-system-for-read
Specify the coding system for read operations.
It is useful to bind this variable with `let', but do not set it globally.
If the value is a coding system, it is used for decoding on read operation.
If not, an appropriate element is used from one of the coding system alists.
There are three such tables: `file-coding-system-alist',
`process-coding-system-alist', and `network-coding-system-alist'.Vcoding-system-for-write
Specify the coding system for write operations.
Programs bind this variable with `let', but you should not set it globally.
If the value is a coding system, it is used for encoding of output,
when writing it to a file and when sending it to a file or subprocess.

If this does not specify a coding system, an appropriate element
is used from one of the coding system alists.
There are three such tables: `file-coding-system-alist',
`process-coding-system-alist', and `network-coding-system-alist'.
For output to files, if the above procedure does not specify a coding system,
the value of `buffer-file-coding-system' is used.Vlast-coding-system-used
Coding system used in the latest file or process I/O.Vlast-code-conversion-error
Error status of the last code conversion.

When an error was detected in the last code conversion, this variable
is set to one of the following symbols.
  `insufficient-source'
  `inconsistent-eol'
  `invalid-source'
  `interrupted'
  `insufficient-memory'
When no error was detected, the value doesn't change.  So, to check
the error status of a code conversion by this variable, you must
explicitly set this variable to nil before performing code
conversion.Vinhibit-eol-conversion
Non-nil means always inhibit code conversion of end-of-line format.
See info node `Coding Systems' and info node `Text and Binary' concerning
such conversion.Vinherit-process-coding-system
Non-nil means process buffer inherits coding system of process output.
Bind it to t if the process output is to be treated as if it were a file
read from some filesystem.Vfile-coding-system-alist
Alist to decide a coding system to use for a file I/O operation.
The format is ((PATTERN . VAL) ...),
where PATTERN is a regular expression matching a file name,
VAL is a coding system, a cons of coding systems, or a function symbol.
If VAL is a coding system, it is used for both decoding and encoding
the file contents.
If VAL is a cons of coding systems, the car part is used for decoding,
and the cdr part is used for encoding.
If VAL is a function symbol, the function must return a coding system
or a cons of coding systems which are used as above.  The function is
called with an argument that is a list of the arguments with which
`find-operation-coding-system' was called.  If the function can't decide
a coding system, it can return `undecided' so that the normal
code-detection is performed.

See also the function `find-operation-coding-system'
and the variable `auto-coding-alist'.Vprocess-coding-system-alist
Alist to decide a coding system to use for a process I/O operation.
The format is ((PATTERN . VAL) ...),
where PATTERN is a regular expression matching a program name,
VAL is a coding system, a cons of coding systems, or a function symbol.
If VAL is a coding system, it is used for both decoding what received
from the program and encoding what sent to the program.
If VAL is a cons of coding systems, the car part is used for decoding,
and the cdr part is used for encoding.
If VAL is a function symbol, the function must return a coding system
or a cons of coding systems which are used as above.

See also the function `find-operation-coding-system'.Vnetwork-coding-system-alist
Alist to decide a coding system to use for a network I/O operation.
The format is ((PATTERN . VAL) ...),
where PATTERN is a regular expression matching a network service name
or is a port number to connect to,
VAL is a coding system, a cons of coding systems, or a function symbol.
If VAL is a coding system, it is used for both decoding what received
from the network stream and encoding what sent to the network stream.
If VAL is a cons of coding systems, the car part is used for decoding,
and the cdr part is used for encoding.
If VAL is a function symbol, the function must return a coding system
or a cons of coding systems which are used as above.

See also the function `find-operation-coding-system'.Vlocale-coding-system
Coding system to use with system messages.
Potentially also used for decoding keyboard input on X Windows, and is
used for encoding standard output and error streams.Veol-mnemonic-unix
String displayed in mode line for UNIX-like (LF) end-of-line format.Veol-mnemonic-dos
String displayed in mode line for DOS-like (CRLF) end-of-line format.Veol-mnemonic-mac
String displayed in mode line for MAC-like (CR) end-of-line format.Veol-mnemonic-undecided
String displayed in mode line when end-of-line format is not yet determined.Venable-character-translation
Non-nil enables character translation while encoding and decoding.Vstandard-translation-table-for-decode
Table for translating characters while decoding.Vstandard-translation-table-for-encode
Table for translating characters while encoding.Vcharset-revision-table
Alist of charsets vs revision numbers.
While encoding, if a charset (car part of an element) is found,
designate it with the escape sequence identifying revision (cdr part
of the element).Vdefault-process-coding-system
Cons of coding systems used for process I/O by default.
The car part is used for decoding a process output,
the cdr part is used for encoding a text to be sent to a process.Vlatin-extra-code-table
Table of extra Latin codes in the range 128..159 (inclusive).
This is a vector of length 256.
If Nth element is non-nil, the existence of code N in a file
(or output of subprocess) doesn't prevent it to be detected as
a coding system of ISO 2022 variant which has a flag
`accept-latin-extra-code' t (e.g. iso-latin-1) on reading a file
or reading output of a subprocess.
Only 128th through 159th elements have a meaning.Vselect-safe-coding-system-function
Function to call to select safe coding system for encoding a text.

If set, this function is called to force a user to select a proper
coding system which can encode the text in the case that a default
coding system used in each operation can't encode the text.  The
function should take care that the buffer is not modified while
the coding system is being selected.

The default value is `select-safe-coding-system' (which see).Vcoding-system-require-warning
Internal use only.
If non-nil, on writing a file, `select-safe-coding-system-function' is
called even if `coding-system-for-write' is non-nil.  The command
`universal-coding-system-argument' binds this variable to t temporarily.Vinhibit-iso-escape-detection
If non-nil, Emacs ignores ISO-2022 escape sequences during code detection.

When Emacs reads text, it tries to detect how the text is encoded.
This code detection is sensitive to escape sequences.  If Emacs sees
a valid ISO-2022 escape sequence, it assumes the text is encoded in one
of the ISO2022 encodings, and decodes text by the corresponding coding
system (e.g. `iso-2022-7bit').

However, there may be a case that you want to read escape sequences in
a file as is.  In such a case, you can set this variable to non-nil.
Then the code detection will ignore any escape sequences, and no text is
detected as encoded in some ISO-2022 encoding.  The result is that all
escape sequences become visible in a buffer.

The default value is nil, and it is strongly recommended not to change
it.  That is because many Emacs Lisp source files that contain
non-ASCII characters are encoded by the coding system `iso-2022-7bit'
in Emacs's distribution, and they won't be decoded correctly on
reading if you suppress escape sequence detection.

The other way to read escape sequences in a file without decoding is
to explicitly specify some coding system that doesn't use ISO-2022
escape sequence (e.g., `latin-1') on reading by \[universal-coding-system-argument].Vinhibit-null-byte-detection
If non-nil, Emacs ignores null bytes on code detection.
By default, Emacs treats it as binary data, and does not attempt to
decode it.  The effect is as if you specified `no-conversion' for
reading that text.

Set this to non-nil when a regular text happens to include null bytes.
Examples are Index nodes of Info files and null-byte delimited output
from GNU Find and GNU Grep.  Emacs will then ignore the null bytes and
decode text as usual.Vdisable-ascii-optimization
If non-nil, Emacs does not optimize code decoder for ASCII files.
Internal use only.  Remove after the experimental optimizer becomes stable.Vtranslation-table-for-input
Char table for translating self-inserting characters.
This is applied to the result of input methods, not their input.
See also `keyboard-translate-table'.

Use of this variable for character code unification was rendered
obsolete in Emacs 23.1 and later, since Unicode is now the basis of
internal character representation.Scategory.o
Fmake-category-set
Return a newly created category-set which contains CATEGORIES.
CATEGORIES is a string of category mnemonics.
The value is a bool-vector which has t at the indices corresponding to
those categories.

(fn CATEGORIES)Fdefine-category
Define CATEGORY as a category which is described by DOCSTRING.
CATEGORY should be an ASCII printing character in the range ` ' to `~'.
DOCSTRING is the documentation string of the category.  The first line
should be a terse text (preferably less than 16 characters),
and the rest lines should be the full description.
The category is defined only in category table TABLE, which defaults to
the current buffer's category table.

(fn CATEGORY DOCSTRING &optional TABLE)Fcategory-docstring
Return the documentation string of CATEGORY, as defined in TABLE.
TABLE should be a category table and defaults to the current buffer's
category table.

(fn CATEGORY &optional TABLE)Fget-unused-category
Return a category which is not yet defined in TABLE.
If no category remains available, return nil.
The optional argument TABLE specifies which category table to modify;
it defaults to the current buffer's category table.

(fn &optional TABLE)Fcategory-table-p
Return t if ARG is a category table.

(fn ARG)Fcategory-table
Return the current category table.
This is the one specified by the current buffer.

(fn)Fstandard-category-table
Return the standard category table.
This is the one used for new buffers.

(fn)Fcopy-category-table
Construct a new category table and return it.
It is a copy of the TABLE, which defaults to the standard category table.

(fn &optional TABLE)Fmake-category-table
Construct a new and empty category table and return it.

(fn)Fset-category-table
Specify TABLE as the category table for the current buffer.
Return TABLE.

(fn TABLE)Fchar-category-set
Return the category set of CHAR.

(fn CHAR)Fcategory-set-mnemonics
Return a string containing mnemonics of the categories in CATEGORY-SET.
CATEGORY-SET is a bool-vector, and the categories "in" it are those
that are indexes where t occurs in the bool-vector.
The return value is a string containing those same categories.

(fn CATEGORY-SET)Fmodify-category-entry
Modify the category set of CHARACTER by adding CATEGORY to it.
The category is changed only for table TABLE, which defaults to
the current buffer's category table.
CHARACTER can be either a single character or a cons representing the
lower and upper ends of an inclusive character range to modify.
CATEGORY must be a category name (a character between ` ' and `~').
Use `describe-categories' to see existing category names.
If optional fourth argument RESET is non-nil,
then delete CATEGORY from the category set instead of adding it.

(fn CHARACTER CATEGORY &optional TABLE RESET)Vword-combining-categories
List of pair (cons) of categories to determine word boundary.

Emacs treats a sequence of word constituent characters as a single
word (i.e. finds no word boundary between them) only if they belong to
the same script.  But, exceptions are allowed in the following cases.

(1) The case that characters are in different scripts is controlled
by the variable `word-combining-categories'.

Emacs finds no word boundary between characters of different scripts
if they have categories matching some element of this list.

More precisely, if an element of this list is a cons of category CAT1
and CAT2, and a multibyte character C1 which has CAT1 is followed by
C2 which has CAT2, there's no word boundary between C1 and C2.

For instance, to tell that Han characters followed by Hiragana
characters can form a single word, the element `(?C . ?H)' should be
in this list.

(2) The case that character are in the same script is controlled by
the variable `word-separating-categories'.

Emacs finds a word boundary between characters of the same script
if they have categories matching some element of this list.

More precisely, if an element of this list is a cons of category CAT1
and CAT2, and a multibyte character C1 which has CAT1 but not CAT2 is
followed by C2 which has CAT2 but not CAT1, there's a word boundary
between C1 and C2.

For instance, to tell that there's a word boundary between Hiragana
and Katakana (both are in the same script `kana'),
the element `(?H . ?K)' should be in this list.Vword-separating-categories
List of pair (cons) of categories to determine word boundary.
See the documentation of the variable `word-combining-categories'.Sccl.o
Fccl-program-p
Return t if OBJECT is a CCL program name or a compiled CCL program code.
See the documentation of `define-ccl-program' for the detail of CCL program.

(fn OBJECT)Fccl-execute
Execute CCL-PROGRAM with registers initialized by REGISTERS.

CCL-PROGRAM is a CCL program name (symbol)
or compiled code generated by `ccl-compile' (for backward compatibility.
In the latter case, the execution overhead is bigger than in the former).
No I/O commands should appear in CCL-PROGRAM.

REGISTERS is a vector of [R0 R1 ... R7] where RN is an initial value
for the Nth register.

As side effect, each element of REGISTERS holds the value of
the corresponding register after the execution.

See the documentation of `define-ccl-program' for a definition of CCL
programs.

(fn CCL-PROG REG)Fccl-execute-on-string
Execute CCL-PROGRAM with initial STATUS on STRING.

CCL-PROGRAM is a symbol registered by `register-ccl-program',
or a compiled code generated by `ccl-compile' (for backward compatibility,
in this case, the execution is slower).

Read buffer is set to STRING, and write buffer is allocated automatically.

STATUS is a vector of [R0 R1 ... R7 IC], where
 R0..R7 are initial values of corresponding registers,
 IC is the instruction counter specifying from where to start the program.
If R0..R7 are nil, they are initialized to 0.
If IC is nil, it is initialized to head of the CCL program.

If optional 4th arg CONTINUE is non-nil, keep IC on read operation
when read buffer is exhausted, else, IC is always set to the end of
CCL-PROGRAM on exit.

It returns the contents of write buffer as a string,
 and as side effect, STATUS is updated.
If the optional 5th arg UNIBYTE-P is non-nil, the returned string
is a unibyte string.  By default it is a multibyte string.

See the documentation of `define-ccl-program' for the detail of CCL program.

(fn CCL-PROGRAM STATUS STRING &optional CONTINUE UNIBYTE-P)Fregister-ccl-program
Register CCL program CCL-PROG as NAME in `ccl-program-table'.
CCL-PROG should be a compiled CCL program (vector), or nil.
If it is nil, just reserve NAME as a CCL program name.
Return index number of the registered CCL program.

(fn NAME CCL-PROG)Fregister-code-conversion-map
Register SYMBOL as code conversion map MAP.
Return index number of the registered map.

(fn SYMBOL MAP)Vcode-conversion-map-vector
Vector of code conversion maps.Vfont-ccl-encoder-alist
Alist of fontname patterns vs corresponding CCL program.
Each element looks like (REGEXP . CCL-CODE),
 where CCL-CODE is a compiled CCL program.
When a font whose name matches REGEXP is used for displaying a character,
 CCL-CODE is executed to calculate the code point in the font
 from the charset number and position code(s) of the character which are set
 in CCL registers R0, R1, and R2 before the execution.
The code point in the font is set in CCL registers R1 and R2
 when the execution terminated.
 If the font is single-byte font, the register R2 is not used.Vtranslation-hash-table-vector
Vector containing all translation hash tables ever defined.
Comprises pairs (SYMBOL . TABLE) where SYMBOL and TABLE were set up by calls
to `define-translation-hash-table'.  The vector is indexed by the table id
used by CCL.Scharacter.o
Fcharacterp
Return non-nil if OBJECT is a character.
In Emacs Lisp, characters are represented by character codes, which
are non-negative integers.  The function `max-char' returns the
maximum character code.

(fn OBJECT)Fmax-char
Return the maximum character code.
If UNICODE is non-nil, return the maximum character code defined
by the Unicode Standard.

(fn &optional UNICODE)Funibyte-char-to-multibyte
Convert the byte CH to multibyte character.

(fn CH)Fmultibyte-char-to-unibyte
Convert the multibyte character CH to a byte.
If the multibyte character does not represent a byte, return -1.

(fn CH)Fchar-width
Return width of CHAR in columns when displayed in the current buffer.
The width of CHAR is measured by how many columns it will occupy on the screen.
This is based on data in `char-width-table', and ignores the actual
metrics of the character's glyph as determined by its font.
If the display table in effect replaces CHAR on display with
something else, the function returns the width of the replacement.
Tab is taken to occupy `tab-width' columns.

(fn CHAR)Fstring-width
Return width of STRING in columns when displayed in the current buffer.
Width of STRING is measured by how many columns it will occupy on the screen.

Optional arguments FROM and TO specify the substring of STRING to
consider, and are interpreted as in `substring'.

Width of each character in STRING is generally taken according to
`char-width', but character compositions and the display table in
effect are taken into consideration.
Tabs in STRING are always assumed to occupy `tab-width' columns,
although they might take fewer columns depending on the column where
they begin on display.
The effect of faces and fonts, including fonts used for non-Latin and
other unusual characters, such as emoji, is ignored, as are display
properties and invisible text.

For these reasons, the results are just an approximation, especially
on GUI frames; for accurate dimensions of text as it will be
displayed, use `string-pixel-width' or `window-text-pixel-size'
instead.

(fn STRING &optional FROM TO)Fstring
Concatenate all the argument characters and make the result a string.

(fn &rest CHARACTERS)Funibyte-string
Concatenate all the argument bytes and make the result a unibyte string.

(fn &rest BYTES)Fchar-resolve-modifiers
Resolve modifiers in the character CHAR.
The value is a character with modifiers resolved into the character
code.  Unresolved modifiers are kept in the value.

(fn CHAR)Fget-byte
Return a byte value of a character at point.
Optional 1st arg POSITION, if non-nil, is a position of a character to get
a byte value.
Optional 2nd arg STRING, if non-nil, is a string of which first
character is a target to get a byte value.  In this case, POSITION, if
non-nil, is an index of a target character in the string.

If the current buffer (or STRING) is multibyte, and the target
character is not ASCII nor 8-bit character, an error is signaled.

(fn &optional POSITION STRING)Vtranslation-table-vector
Vector recording all translation tables ever defined.
Each element is a pair (SYMBOL . TABLE) relating the table to the
symbol naming it.  The ID of a translation table is an index into this vector.Vauto-fill-chars
A char-table for characters which invoke auto-filling.
Such characters have value t in this table.Vchar-width-table
A char-table for width (columns) of each character.Vambiguous-width-chars
A char-table for characters whose width (columns) can be 1 or 2.

The actual width depends on the language-environment and on the
value of `cjk-ambiguous-chars-are-wide'.Vprintable-chars
A char-table for each printable character.Vchar-script-table
Char table of script symbols.
It has one extra slot whose value is a list of script symbols.Vscript-representative-chars
Alist of scripts vs the representative characters.
Each element is a cons (SCRIPT . CHARS).
SCRIPT is a symbol representing a script or a subgroup of a script.
CHARS is a list or a vector of characters.
If it is a list, all characters in the list are necessary for supporting SCRIPT.
If it is a vector, one of the characters in the vector is necessary.
This variable is used to find a font for a specific script.Vunicode-category-table
Char table of Unicode's "General Category".
All Unicode characters have one of the following values (symbol):
  Lu, Ll, Lt, Lm, Lo, Mn, Mc, Me, Nd, Nl, No, Pc, Pd, Ps, Pe, Pi, Pf, Po,
  Sm, Sc, Sk, So, Zs, Zl, Zp, Cc, Cf, Cs, Co, Cn
See The Unicode Standard for the meaning of those values.Schartab.o
Fmake-char-table
Return a newly created char-table, with purpose PURPOSE.
Each element is initialized to INIT, which defaults to nil.

PURPOSE should be a symbol.  If it has a `char-table-extra-slots'
property, the property's value should be an integer between 0 and 10
that specifies how many extra slots the char-table has.  Otherwise,
the char-table has no extra slot.

(fn PURPOSE &optional INIT)Fchar-table-subtype
Return the subtype of char-table CHAR-TABLE.  The value is a symbol.

(fn CHAR-TABLE)Fchar-table-parent
Return the parent char-table of CHAR-TABLE.
The value is either nil or another char-table.
If CHAR-TABLE holds nil for a given character,
then the actual applicable value is inherited from the parent char-table
(or from its parents, if necessary).

(fn CHAR-TABLE)Fset-char-table-parent
Set the parent char-table of CHAR-TABLE to PARENT.
Return PARENT.  PARENT must be either nil or another char-table.

(fn CHAR-TABLE PARENT)Fchar-table-extra-slot
Return the value of CHAR-TABLE's extra-slot number N.

(fn CHAR-TABLE N)Fset-char-table-extra-slot
Set CHAR-TABLE's extra-slot number N to VALUE.

(fn CHAR-TABLE N VALUE)Fchar-table-range
Return the value in CHAR-TABLE for a range of characters RANGE.
RANGE should be nil (for the default value),
a cons of character codes (for characters in the range), or a character code.
If RANGE is a cons (FROM . TO), the function returns the value for FROM.

(fn CHAR-TABLE RANGE)Fset-char-table-range
Set the value in CHAR-TABLE for a range of characters RANGE to VALUE.
RANGE should be t (for all characters), nil (for the default value),
a cons of character codes (for characters in the range),
or a character code.  Return VALUE.

(fn CHAR-TABLE RANGE VALUE)Foptimize-char-table
Optimize CHAR-TABLE.
TEST is the comparison function used to decide whether two entries are
equivalent and can be merged.  It defaults to `equal'.

(fn CHAR-TABLE &optional TEST)Fmap-char-table
Call FUNCTION for each character in CHAR-TABLE that has non-nil value.
FUNCTION is called with two arguments, KEY and VALUE.
KEY is a character code or a cons of character codes specifying a
range of characters that have the same value.
VALUE is what (char-table-range CHAR-TABLE KEY) returns.

(fn FUNCTION CHAR-TABLE)Funicode-property-table-internal
Return a char-table for Unicode character property PROP.
Use `get-unicode-property-internal' and
`put-unicode-property-internal' instead of `aref' and `aset' to get
and put an element value.

(fn PROP)Fget-unicode-property-internal
Return an element of CHAR-TABLE for character CH.
CHAR-TABLE must be what returned by `unicode-property-table-internal'.

(fn CHAR-TABLE CH)Fput-unicode-property-internal
Set an element of CHAR-TABLE for character CH to VALUE.
CHAR-TABLE must be what returned by `unicode-property-table-internal'.

(fn CHAR-TABLE CH VALUE)Vchar-code-property-alist
Alist of character property name vs char-table containing property values.
Internal use only.Sbidi.o
Scm.o
Sterm.o
Ftty-display-color-p
Return non-nil if the tty device TERMINAL can display colors.

TERMINAL can be a terminal object, a frame, or nil (meaning the
selected frame's terminal).  This function always returns nil if
TERMINAL does not refer to a text terminal.

(fn &optional TERMINAL)Ftty-display-color-cells
Return the number of colors supported by the tty device TERMINAL.

TERMINAL can be a terminal object, a frame, or nil (meaning the
selected frame's terminal).  This function always returns 0 if
TERMINAL does not refer to a text terminal.

(fn &optional TERMINAL)Ftty-type
Return the type of the tty device that TERMINAL uses.
Returns nil if TERMINAL is not on a tty device.

TERMINAL can be a terminal object, a frame, or nil (meaning the
selected frame's terminal).

(fn &optional TERMINAL)Fcontrolling-tty-p
Return non-nil if TERMINAL is the controlling tty of the Emacs process.

TERMINAL can be a terminal object, a frame, or nil (meaning the
selected frame's terminal).  This function always returns nil if
TERMINAL is not on a tty device.

(fn &optional TERMINAL)Ftty-no-underline
Declare that the tty used by TERMINAL does not handle underlining.
This is used to override the terminfo data, for certain terminals that
do not really do underlining, but say that they do.  This function has
no effect if used on a non-tty terminal.

TERMINAL can be a terminal object, a frame or nil (meaning the
selected frame's terminal).  This function always returns nil if
TERMINAL does not refer to a text terminal.

(fn &optional TERMINAL)Ftty-top-frame
Return the topmost terminal frame on TERMINAL.
TERMINAL can be a terminal object, a frame or nil (meaning the
selected frame's terminal).  This function returns nil if TERMINAL
does not refer to a text terminal.  Otherwise, it returns the
top-most frame on the text terminal.

(fn &optional TERMINAL)Fsuspend-tty
Suspend the terminal device TTY.

The device is restored to its default state, and Emacs ceases all
access to the tty device.  Frames that use the device are not deleted,
but input is not read from them and if they change, their display is
not updated.

TTY may be a terminal object, a frame, or nil for the terminal device
of the currently selected frame.

This function runs `suspend-tty-functions' after suspending the
device.  The functions are run with one arg, the id of the suspended
terminal device.

`suspend-tty' does nothing if it is called on a device that is already
suspended.

A suspended tty may be resumed by calling `resume-tty' on it.

(fn &optional TTY)Fresume-tty
Resume the previously suspended terminal device TTY.
The terminal is opened and reinitialized.  Frames that are on the
suspended terminal are revived.

It is an error to resume a terminal while another terminal is active
on the same device.

This function runs `resume-tty-functions' after resuming the terminal.
The functions are run with one arg, the id of the resumed terminal
device.

`resume-tty' does nothing if it is called on a device that is not
suspended.

TTY may be a terminal object, a frame, or nil (meaning the selected
frame's terminal).

(fn &optional TTY)Ftty--set-output-buffer-size
Set the output buffer size for a TTY.

SIZE zero means use the system's default value.  If SIZE is
non-zero, this also avoids flushing the output stream.

TTY may be a terminal object, a frame, or nil (meaning the selected
frame's terminal).

This function temporarily suspends and resumes the terminal
device.

(fn SIZE &optional TTY)Ftty--output-buffer-size
Return the output buffer size of TTY.

TTY may be a terminal object, a frame, or nil (meaning the selected
frame's terminal).

A value of zero means TTY uses the system's default value.

(fn &optional TTY)Fgpm-mouse-start
Open a connection to Gpm.
Gpm-mouse can only be activated for one tty at a time.

(fn)Fgpm-mouse-stop
Close a connection to Gpm.

(fn)Vsystem-uses-terminfo
Non-nil means the system uses terminfo rather than termcap.
This variable can be used by terminal emulator packages.Vsuspend-tty-functions
Functions run after suspending a tty.
The functions are run with one argument, the terminal object to be suspended.
See `suspend-tty'.Vresume-tty-functions
Functions run after resuming a tty.
The functions are run with one argument, the terminal object that was revived.
See `resume-tty'.Vvisible-cursor
Non-nil means to make the cursor very visible.
This only has an effect when running in a text terminal.
What means "very visible" is up to your terminal.  It may make the cursor
bigger, or it may make it blink, or it may do nothing at all.Vtty-menu-calls-mouse-position-function
Non-nil means TTY menu code will call `mouse-position-function'.
This should be set if the function in `mouse-position-function' does not
trigger redisplay.Sterminal.o
Fdelete-terminal
Delete TERMINAL by deleting all frames on it and closing the terminal.
TERMINAL may be a terminal object, a frame, or nil (meaning the
selected frame's terminal).

Normally, you may not delete a display if all other displays are suspended,
but if the second argument FORCE is non-nil, you may do so.

(fn &optional TERMINAL FORCE)Fframe-terminal
Return the terminal that FRAME is displayed on.
If FRAME is nil, use the selected frame.

The terminal device is represented by its integer identifier.

(fn &optional FRAME)Fterminal-live-p
Return non-nil if OBJECT is a terminal which has not been deleted.
Return nil if OBJECT is not a live display terminal.
OBJECT may be a terminal object, a frame, or nil (meaning the
selected frame's terminal).
If OBJECT is a live display terminal, return what sort of output
terminal it uses.  See the documentation of `framep' for possible
return values.

(fn OBJECT)Fterminal-list
Return a list of all terminal devices.

(fn)Fterminal-name
Return the name of the terminal device TERMINAL.
It is not guaranteed that the returned value is unique among opened devices.

TERMINAL may be a terminal object, a frame, or nil (meaning the
selected frame's terminal).

(fn &optional TERMINAL)Fterminal-parameters
Return the parameter-alist of terminal TERMINAL.
The value is a list of elements of the form (PARM . VALUE), where PARM
is a symbol.

TERMINAL can be a terminal object, a frame, or nil (meaning the
selected frame's terminal).

(fn &optional TERMINAL)Fterminal-parameter
Return TERMINAL's value for parameter PARAMETER.
TERMINAL can be a terminal object, a frame, or nil (meaning the
selected frame's terminal).

(fn TERMINAL PARAMETER)Fset-terminal-parameter
Set TERMINAL's value for parameter PARAMETER to VALUE.
Return the previous value of PARAMETER.

TERMINAL can be a terminal object, a frame or nil (meaning the
selected frame's terminal).

(fn TERMINAL PARAMETER VALUE)Vring-bell-function
Non-nil means call this function to ring the bell.
The function should accept no arguments.Vdelete-terminal-functions
Special hook run when a terminal is deleted.
Each function is called with argument, the terminal.
This may be called just before actually deleting the terminal,
or some time later.Sxfaces.o
Fdump-colors
Dump currently allocated colors to stderr.

(fn)Fclear-face-cache
Clear face caches on all frames.
Optional THOROUGHLY non-nil means try to free unused fonts, too.

(fn &optional THOROUGHLY)Fbitmap-spec-p
Value is non-nil if OBJECT is a valid bitmap specification.
A bitmap specification is either a string, a file name, or a list
(WIDTH HEIGHT DATA) where WIDTH is the pixel width of the bitmap,
HEIGHT is its height, and DATA is a string containing the bits of
the pixmap.  Bits are stored row by row, each row occupies
(WIDTH + 7)/8 bytes.

(fn OBJECT)Fcolor-values-from-color-spec
Parse color SPEC as a numeric color and return (RED GREEN BLUE).
This function recognizes the following formats for SPEC:

 #RGB, where R, G and B are hex numbers of equal length, 1-4 digits each.
 rgb:R/G/B, where R, G, and B are hex numbers, 1-4 digits each.
 rgbi:R/G/B, where R, G and B are floating-point numbers in [0,1].

If SPEC is not in one of the above forms, return nil.

Each of the 3 integer members of the resulting list, RED, GREEN, and BLUE,
is normalized to have its value in [0,65535].

(fn SPEC)Fcolor-gray-p
Return non-nil if COLOR is a shade of gray (or white or black).
FRAME specifies the frame and thus the display for interpreting COLOR.
If FRAME is nil or omitted, use the selected frame.

(fn COLOR &optional FRAME)Fcolor-supported-p
Return non-nil if COLOR can be displayed on FRAME.
BACKGROUND-P non-nil means COLOR is used as a background.
Otherwise, this function tells whether it can be used as a foreground.
If FRAME is nil or omitted, use the selected frame.
COLOR must be a valid color name.

(fn COLOR &optional FRAME BACKGROUND-P)Fx-family-fonts
Return a list of available fonts of family FAMILY on FRAME.
If FAMILY is omitted or nil, list all families.
Otherwise, FAMILY must be a string, possibly containing wildcards
`?' and `*'.
If FRAME is omitted or nil, use the selected frame.

Each element of the result is a vector [FAMILY WIDTH POINT-SIZE WEIGHT
SLANT FIXED-P FULL REGISTRY-AND-ENCODING].

FAMILY is the font family name.
POINT-SIZE is the size of the font in 1/10 pt.
WIDTH, WEIGHT, and SLANT are symbols describing the width, weight
  and slant of the font.  These symbols are the same as for face
  attributes, see `set-face-attribute'.
FIXED-P is non-nil if the font is fixed-pitch.
FULL is the full name of the font.
REGISTRY-AND-ENCODING is a string giving the registry and encoding of
  the font.

The resulting list is sorted according to the current setting of
the face font sort order, see `face-font-selection-order'.

(fn &optional FAMILY FRAME)Fx-list-fonts
Return a list of the names of available fonts matching PATTERN.
If optional arguments FACE and FRAME are specified, return only fonts
the same size as FACE on FRAME.

PATTERN should be a string containing a font name in the XLFD,
Fontconfig, or GTK format.  A font name given in the XLFD format may
contain wildcard characters:
  the * character matches any substring, and
  the ? character matches any single character.
  PATTERN is case-insensitive.

The return value is a list of strings, suitable as arguments to
`set-face-font'.

Fonts Emacs can't use may or may not be excluded
even if they match PATTERN and FACE.
The optional fourth argument MAXIMUM sets a limit on how many
fonts to match.  The first MAXIMUM fonts are reported.
The optional fifth argument WIDTH, if specified, is a number of columns
occupied by a character of a font.  In that case, return only fonts
the WIDTH times as wide as FACE on FRAME.

(fn PATTERN &optional FACE FRAME MAXIMUM WIDTH)Finternal-make-lisp-face
Make FACE, a symbol, a Lisp face with all attributes nil.
If FACE was not known as a face before, create a new one.
If optional argument FRAME is specified, make a frame-local face
for that frame.  Otherwise operate on the global face definition.
Value is a vector of face attributes.

(fn FACE &optional FRAME)Finternal-lisp-face-p
Return non-nil if FACE names a face.
FACE should be a symbol or string.
If optional second argument FRAME is non-nil, check for the
existence of a frame-local face with name FACE on that frame.
Otherwise check for the existence of a global face.

(fn FACE &optional FRAME)Finternal-copy-lisp-face
Copy face FROM to TO.
If FRAME is t, copy the global face definition of FROM.
Otherwise, copy the frame-local definition of FROM on FRAME.
If NEW-FRAME is a frame, copy that data into the frame-local
definition of TO on NEW-FRAME.  If NEW-FRAME is nil,
FRAME controls where the data is copied to.

The value is TO.

(fn FROM TO FRAME NEW-FRAME)Finternal-set-lisp-face-attribute
Set attribute ATTR of FACE to VALUE.
FRAME being a frame means change the face on that frame.
FRAME nil means change the face of the selected frame.
FRAME t means change the default for new frames.
FRAME 0 means change the face on all frames, and change the default
  for new frames.

(fn FACE ATTR VALUE &optional FRAME)Finternal-face-x-get-resource
Get the value of X resource RESOURCE, class CLASS.
Returned value is for the display of frame FRAME.  If FRAME is not
specified or nil, use selected frame.  This function exists because
ordinary `x-get-resource' doesn't take a frame argument.

(fn RESOURCE CLASS &optional FRAME)Finternal-set-lisp-face-attribute-from-resource


(fn FACE ATTR VALUE &optional FRAME)Fface-attribute-relative-p
Check whether a face attribute value is relative.
Specifically, this function returns t if the attribute ATTRIBUTE
with the value VALUE is relative.

A relative value is one that doesn't entirely override whatever is
inherited from another face.  For most possible attributes,
the only relative value that users see is `unspecified'.
However, for :height, floating point values are also relative.

(fn ATTRIBUTE VALUE)Fmerge-face-attribute
Return face ATTRIBUTE VALUE1 merged with VALUE2.
If VALUE1 or VALUE2 are absolute (see `face-attribute-relative-p'), then
the result will be absolute, otherwise it will be relative.

(fn ATTRIBUTE VALUE1 VALUE2)Finternal-get-lisp-face-attribute
Return face attribute KEYWORD of face SYMBOL.
If SYMBOL does not name a valid Lisp face or KEYWORD isn't a valid
face attribute name, signal an error.
If the optional argument FRAME is given, report on face SYMBOL in that
frame.  If FRAME is t, report on the defaults for face SYMBOL (for new
frames).  If FRAME is omitted or nil, use the selected frame.

(fn SYMBOL KEYWORD &optional FRAME)Finternal-lisp-face-attribute-values
Return a list of valid discrete values for face attribute ATTR.
Value is nil if ATTR doesn't have a discrete set of valid values.

(fn ATTR)Finternal-merge-in-global-face
Add attributes from frame-default definition of FACE to FACE on FRAME.
Default face attributes override any local face attributes.

(fn FACE FRAME)Fface-font
Return the font name of face FACE, or nil if it is unspecified.
The font name is, by default, for ASCII characters.
If the optional argument FRAME is given, report on face FACE in that frame.
If FRAME is t, report on the defaults for face FACE (for new frames).
  The font default for a face is either nil, or a list
  of the form (bold), (italic) or (bold italic).
If FRAME is omitted or nil, use the selected frame.
If FRAME is anything but t, and the optional third argument CHARACTER
is given, return the font name used by FACE for CHARACTER on FRAME.

(fn FACE &optional FRAME CHARACTER)Finternal-lisp-face-equal-p
True if FACE1 and FACE2 are equal.
If the optional argument FRAME is given, report on FACE1 and FACE2 in that frame.
If FRAME is t, report on the defaults for FACE1 and FACE2 (for new frames).
If FRAME is omitted or nil, use the selected frame.

(fn FACE1 FACE2 &optional FRAME)Finternal-lisp-face-empty-p
True if FACE has no attribute specified.
If the optional argument FRAME is given, report on face FACE in that frame.
If FRAME is t, report on the defaults for face FACE (for new frames).
If FRAME is omitted or nil, use the selected frame.

(fn FACE &optional FRAME)Fframe--face-hash-table
Return a hash table of frame-local faces defined on FRAME.
For internal use only.

(fn &optional FRAME)Fcolor-distance
Return an integer distance between COLOR1 and COLOR2 on FRAME.
COLOR1 and COLOR2 may be either strings containing the color name,
or lists of the form (RED GREEN BLUE), each in the range 0 to 65535 inclusive.
If FRAME is unspecified or nil, the current frame is used.
If METRIC is specified, it should be a function that accepts
two lists of the form (RED GREEN BLUE) aforementioned.
Despite the name, this is not a true distance metric as it does not satisfy
the triangle inequality.

(fn COLOR1 COLOR2 &optional FRAME METRIC)Fface-attributes-as-vector
Return a vector of face attributes corresponding to PLIST.

(fn PLIST)Fdisplay-supports-face-attributes-p
Return non-nil if all the face attributes in ATTRIBUTES are supported.
The optional argument DISPLAY can be a display name, a frame, or
nil (meaning the selected frame's display).

For instance, to check whether the display supports underlining:

  (display-supports-face-attributes-p \='(:underline t))

The definition of `supported' is somewhat heuristic, but basically means
that a face containing all the attributes in ATTRIBUTES, when merged
with the default face for display, can be represented in a way that's

 (1) different in appearance from the default face, and
 (2) `close in spirit' to what the attributes specify, if not exact.

Point (2) implies that a `:weight black' attribute will be satisfied by
any display that can display bold, and a `:foreground "yellow"' as long
as it can display a yellowish color, but `:slant italic' will _not_ be
satisfied by the tty display code's automatic substitution of a `dim'
face for italic.

(fn ATTRIBUTES &optional DISPLAY)Finternal-set-font-selection-order
Set font selection order for face font selection to ORDER.
ORDER must be a list of length 4 containing the symbols `:width',
`:height', `:weight', and `:slant'.  Face attributes appearing
first in ORDER are matched first, e.g. if `:height' appears before
`:weight' in ORDER, font selection first tries to find a font with
a suitable height, and then tries to match the font weight.
Value is ORDER.

(fn ORDER)Finternal-set-alternative-font-family-alist
Define alternative font families to try in face font selection.
ALIST is an alist of (FAMILY ALTERNATIVE1 ALTERNATIVE2 ...) entries.
Each ALTERNATIVE is tried in order if no fonts of font family FAMILY can
be found.  Value is ALIST.

(fn ALIST)Finternal-set-alternative-font-registry-alist
Define alternative font registries to try in face font selection.
ALIST is an alist of (REGISTRY ALTERNATIVE1 ALTERNATIVE2 ...) entries.
Each ALTERNATIVE is tried in order if no fonts of font registry REGISTRY can
be found.  Value is ALIST.

(fn ALIST)Ftty-suppress-bold-inverse-default-colors
Suppress/allow boldness of faces with inverse default colors.
SUPPRESS non-nil means suppress it.
This affects bold faces on TTYs whose foreground is the default background
color of the display and whose background is the default foreground color.
For such faces, the bold face attribute is ignored if this variable
is non-nil.

(fn SUPPRESS)Fx-load-color-file
Create an alist of color entries from an external file.

The file should define one named RGB color per line like so:
  R G B   name
where R,G,B are numbers between 0 and 255 and name is an arbitrary string.

(fn FILENAME)Fdump-face


(fn &optional N)Fshow-face-resources


(fn)Vface-filters-always-match
Non-nil means that face filters are always deemed to match.
This variable is intended for use only by code that evaluates
the "specificity" of a face specification and should be let-bound
only for this purpose.Vface--new-frame-defaults
Hash table of global face definitions (for internal use only.)Vface-default-stipple
Default stipple pattern used on monochrome displays.
This stipple pattern is used on monochrome displays
instead of shades of gray for a face background color.
See `set-face-stipple' for possible values for this variable.Vtty-defined-color-alist
An alist of defined terminal colors and their RGB values.
See the docstring of `tty-color-alist' for the details.Vscalable-fonts-allowed
Allowed scalable fonts.
A value of nil means don't allow any scalable fonts.
A value of t means allow any scalable font.
Otherwise, value must be a list of regular expressions.  A font may be
scaled if its name matches a regular expression in the list.
Note that if value is nil, a scalable font might still be used, if no
other font of the appropriate family and registry is available.Vface-ignored-fonts
List of ignored fonts.
Each element is a regular expression that matches names of fonts to
ignore.Vface-remapping-alist
Alist of face remappings.
Each element is of the form:

   (FACE . REPLACEMENT),

which causes display of the face FACE to use REPLACEMENT instead.
REPLACEMENT is a face specification, i.e. one of the following:

  (1) a face name
  (2) a property list of attribute/value pairs, or
  (3) a list in which each element has one of the above forms.

List values for REPLACEMENT are merged to form the final face
specification, with earlier entries taking precedence, in the same way
as with the `face' text property.

Face-name remapping cycles are suppressed; recursive references use
the underlying face instead of the remapped face.  So a remapping of
the form:

   (FACE EXTRA-FACE... FACE)

or:

   (FACE (FACE-ATTR VAL ...) FACE)

causes EXTRA-FACE... or (FACE-ATTR VAL ...) to be _merged_ with the
existing definition of FACE.  Note that this isn't necessary for the
default face, since every face inherits from the default face.

An entry in the list can also be a filtered face expression of the
form:

  (:filtered FILTER FACE-SPECIFICATION)

This construct applies FACE-SPECIFICATION (which can have any of the
forms allowed for face specifications generally) only if FILTER
matches at the moment Emacs wants to draw text with the combined face.

The only filters currently defined are NIL (which always matches) and
(:window PARAMETER VALUE), which matches only in the context of a
window with a parameter EQ-equal to VALUE.

An entry in the face list can also be nil, which does nothing.

If `face-remapping-alist' is made buffer-local, the face remapping
takes effect only in that buffer.  For instance, the mode my-mode
could define a face `my-mode-default', and then in the mode setup
function, do:

   (set (make-local-variable \='face-remapping-alist)
        (copy-tree \='((default my-mode-default)))).

You probably want to use the face-remap package included in Emacs
instead of manipulating face-remapping-alist directly.  Note that many
of the functions in that package modify the list destructively, so make
sure you set it to a fresh value (for instance, use `copy-tree' as in
the example above) before modifying.

Because Emacs normally only redraws screen areas when the underlying
buffer contents change, you may need to call `redraw-display' after
changing this variable for it to take effect.Vface-font-rescale-alist
Alist of fonts vs the rescaling factors.
Each element is a cons (FONT-PATTERN . RESCALE-RATIO), where
FONT-PATTERN is a font-spec or a regular expression matching a font name, and
RESCALE-RATIO is a floating point number to specify how much larger
(or smaller) font we should use.  For instance, if a face requests
a font of 10 point, we actually use a font of 10 * RESCALE-RATIO point.Vface-near-same-color-threshold
Threshold for using distant-foreground color instead of foreground.

The value should be an integer number providing the minimum distance
between two colors that will still qualify them to be used as foreground
and background.  If the value of `color-distance', invoked with a nil
METRIC argument, for the foreground and background colors of a face is
less than this threshold, the distant-foreground color, if defined,
will be used for the face instead of the foreground color.

Lisp programs that change the value of this variable should also
clear the face cache, see `clear-face-cache'.Vface-font-lax-matched-attributes
Whether to match some face attributes in lax manner when realizing faces.

If non-nil, some font-related face attributes will be matched in a lax
manner when looking for candidate fonts.
If the value is t, the default, the search for fonts will not insist
on exact match for 3 font attributes: weight, width, and slant.
Instead, it will examine the available fonts with various values of
these attributes, and select the font that is the closest possible
match.  (If an exact match is available, it will still be selected,
as that is the closest match.)  For example, looking for a semi-bold
font might select a bold or a medium-weight font if no semi-bold font
matching other attributes can be found.  This is especially important
when the `default' face specifies unusual values for one or more of
these 3 attributes, which other installed fonts don't support.

The value can also be a list of font-related face attribute symbols;
see `set-face-attribute' for the full list of attributes.  Then the
corresponding face attributes will be treated as "soft" constraints
in the manner described above, instead of the default 3 attributes.

If the value is nil, candidate fonts might be rejected if the don't
have exactly the same values of attributes as the face requests.

This variable exists for debugging of the font-selection process,
and we advise not to change it otherwise.Semacs.o
Finvocation-name
Return the program name that was used to run Emacs.
Any directory names are omitted.

(fn)Finvocation-directory
Return the directory name in which the Emacs executable was located.

(fn)Fkill-emacs
Exit the Emacs job and kill it.
If ARG is an integer, return ARG as the exit program code.
If ARG is a string, stuff it as keyboard input.
Any other value of ARG, or ARG omitted, means return an
exit code that indicates successful program termination.

If RESTART is non-nil, instead of just exiting at the end, start a new
Emacs process, using the same command line arguments as the currently
running Emacs process.

This function is called upon receipt of the signals SIGTERM
or SIGHUP, and upon SIGINT in batch mode.  (Other fatal signals
shut down Emacs without calling this function.)

The value of `kill-emacs-hook', if not void, is a list of functions
(of no args), all of which are called before Emacs is actually
killed.

(fn &optional ARG RESTART)Fdump-emacs
Dump current state of Emacs into executable file FILENAME.
Take symbols from SYMFILE (presumably the file you executed to run Emacs).
This is used in the file `loadup.el' when building Emacs.

You must run Emacs in batch mode in order to dump it.

(fn FILENAME SYMFILE)Fdaemonp
Return non-nil if the current emacs process is a daemon.
If the daemon was given a name argument, return that name.

(fn)Fdaemon-initialized
Mark the Emacs daemon as being initialized.
This finishes the daemonization process by doing the other half of detaching
from the parent process and its tty file descriptors.

(fn)Vcommand-line-args
Args passed by shell to Emacs, as a list of strings.
Many arguments are deleted from the list as they are processed.Vsystem-type
The value is a symbol indicating the type of operating system you are using.
Special values:
  `gnu'          compiled for a GNU Hurd system.
  `gnu/linux'    compiled for a GNU/Linux system.
  `gnu/kfreebsd' compiled for a GNU system with a FreeBSD kernel.
  `darwin'       compiled for Darwin (GNU-Darwin, macOS, ...).
  `ms-dos'       compiled as an MS-DOS application.
  `windows-nt'   compiled as a native W32 application.
  `cygwin'       compiled using the Cygwin library.
  `haiku'        compiled for a Haiku system.
  `android'      compiled for Android.
Anything else (in Emacs 26, the possibilities are: aix, berkeley-unix,
hpux, usg-unix-v) indicates some sort of Unix system.Vsystem-configuration
Value is string indicating configuration Emacs was built for.Vsystem-configuration-options
String containing the configuration options Emacs was built with.Vsystem-configuration-features
String listing some of the main features this Emacs was compiled with.
An element of the form "FOO" generally means that HAVE_FOO was
defined during the build.

This is mainly intended for diagnostic purposes in bug reports.
Don't rely on it for testing whether a feature you want to use is available.Vnoninteractive
Non-nil means Emacs is running without interactive terminal.Vkill-emacs-hook
Hook run when `kill-emacs' is called.
Since `kill-emacs' may be invoked when the terminal is disconnected (or
in other similar situations), functions placed on this hook should not
expect to be able to interact with the user.  To ask for confirmation,
see `kill-emacs-query-functions' instead.

Before Emacs 24.1, the hook was not run in batch mode, i.e., if
`noninteractive' was non-nil.Vpath-separator
String containing the character that separates directories in
search paths, such as PATH and other similar environment variables.Vinvocation-name
The program name that was used to run Emacs.
Any directory names are omitted.Vinvocation-directory
The directory in which the Emacs executable was found, to run it.
The value is nil if that directory's name is not known.Vinstallation-directory
A directory within which to look for the `lib-src' and `etc' directories.
In an installed Emacs, this is normally nil.  It is non-nil if
both `lib-src' (on MS-DOS, `info') and `etc' directories are found
within the variable `invocation-directory' or its parent.  For example,
this is the case when running an uninstalled Emacs executable from its
build directory.Vsystem-messages-locale
System locale for messages.Vsystem-time-locale
System locale for time.Vbefore-init-time
Value of `current-time' before Emacs begins initialization.Vafter-init-time
Value of `current-time' after loading the init files.
This is nil during initialization.Vinhibit-x-resources
If non-nil, X resources, Windows Registry settings, and NS defaults are not used.Vemacs-copyright
Short copyright string for this version of Emacs.Vemacs-version
Version numbers of this version of Emacs.
This has the form: MAJOR.MINOR[.MICRO], where MAJOR/MINOR/MICRO are integers.
MICRO is only present in unreleased development versions,
and is not especially meaningful.  Prior to Emacs 26.1, an extra final
component .BUILD is present.  This is now stored separately in
`emacs-build-number'.Vreport-emacs-bug-address
Address of mailing list for GNU Emacs bugs.Vdump-mode
Non-nil when Emacs is dumping itself.Vdynamic-library-alist
Alist of dynamic libraries vs external files implementing them.
Each element is a list (LIBRARY FILE...), where the car is a symbol
representing a supported external library, and the rest are strings giving
alternate filenames for that library.

Emacs tries to load the library from the files in the order they appear on
the list; if none is loaded, the running session of Emacs won't have access
to that library.

Note that image types `pbm' and `xbm' do not need entries in this variable
because they do not depend on external libraries and are always available.

Also note that this is not a generic facility for accessing external
libraries; only those already known by Emacs will be loaded.Skeyboard.o
Frecursive-edit
Invoke the editor command loop recursively.
To get out of the recursive edit, a command can throw to `exit' -- for
instance (throw \='exit nil).

The following values (last argument to `throw') can be used when
throwing to \='exit:

- t causes `recursive-edit' to quit, so that control returns to the
  command loop one level up.

- A string causes `recursive-edit' to signal an error, printing that
  string as the error message.

- A function causes `recursive-edit' to call that function with no
  arguments, and then return normally.

- Any other value causes `recursive-edit' to return normally to the
  function that called it.

This function is called by the editor initialization to begin editing.

(fn)Fcommand-error-default-function
Produce default output for unhandled error message.
Default value of `command-error-function'.

(fn DATA CONTEXT SIGNAL)Ftop-level
Exit all recursive editing levels.
This also exits all active minibuffers.

(fn)Fexit-recursive-edit
Exit from the innermost recursive edit or minibuffer.

(fn)Fabort-recursive-edit
Abort the command that requested this recursive edit or minibuffer input.

(fn)Finternal--track-mouse
Call BODYFUN with mouse movement events enabled.

(fn BODYFUN)Fcurrent-idle-time
Return the current length of Emacs idleness, or nil.
The value when Emacs is idle is a Lisp timestamp in the style of
`current-time'.

The value when Emacs is not idle is nil.

If the value is a list of four integers (HIGH LOW USEC PSEC), then PSEC
is a multiple of the system clock resolution.

(fn)Finternal-event-symbol-parse-modifiers
Parse the event symbol.  For internal use.

(fn SYMBOL)Fevent-convert-list
Convert the event description list EVENT-DESC to an event type.
EVENT-DESC should contain one base event type (a character or symbol)
and zero or more modifier names (control, meta, hyper, super, shift, alt,
drag, down, double or triple).  The base must be last.

The return value is an event type (a character or symbol) which has
essentially the same base event type and all the specified modifiers.
(Some compatibility base types, like symbols that represent a
character, are not returned verbatim.)

(fn EVENT-DESC)Finternal-handle-focus-in
Internally handle focus-in events.
This function potentially generates an artificial switch-frame event.

(fn EVENT)Fread-key-sequence
Read a sequence of keystrokes and return as a string or vector.
The sequence is sufficient to specify a non-prefix command in the
current local and global maps.

First arg PROMPT is a prompt string.  If nil, do not prompt specially.
Second (optional) arg CONTINUE-ECHO, if non-nil, means this key echos
as a continuation of the previous key.

The third (optional) arg DONT-DOWNCASE-LAST, if non-nil, means do not
convert the last event to lower case.  (Normally any upper case event
is converted to lower case if the original event is undefined and the lower
case equivalent is defined.)  A non-nil value is appropriate for reading
a key sequence to be defined.

A C-g typed while in this function is treated like any other character,
and `quit-flag' is not set.

If the key sequence starts with a mouse click, then the sequence is read
using the keymaps of the buffer of the window clicked in, not the buffer
of the selected window as normal.

`read-key-sequence' drops unbound button-down events, since you normally
only care about the click or drag events which follow them.  If a drag
or multi-click event is unbound, but the corresponding click event would
be bound, `read-key-sequence' turns the event into a click event at the
drag's starting position.  This means that you don't have to distinguish
between click and drag, double, or triple events unless you want to.

`read-key-sequence' prefixes mouse events on mode lines, the vertical
lines separating windows, and scroll bars with imaginary keys
`mode-line', `vertical-line', and `vertical-scroll-bar'.

Optional fourth argument CAN-RETURN-SWITCH-FRAME non-nil means that this
function will process a switch-frame event if the user switches frames
before typing anything.  If the user switches frames in the middle of a
key sequence, or at the start of the sequence but CAN-RETURN-SWITCH-FRAME
is nil, then the event will be put off until after the current key sequence.

`read-key-sequence' checks `function-key-map' for function key
sequences, where they wouldn't conflict with ordinary bindings.  See
`function-key-map' for more details.

The optional fifth argument CMD-LOOP, if non-nil, means
that this key sequence is being read by something that will
read commands one after another.  It should be nil if the caller
will read just one key sequence.

The optional sixth argument DISABLE-TEXT-CONVERSION, if non-nil, means
disable input method text conversion for the duration of reading this
key sequence, and that keyboard input will always result in key events
being sent.

(fn PROMPT &optional CONTINUE-ECHO DONT-DOWNCASE-LAST CAN-RETURN-SWITCH-FRAME CMD-LOOP DISABLE-TEXT-CONVERSION)Fread-key-sequence-vector
Like `read-key-sequence' but always return a vector.

(fn PROMPT &optional CONTINUE-ECHO DONT-DOWNCASE-LAST CAN-RETURN-SWITCH-FRAME CMD-LOOP DISABLE-TEXT-CONVERSION)Finput-pending-p
Return t if command input is currently available with no wait.
Actually, the value is nil only if we can be sure that no input is available;
if there is a doubt, the value is t.

If CHECK-TIMERS is non-nil, timers that are ready to run will do so.

(fn &optional CHECK-TIMERS)Flossage-size
Return or set the maximum number of keystrokes to save.
If called with a non-nil ARG, set the limit to ARG and return it.
Otherwise, return the current limit.

The saved keystrokes are shown by `view-lossage'.

(fn &optional ARG)Frecent-keys
Return vector of last few events, not counting those from keyboard macros.
If INCLUDE-CMDS is non-nil, include the commands that were run,
represented as pseudo-events of the form (nil . COMMAND).

(fn &optional INCLUDE-CMDS)Fthis-command-keys
Return the key sequence that invoked this command.
However, if the command has called `read-key-sequence', it returns
the last key sequence that has been read.
The value is a string or a vector.

See also `this-command-keys-vector'.

(fn)Fset--this-command-keys
Set the vector to be returned by `this-command-keys'.
The argument KEYS must be a string.
Internal use only.

(fn KEYS)Fthis-command-keys-vector
Return the key sequence that invoked this command, as a vector.
However, if the command has called `read-key-sequence', it returns
the last key sequence that has been read.

See also `this-command-keys'.

(fn)Fthis-single-command-keys
Return the key sequence that invoked this command.
More generally, it returns the last key sequence read, either by
the command loop or by `read-key-sequence'.
The value is always a vector.

(fn)Fthis-single-command-raw-keys
Return the raw events that were read for this command.
More generally, it returns the last key sequence read, either by
the command loop or by `read-key-sequence'.
Unlike `this-single-command-keys', this function's value
shows the events before all translations (except for input methods).
The value is always a vector.

(fn)Fclear-this-command-keys
Clear out the vector that `this-command-keys' returns.
Also clear the record of the last 300 input events, unless optional arg
KEEP-RECORD is non-nil.

(fn &optional KEEP-RECORD)Frecursion-depth
Return the current depth in recursive edits.

(fn)Fopen-dribble-file
Start writing input events to a dribble file called FILE.
Any previously open dribble file will be closed first.  If FILE is
nil, just close the dribble file, if any.

If the file is still open when Emacs exits, it will be closed then.

The events written to the file include keyboard and mouse input
events, but not events from executing keyboard macros.  The events are
written to the dribble file immediately without line buffering.

Be aware that this records ALL characters you type!
This may include sensitive information such as passwords.

(fn FILE)Fdiscard-input
Discard the contents of the terminal input buffer.
Also end any kbd macro being defined.

(fn)Fsuspend-emacs
Stop Emacs and return to superior process.  You can resume later.
If `cannot-suspend' is non-nil, or if the system doesn't support job
control, run a subshell instead.

If optional arg STUFFSTRING is non-nil, its characters are stuffed
to be read as terminal input by Emacs's parent, after suspension.

Before suspending, run the normal hook `suspend-hook'.
After resumption run the normal hook `suspend-resume-hook'.

Some operating systems cannot stop the Emacs process and resume it later.
On such systems, Emacs starts a subshell instead of suspending.

On some operating systems, stuffing characters into terminal input
buffer requires special privileges or is not supported at all.
On such systems, calling this function with non-nil STUFFSTRING might
either signal an error or silently fail to stuff the characters.

(fn &optional STUFFSTRING)Fset-input-interrupt-mode
Set interrupt mode of reading keyboard input.
If INTERRUPT is non-nil, Emacs will use input interrupts;
otherwise Emacs uses CBREAK mode.

See also `current-input-mode'.

(fn INTERRUPT)Fset-output-flow-control
Enable or disable ^S/^Q flow control for output to TERMINAL.
If FLOW is non-nil, flow control is enabled and you cannot use C-s or
C-q in key sequences.

This setting only has an effect on tty terminals and only when
Emacs reads input in CBREAK mode; see `set-input-interrupt-mode'.

See also `current-input-mode'.

(fn FLOW &optional TERMINAL)Fset-input-meta-mode
Enable or disable 8-bit input on TERMINAL.
If META is t, Emacs will accept 8-bit input, and interpret the 8th
bit as the Meta modifier before it decodes the characters.

If META is `encoded', Emacs will interpret the 8th bit of single-byte
characters after decoding the characters.

If META is nil, Emacs will ignore the top bit, on the assumption it is
parity.

Otherwise, Emacs will accept and pass through 8-bit input without
specially interpreting the top bit.

This setting only has an effect on tty terminal devices.

Optional parameter TERMINAL specifies the tty terminal device to use.
It may be a terminal object, a frame, or nil for the terminal used by
the currently selected frame.

See also `current-input-mode'.

(fn META &optional TERMINAL)Fset-quit-char
Specify character used for quitting.
QUIT must be an ASCII character.

This function only has an effect on the controlling tty of the Emacs
process.

See also `current-input-mode'.

(fn QUIT)Fset-input-mode
Set mode of reading keyboard input.
First arg INTERRUPT non-nil means use input interrupts;
 nil means use CBREAK mode.
Second arg FLOW non-nil means use ^S/^Q flow control for output to terminal
 (no effect except in CBREAK mode).
Third arg META t means accept 8-bit input (for a Meta key).
 META nil means ignore the top bit, on the assumption it is parity.
 META `encoded' means accept 8-bit input and interpret Meta after
   decoding the input characters.
 Otherwise, accept 8-bit input and don't use the top bit for Meta.
Optional fourth arg QUIT if non-nil specifies character to use for quitting.
See also `current-input-mode'.

(fn INTERRUPT FLOW META &optional QUIT)Fcurrent-input-mode
Return information about the way Emacs currently reads keyboard input.
The value is a list of the form (INTERRUPT FLOW META QUIT), where
  INTERRUPT is non-nil if Emacs is using interrupt-driven input; if
    nil, Emacs is using CBREAK mode.
  FLOW is non-nil if Emacs uses ^S/^Q flow control for output to the
    terminal; this does not apply if Emacs uses interrupt-driven input.
  META is t if accepting 8-bit unencoded input with 8th bit as Meta flag.
  META is `encoded' if accepting 8-bit encoded input with 8th bit as
    Meta flag which has to be interpreted after decoding the input.
  META is nil if ignoring the top bit of input, on the assumption that
    it is a parity bit.
  META is neither t nor nil if accepting 8-bit input and using
    all 8 bits as the character code.
  QUIT is the character Emacs currently uses to quit.
The elements of this list correspond to the arguments of
`set-input-mode'.

(fn)Fposn-at-x-y
Return position information for pixel coordinates X and Y.
By default, X and Y are relative to text area of the selected window.
Note that the text area includes the header-line and the tab-line of
the window, if any of them are present.
Optional third arg FRAME-OR-WINDOW non-nil specifies frame or window.
If optional fourth arg WHOLE is non-nil, X is relative to the left
edge of the window.

The return value is similar to a mouse click position:
   (WINDOW AREA-OR-POS (X . Y) TIMESTAMP OBJECT POS (COL . ROW)
    IMAGE (DX . DY) (WIDTH . HEIGHT))
The `posn-' functions access elements of such lists.

(fn X Y &optional FRAME-OR-WINDOW WHOLE)Fposn-at-point
Return position information for buffer position POS in WINDOW.
POS defaults to point in WINDOW; WINDOW defaults to the selected window.

If POS is in invisible text or is hidden by `display' properties,
this function may report on buffer positions before or after POS.

Return nil if POS is not visible in WINDOW.  Otherwise,
the return value is similar to that returned by `event-start' for
a mouse click at the upper left corner of the glyph corresponding
to POS:
   (WINDOW AREA-OR-POS (X . Y) TIMESTAMP OBJECT POS (COL . ROW)
    IMAGE (DX . DY) (WIDTH . HEIGHT))
The `posn-' functions access elements of such lists.

(fn &optional POS WINDOW)Vinternal--top-level-message
Message displayed by `normal-top-level'.Vlast-command-event
Last input event of a key sequence that called a command.
See Info node `(elisp)Command Loop Info'.Vlast-nonmenu-event
Last input event in a command, except for mouse menu events.
Mouse menus give back keys that don't look like mouse events;
this variable holds the actual mouse event that led to the menu,
so that you can determine whether the command was run by mouse or not.Vlast-input-event
Last input event.Vunread-command-events
List of events to be read as the command input.
These events are processed first, before actual keyboard input.
Events read from this list are not normally added to `this-command-keys',
as they will already have been added once as they were read for the first time.
An element of the form (t . EVENT) forces EVENT to be added to that list.
An element of the form (no-record . EVENT) means process EVENT, but do not
record it in the keyboard macros, recent-keys, and the dribble file.Vunread-post-input-method-events
List of events to be processed as input by input methods.
These events are processed before `unread-command-events'
and actual keyboard input, but are not given to `input-method-function'.Vunread-input-method-events
List of events to be processed as input by input methods.
These events are processed after `unread-command-events', but
before actual keyboard input.
If there's an active input method, the events are given to
`input-method-function'.Vmeta-prefix-char
Meta-prefix character code.
Meta-foo as command input turns into this character followed by foo.Vlast-command
The last command executed.
Normally a symbol with a function definition, but can be whatever was found
in the keymap, or whatever the variable `this-command' was set to by that
command.

The value `mode-exit' is special; it means that the previous command
read an event that told it to exit, and it did so and unread that event.
In other words, the present command is the event that made the previous
command exit.

The value `kill-region' is special; it means that the previous command
was a kill command.

`last-command' has a separate binding for each terminal device.
See Info node `(elisp)Multiple Terminals'.Vreal-last-command
Same as `last-command', but never altered by Lisp code.
Taken from the previous value of `real-this-command'.Vlast-repeatable-command
Last command that may be repeated.
The last command executed that was not bound to an input event.
This is the command `repeat' will try to repeat.
Taken from a previous value of `real-this-command'.Vthis-command
The command now being executed.
The command can set this variable; whatever is put here
will be in `last-command' during the following command.Vreal-this-command
This is like `this-command', except that commands should never modify it.Vcurrent-minibuffer-command
This is like `this-command', but bound recursively.
Code running from (for instance) a minibuffer hook can check this variable
to see what command invoked the current minibuffer.Vthis-command-keys-shift-translated
Non-nil if the key sequence activating this command was shift-translated.
Shift-translation occurs when there is no binding for the key sequence
as entered, but a binding was found by changing an upper-case letter
to lower-case, or a shifted function key to an unshifted one.Vthis-original-command
The command bound to the current key sequence before remapping.
It equals `this-command' if the original command was not remapped through
any of the active keymaps.  Otherwise, the value of `this-command' is the
result of looking up the original command in the active keymaps.Vauto-save-interval
Number of input events between auto-saves.
Zero means disable autosaving due to number of characters typed.Vauto-save-no-message
Non-nil means do not print any message when auto-saving.Vauto-save-timeout
Number of seconds idle time before auto-save.
Zero or nil means disable auto-saving due to idleness.
After auto-saving due to this many seconds of idle time,
Emacs also does a garbage collection if that seems to be warranted.Vecho-keystrokes
Nonzero means echo unfinished commands after this many seconds of pause.
The value may be integer or floating point.
If the value is zero, don't echo at all.Vecho-keystrokes-help
Whether to append help text to echoed commands.
When non-nil, a reference to `C-h' is printed after echoed
keystrokes.Vpolling-period
Interval between polling for input during Lisp execution.
The reason for polling is to make C-g work to stop a running program.
Polling is needed only when using X windows and SIGIO does not work.
Polling is automatically disabled in all other cases.Vdouble-click-time
Maximum time between mouse clicks to make a double-click.
Measured in milliseconds.  The value nil means disable double-click
recognition; t means double-clicks have no time limit and are detected
by position only.

In Lisp, you might want to use `mouse-double-click-time' instead of
reading the value of this variable directly.Vdouble-click-fuzz
Maximum mouse movement between clicks to make a double-click.
On window-system frames, value is the number of pixels the mouse may have
moved horizontally or vertically between two clicks to make a double-click.
On non window-system frames, value is interpreted in units of 1/8 characters
instead of pixels.

This variable is also the threshold for motion of the mouse
to count as a drag.Vnum-input-keys
Number of complete key sequences read as input so far.
This includes key sequences read from keyboard macros.
The number is effectively the number of interactive command invocations.Vnum-nonmacro-input-events
Number of input events read from the keyboard so far.
This does not include events generated by keyboard macros.Vlast-event-frame
The frame in which the most recently read event occurred.
If the last event came from a keyboard macro, this is set to `macro'.Vlast-event-device
The name of the input device of the most recently read event.
When the input extension is being used on X, this is the name of the X
Input Extension device from which the last event was generated as a
string.  Otherwise, this is "Virtual core keyboard" for keyboard input
events, and "Virtual core pointer" for other events.

It is nil if the last event did not come from an input device (i.e. it
came from `unread-command-events' instead).Vtty-erase-char
The ERASE character as set by the user with stty.Vhelp-char
Character to recognize as meaning Help.
When it is read, do `(eval help-form)', and display result if it's a string.
If the value of `help-form' is nil, this char can be read normally.Vhelp-event-list
List of input events to recognize as meaning Help.
These work just like the value of `help-char' (see that).Vhelp-form
Form to execute when character `help-char' is read.
If the form returns a string, that string is displayed.
If `help-form' is nil, the help char is not recognized.Vprefix-help-command
Command to run when `help-char' character follows a prefix key.
This command is used only when there is no actual binding
for that character after that prefix key.Vtop-level
Form to evaluate when Emacs starts up.
Useful to set before you dump a modified Emacs.Vkeyboard-translate-table
Translate table for local keyboard input, or nil.
If non-nil, the value should be a char-table.  Each character read
from the keyboard is looked up in this char-table.  If the value found
there is non-nil, then it is used instead of the actual input character.

The value can also be a string or vector, but this is considered obsolete.
If it is a string or vector of length N, character codes N and up are left
untranslated.  In a vector, an element which is nil means "no translation".

This is applied to the characters supplied to input methods, not their
output.  See also `translation-table-for-input'.

This variable has a separate binding for each terminal.
See Info node `(elisp)Multiple Terminals'.Vcannot-suspend
Non-nil means to always spawn a subshell instead of suspending.
(Even if the operating system has support for stopping a process.)Vmenu-prompting
Non-nil means prompt with menus when appropriate.
This is done when reading from a keymap that has a prompt string,
for elements that have prompt strings.
The menu is displayed on the screen
if X menus were enabled at configuration
time and the previous event was a mouse click prefix key.
Otherwise, menu prompting uses the echo area.Vmenu-prompt-more-char
Character to see next line of menu prompt.
Type this character while in a menu prompt to rotate around the lines of it.Vextra-keyboard-modifiers
A mask of additional modifier keys to use with every keyboard character.
Emacs applies the modifiers of the character stored here to each keyboard
character it reads.  For example, after evaluating the expression
    (setq extra-keyboard-modifiers ?\C-x)
all input characters will have the control modifier applied to them.

Note that the character ?\C-@, equivalent to the integer zero, does
not count as a control character; rather, it counts as a character
with no modifiers; thus, setting `extra-keyboard-modifiers' to zero
cancels any modification.Vdeactivate-mark
Whether to deactivate the mark after an editing command.
The command loop sets this to nil before each command,
and tests the value when the command returns.
If an editing command sets this non-nil, deactivate the mark after
the command returns.

Buffer modifications store t in this variable.

By default, deactivating the mark will save the contents of the region
according to `select-active-regions', unless this is set to the symbol
`dont-save'.Vpre-command-hook
Normal hook run before each command is executed.

If an unhandled error happens in running this hook, the function in
which the error occurred is unconditionally removed, since otherwise
the error might happen repeatedly and make Emacs nonfunctional.

Note that, when `long-line-optimizations-p' is non-nil in the buffer,
these functions are called as if they were in a `with-restriction' form,
with a `long-line-optimizations-in-command-hooks' label and with the
buffer narrowed to a portion around point whose size is specified by
`long-line-optimizations-region-size'.

See also `post-command-hook'.Vpost-command-hook
Normal hook run after each command is executed.

If an unhandled error happens in running this hook, the function in
which the error occurred is unconditionally removed, since otherwise
the error might happen repeatedly and make Emacs nonfunctional.

It is a bad idea to use this hook for expensive processing.  If
unavoidable, wrap your code in `(while-no-input (redisplay) CODE)' to
avoid making Emacs unresponsive while the user types.

Note that, when `long-line-optimizations-p' is non-nil in the buffer,
these functions are called as if they were in a `with-restriction' form,
with a `long-line-optimizations-in-command-hooks' label and with the
buffer narrowed to a portion around point whose size is specified by
`long-line-optimizations-region-size'.

See also `pre-command-hook'.Vecho-area-clear-hook
Normal hook run when clearing the echo area.Vlucid--menu-grab-keyboard
If non-nil, grab keyboard during menu operations.
This is only relevant when using the Lucid X toolkit.  It can be
convenient to disable this for debugging purposes.Vmenu-bar-final-items
List of menu bar items to move to the end of the menu bar.
The elements of the list are event types that may have menu bar
bindings.  The order of this list controls the order of the items.Vtab-bar-separator-image-expression
Expression evaluating to the image spec for a tab-bar separator.
This is used internally by graphical displays that do not render
tab-bar separators natively.  Otherwise it is unused (e.g. on GTK).Vtool-bar-separator-image-expression
Expression evaluating to the image spec for a tool-bar separator.
This is used internally by graphical displays that do not render
tool-bar separators natively.  Otherwise it is unused (e.g. on GTK).Voverriding-terminal-local-map
Per-terminal keymap that takes precedence over all other keymaps.
This variable is intended to let commands such as `universal-argument'
set up a different keymap for reading the next command.

`overriding-terminal-local-map' has a separate binding for each
terminal device.  See Info node `(elisp)Multiple Terminals'.Voverriding-local-map
Keymap that replaces (overrides) local keymaps.
If this variable is non-nil, Emacs looks up key bindings in this
keymap INSTEAD OF `keymap' text properties, `local-map' and `keymap'
overlay properties, minor mode maps, and the buffer's local map.

Hence, the only active keymaps would be `overriding-terminal-local-map',
this keymap, and `global-keymap', in order of precedence.Voverriding-local-map-menu-flag
Non-nil means `overriding-local-map' applies to the menu bar.
Otherwise, the menu bar continues to reflect the buffer's local map
and the minor mode maps regardless of `overriding-local-map'.Vspecial-event-map
Keymap defining bindings for special events to execute at low level.Vtrack-mouse
Non-nil means generate motion events for mouse motion.
The special values `dragging' and `dropping' assert that the mouse
cursor retains its appearance during mouse motion.  Any non-nil value
but `dropping' or `drag-source' asserts that motion events always
relate to the frame where the mouse movement started.  The value
`dropping' asserts that motion events relate to the frame where the
mouse cursor is seen when generating the event.  If there's no such
frame, such motion events relate to the frame where the mouse movement
started.  The value `drag-source' is like `dropping', but the
`posn-window' will be nil in mouse position lists inside mouse
movement events if there is no frame directly visible underneath the
mouse pointer.Vsystem-key-alist
Alist of system-specific X windows key symbols.
Each element should have the form (N . SYMBOL) where N is the
numeric keysym code (sans the "system-specific" bit 1<<28)
and SYMBOL is its name.

`system-key-alist' has a separate binding for each terminal device.
See Info node `(elisp)Multiple Terminals'.Vlocal-function-key-map
Keymap that translates key sequences to key sequences during input.
This is used mainly for mapping key sequences into some preferred
key events (symbols).

The `read-key-sequence' function replaces any subsequence bound by
`local-function-key-map' with its binding.  More precisely, when the
active keymaps have no binding for the current key sequence but
`local-function-key-map' binds a suffix of the sequence to a vector or
string, `read-key-sequence' replaces the matching suffix with its
binding, and continues with the new sequence.

If the binding is a function, it is called with one argument (the prompt)
and its return value (a key sequence) is used.

The events that come from bindings in `local-function-key-map' are not
themselves looked up in `local-function-key-map'.

For example, suppose `local-function-key-map' binds `ESC O P' to [f1].
Typing `ESC O P' to `read-key-sequence' would return [f1].  Typing
`C-x ESC O P' would return [?\C-x f1].  If [f1] were a prefix key,
typing `ESC O P x' would return [f1 x].

`local-function-key-map' has a separate binding for each terminal
device.  See Info node `(elisp)Multiple Terminals'.  If you need to
define a binding on all terminals, change `function-key-map'
instead.  Initially, `local-function-key-map' is an empty keymap that
has `function-key-map' as its parent on all terminal devices.Vinput-decode-map
Keymap that decodes input escape sequences.
This is used mainly for mapping ASCII function key sequences into
real Emacs function key events (symbols).

The `read-key-sequence' function replaces any subsequence bound by
`input-decode-map' with its binding.  Contrary to `function-key-map',
this map applies its rebinding regardless of the presence of an ordinary
binding.  So it is more like `key-translation-map' except that it applies
before `function-key-map' rather than after.

If the binding is a function, it is called with one argument (the prompt)
and its return value (a key sequence) is used.

The events that come from bindings in `input-decode-map' are not
themselves looked up in `input-decode-map'.Vfunction-key-map
The parent keymap of all `local-function-key-map' instances.
Function key definitions that apply to all terminal devices should go
here.  If a mapping is defined in both the current
`local-function-key-map' binding and this variable, then the local
definition will take precedence.Vkey-translation-map
Keymap of key translations that can override keymaps.
This keymap works like `input-decode-map', but comes after `function-key-map'.
Another difference is that it is global rather than terminal-local.Vdelayed-warnings-list
List of warnings to be displayed after this command.
Each element must be a list (TYPE MESSAGE [LEVEL [BUFFER-NAME]]),
as per the args of `display-warning' (which see).
If this variable is non-nil, `delayed-warnings-hook' will be run
immediately after running `post-command-hook'.Vtimer-list
List of active absolute time timers in order of increasing time.Vtimer-idle-list
List of active idle-time timers in order of increasing time.Vinput-method-function
If non-nil, the function that implements the current input method.
It's called with one argument, which must be a single-byte
character that was just read.  Any single-byte character is
acceptable, except the DEL character, codepoint 127 decimal, 177 octal.
Typically this function uses `read-event' to read additional events.
When it does so, it should first bind `input-method-function' to nil
so it will not be called recursively.

The function should return a list of zero or more events
to be used as input.  If it wants to put back some events
to be reconsidered, separately, by the input method,
it can add them to the beginning of `unread-command-events'.

The input method function can find in `input-method-previous-message'
the previous echo area message.

The input method function should refer to the variables
`input-method-use-echo-area' and `input-method-exit-on-first-char'
for guidance on what to do.Vinput-method-previous-message
When `input-method-function' is called, hold the previous echo area message.
This variable exists because `read-event' clears the echo area
before running the input method.  It is nil if there was no message.Vshow-help-function
If non-nil, the function that implements the display of help.
It's called with one argument, the help string to display.Vdisable-point-adjustment
If non-nil, suppress point adjustment after executing a command.

After a command is executed, if point moved into a region that has
special properties (e.g. composition, display), Emacs adjusts point to
the boundary of the region.  But when a command leaves this variable at
a non-nil value (e.g., with a setq), this point adjustment is suppressed.

This variable is set to nil before reading a command, and is checked
just after executing the command.Vglobal-disable-point-adjustment
If non-nil, always suppress point adjustments.

The default value is nil, in which case point adjustments are
suppressed only after special commands that leave
`disable-point-adjustment' (which see) at a non-nil value.Vminibuffer-message-timeout
How long to display an echo-area message when the minibuffer is active.
If the value is a number, it should be specified in seconds.
If the value is not a number, such messages never time out.Vthrow-on-input
If non-nil, any keyboard input throws to this symbol.
The value of that variable is passed to `quit-flag' and later causes a
peculiar kind of quitting.Vcommand-error-function
Function to output error messages.
Called with three arguments:
- the error data, a list of the form (SIGNALED-CONDITION . SIGNAL-DATA)
  such as what `condition-case' would bind its variable to,
- the context (a string which normally goes at the start of the message),
- the Lisp function within which the error was signaled.

For instance, to make error messages stand out more in the echo area,
you could say something like:

    (setq command-error-function
          (lambda (data _ _)
            (message "%s" (propertize (error-message-string data)
                                      \='face \='error))))

Also see `set-message-function' (which controls how non-error messages
are displayed).Venable-disabled-menus-and-buttons
If non-nil, don't ignore events produced by disabled menu items and tool-bar.

Help functions bind this to allow help on disabled menu items
and tool-bar buttons.Vselect-active-regions
If non-nil, any active region automatically sets the primary selection.
This variable only has an effect when Transient Mark mode is enabled.

If the value is `only', only temporarily active regions (usually made
by mouse-dragging or shift-selection) set the window system's primary
selection.

If this variable causes the region to be set as the primary selection,
`post-select-region-hook' is then run afterwards.Vsaved-region-selection
Contents of active region prior to buffer modification.
If `select-active-regions' is non-nil, Emacs sets this to the
text in the region before modifying the buffer.  The next call to
the function `deactivate-mark' uses this to set the window selection.Vselection-inhibit-update-commands
List of commands which should not update the selection.
Normally, if `select-active-regions' is non-nil and the mark remains
active after a command (i.e. the mark was not deactivated), the Emacs
command loop sets the selection to the text in the region.  However,
if the command is in this list, the selection is not updated.Vdebug-on-event
Enter debugger on this event.
When Emacs receives the special event specified by this variable,
it will try to break into the debugger as soon as possible instead
of processing the event normally through `special-event-map'.

Currently, the only supported values for this
variable are `sigusr1' and `sigusr2'.Vattempt-stack-overflow-recovery
If non-nil, attempt to recover from C stack overflows.
This recovery is potentially unsafe and may lead to deadlocks or data
corruption, but it usually works and may preserve modified buffers
that would otherwise be lost.  If nil, treat stack overflow like any
other kind of crash or fatal error.Vattempt-orderly-shutdown-on-fatal-signal
If non-nil, attempt orderly shutdown on fatal signals.
By default this variable is non-nil, and Emacs attempts to perform
an orderly shutdown when it catches a fatal signal (e.g., a crash).
The orderly shutdown includes an attempt to auto-save your unsaved edits
and other useful cleanups.  These cleanups are potentially unsafe and may
lead to deadlocks or data corruption, but it usually works and may
preserve data in modified buffers that would otherwise be lost.
If nil, Emacs crashes immediately in response to fatal signals.Vwhile-no-input-ignore-events
Ignored events from `while-no-input'.
Events in this list do not count as pending input while running
`while-no-input' and do not cause any idle timers to get reset when they
occur.Vtranslate-upper-case-key-bindings
If non-nil, interpret upper case keys as lower case (when applicable).
Emacs allows binding both upper and lower case key sequences to
commands.  However, if there is a lower case key sequence bound to a
command, and the user enters an upper case key sequence that is not
bound to a command, Emacs will use the lower case binding.  Setting
this variable to nil inhibits this behavior.Vinput-pending-p-filter-events
If non-nil, `input-pending-p' ignores some input events.
If this variable is non-nil (the default), `input-pending-p' and
other similar functions ignore input events in `while-no-input-ignore-events'.
This flag may eventually be removed once this behavior is deemed safe.Vmwheel-coalesce-scroll-events
Non-nil means send a wheel event only for scrolling at least one screen line.
Otherwise, a wheel event will be sent every time the mouse wheel is
moved.Vdisplay-monitors-changed-functions
Abnormal hook run when the monitor configuration changes.
This can happen if a monitor is rotated, moved, plugged in or removed
from a multi-monitor setup, if the primary monitor changes, or if the
resolution of a monitor changes.  The hook should accept a single
argument, which is the terminal on which the monitor configuration
changed.Vinhibit--record-char
If non-nil, don't record input events.
This inhibits recording input events for the purposes of keyboard
macros, dribble file, and `recent-keys'.
Internal use only.Vrecord-all-keys
Non-nil means record all keys you type.
When nil, the default, characters typed as part of passwords are
not recorded.  The non-nil value countermands `inhibit--record-char',
which see.Vpost-select-region-hook
Abnormal hook run after the region is selected.
This usually happens as a result of `select-active-regions'.  The hook
is called with one argument, the string that was selected.Vdisable-inhibit-text-conversion
Don't disable text conversion inside `read-key-sequence'.
If non-nil, text conversion will continue to happen after a prefix
key has been read inside `read-key-sequence'.Vcurrent-key-remap-sequence
The key sequence currently being remap, or nil.
Bound to a vector containing the sub-sequence matching a binding
within `input-decode-map' or `local-function-key-map' when its bound
function is called to remap that sequence.Smacros.o
Fstart-kbd-macro
Record subsequent keyboard input, defining a keyboard macro.
The commands are recorded even as they are executed.
Use \[end-kbd-macro] to finish recording and make the macro available.
Use \[name-last-kbd-macro] to give it a permanent name.
Non-nil arg (prefix arg) means append to last macro defined;
this begins by re-executing that macro as if you typed it again.
If optional second arg, NO-EXEC, is non-nil, do not re-execute last
macro before appending to it.

(fn APPEND &optional NO-EXEC)Fend-kbd-macro
Finish defining a keyboard macro.
The definition was started by \[start-kbd-macro].
The macro is now available for use via \[call-last-kbd-macro],
or it can be given a name with \[name-last-kbd-macro] and then invoked
under that name.

With numeric arg, repeat macro now that many times,
counting the definition just completed as the first repetition.
An argument of zero means repeat until error.

In Lisp, optional second arg LOOPFUNC may be a function that is called prior to
each iteration of the macro.  Iteration stops if LOOPFUNC returns nil.

(fn &optional REPEAT LOOPFUNC)Fcancel-kbd-macro-events
Cancel the events added to a keyboard macro for this command.

(fn)Fstore-kbd-macro-event
Store EVENT into the keyboard macro being defined.

(fn EVENT)Fcall-last-kbd-macro
Call the last keyboard macro that you defined with \[start-kbd-macro].

A prefix argument serves as a repeat count.  Zero means repeat until error.

To make a macro permanent so you can call it even after
defining others, use \[name-last-kbd-macro].

In Lisp, optional second arg LOOPFUNC may be a function that is called prior to
each iteration of the macro.  Iteration stops if LOOPFUNC returns nil.

(fn &optional PREFIX LOOPFUNC)Fexecute-kbd-macro
Execute MACRO as a sequence of events.
If MACRO is a string or vector, then the events in it are executed
exactly as if they had been input by the user.

If MACRO is a symbol, its function definition is used.  If that is
another symbol, this process repeats.  Eventually the result should be
a string or vector.  If the result is not a symbol, string, or vector,
an error is signaled.

COUNT is a repeat count, or nil for once, or 0 for infinite loop.

Optional third arg LOOPFUNC may be a function that is called prior to
each iteration of the macro.  Iteration stops if LOOPFUNC returns nil.

The buffer shown in the currently selected window will be made the current
buffer before the macro is executed.

(fn MACRO &optional COUNT LOOPFUNC)Vkbd-macro-termination-hook
Normal hook run whenever a keyboard macro terminates.
This is run whether the macro ends normally or prematurely due to an error.Vdefining-kbd-macro
Non-nil while a keyboard macro is being defined.  Don't set this!
The value is the symbol `append' while appending to the definition of
an existing macro.Vexecuting-kbd-macro
Currently executing keyboard macro (string or vector).
This is nil when not executing a keyboard macro.Vexecuting-kbd-macro-index
Index in currently executing keyboard macro; undefined if none executing.Vlast-kbd-macro
Last kbd macro defined, as a string or vector; nil if none defined.Skeymap.o
Fmake-keymap
Construct and return a new keymap, of the form (keymap CHARTABLE . ALIST).
CHARTABLE is a char-table that holds the bindings for all characters
without modifiers.  All entries in it are initially nil, meaning
"command undefined".  ALIST is an assoc-list which holds bindings for
function keys, mouse events, and any other things that appear in the
input stream.  Initially, ALIST is nil.

The optional arg STRING supplies a menu name for the keymap
in case you use it as a menu with `x-popup-menu'.

(fn &optional STRING)Fmake-sparse-keymap
Construct and return a new sparse keymap.
Its car is `keymap' and its cdr is an alist of (CHAR . DEFINITION),
which binds the character CHAR to DEFINITION, or (SYMBOL . DEFINITION),
which binds the function key or mouse event SYMBOL to DEFINITION.
Initially the alist is nil.

The optional arg STRING supplies a menu name for the keymap
in case you use it as a menu with `x-popup-menu'.

(fn &optional STRING)Fkeymapp
Return t if OBJECT is a keymap.

A keymap is a list (keymap . ALIST),
or a symbol whose function definition is itself a keymap.
ALIST elements look like (CHAR . DEFN) or (SYMBOL . DEFN);
a vector of densely packed bindings for small character codes
is also allowed as an element.

(fn OBJECT)Fkeymap-prompt
Return the prompt-string of a keymap MAP.
If non-nil, the prompt is shown in the echo-area
when reading a key-sequence to be looked-up in this keymap.

(fn MAP)Fkeymap-parent
Return the parent keymap of KEYMAP.
If KEYMAP has no parent, return nil.

(fn KEYMAP)Fset-keymap-parent
Modify KEYMAP to set its parent map to PARENT.
Return PARENT.  PARENT should be nil or another keymap.

(fn KEYMAP PARENT)Fmap-keymap-internal
Call FUNCTION once for each event binding in KEYMAP.
FUNCTION is called with two arguments: the event that is bound, and
the definition it is bound to.  The event may be a character range.
If KEYMAP has a parent, this function returns it without processing it.

(fn FUNCTION KEYMAP)Fmap-keymap
Call FUNCTION once for each event binding in KEYMAP.
FUNCTION is called with two arguments: the event that is bound, and
the definition it is bound to.  The event may be a character range.

If KEYMAP has a parent, the parent's bindings are included as well.
This works recursively: if the parent has itself a parent, then the
grandparent's bindings are also included and so on.

For more information, see Info node `(elisp) Keymaps'.

(fn FUNCTION KEYMAP)Fkeymap--get-keyelt
Given OBJECT which was found in a slot in a keymap,
trace indirect definitions to get the actual definition of that slot.
An indirect definition is a list of the form
(KEYMAP . INDEX), where KEYMAP is a keymap or a symbol defined as one
and INDEX is the object to look up in KEYMAP to yield the definition.

Also if OBJECT has a menu string as the first element,
remove that.  Also remove a menu help string as second element.

If AUTOLOAD, load autoloadable keymaps
that are referred to with indirection.

(fn OBJECT AUTOLOAD)Fcopy-keymap
Return a copy of the keymap KEYMAP.

Note that this is almost never needed.  If you want a keymap that's like
another yet with a few changes, you should use keymap inheritance rather
than copying.  That is, something like:

    (defvar-keymap foo-map
      :parent <theirmap>
      ...)

Or, if you need to support Emacs versions older than 29:

    (let ((map (make-sparse-keymap)))
      (set-keymap-parent map <theirmap>)
      (define-key map ...)
      ...)

After performing `copy-keymap', the copy starts out with the same definitions
of KEYMAP, but changing either the copy or KEYMAP does not affect the other.
Any key definitions that are subkeymaps are recursively copied.
However, a key definition which is a symbol whose definition is a keymap
is not copied.

(fn KEYMAP)Fdefine-key
In KEYMAP, define key sequence KEY as DEF.
This is a legacy function; see `keymap-set' for the recommended
function to use instead.

KEYMAP is a keymap.

KEY is a string or a vector of symbols and characters, representing a
sequence of keystrokes and events.  Non-ASCII characters with codes
above 127 (such as ISO Latin-1) can be represented by vectors.
Two types of vector have special meanings:
 [remap COMMAND] remaps any key binding for COMMAND.
 [t] creates a default definition, which applies to any event with no
    other definition in KEYMAP.

DEF is anything that can be a key's definition:
 nil (means key is undefined in this keymap),
 a command (a Lisp function suitable for interactive calling),
 a string (treated as a keyboard macro),
 a keymap (to define a prefix key),
 a symbol (when the key is looked up, the symbol will stand for its
    function definition, which should at that time be one of the above,
    or another symbol whose function definition is used, etc.),
 a cons (STRING . DEFN), meaning that DEFN is the definition
    (DEFN should be a valid definition in its own right) and
    STRING is the menu item name (which is used only if the containing
    keymap has been created with a menu name, see `make-keymap'),
 or a cons (MAP . CHAR), meaning use definition of CHAR in keymap MAP,
 or an extended menu item definition.
 (See info node `(elisp)Extended Menu Items'.)

If REMOVE is non-nil, the definition will be removed.  This is almost
the same as setting the definition to nil, but makes a difference if
the KEYMAP has a parent, and KEY is shadowing the same binding in the
parent.  With REMOVE, subsequent lookups will return the binding in
the parent, and with a nil DEF, the lookups will return nil.

If KEYMAP is a sparse keymap with a binding for KEY, the existing
binding is altered.  If there is no binding for KEY, the new pair
binding KEY to DEF is added at the front of KEYMAP.

(fn KEYMAP KEY DEF &optional REMOVE)Fcommand-remapping
Return the remapping for command COMMAND.
Returns nil if COMMAND is not remapped (or not a symbol).

If the optional argument POSITION is non-nil, it specifies a mouse
position as returned by `event-start' and `event-end', and the
remapping occurs in the keymaps associated with it.  It can also be a
number or marker, in which case the keymap properties at the specified
buffer position instead of point are used.  The KEYMAPS argument is
ignored if POSITION is non-nil.

If the optional argument KEYMAPS is non-nil, it should be a keymap or list of
keymaps to search for command remapping.  Otherwise, search for the
remapping in all currently active keymaps.

(fn COMMAND &optional POSITION KEYMAPS)Flookup-key
Look up key sequence KEY in KEYMAP.  Return the definition.
This is a legacy function; see `keymap-lookup' for the recommended
function to use instead.

A value of nil means undefined.  See doc of `define-key'
for kinds of definitions.

A number as value means KEY is "too long";
that is, characters or symbols in it except for the last one
fail to be a valid sequence of prefix characters in KEYMAP.
The number is how many characters at the front of KEY
it takes to reach a non-prefix key.
KEYMAP can also be a list of keymaps.

Normally, `lookup-key' ignores bindings for t, which act as default
bindings, used when nothing else in the keymap applies; this makes it
usable as a general function for probing keymaps.  However, if the
third optional argument ACCEPT-DEFAULT is non-nil, `lookup-key' will
recognize the default bindings, just as `read-key-sequence' does.

(fn KEYMAP KEY &optional ACCEPT-DEFAULT)Fcurrent-active-maps
Return a list of the currently active keymaps.
OLP if non-nil indicates that we should obey `overriding-local-map' and
`overriding-terminal-local-map'.  POSITION can specify a click position
like in the respective argument of `key-binding'.

(fn &optional OLP POSITION)Fkey-binding
Return the binding for command KEY in current keymaps.
KEY is a string or vector, a sequence of keystrokes.
The binding is probably a symbol with a function definition.

Normally, `key-binding' ignores bindings for t, which act as default
bindings, used when nothing else in the keymap applies; this makes it
usable as a general function for probing keymaps.  However, if the
optional second argument ACCEPT-DEFAULT is non-nil, `key-binding' does
recognize the default bindings, just as `read-key-sequence' does.

Like the normal command loop, `key-binding' will remap the command
resulting from looking up KEY by looking up the command in the
current keymaps.  However, if the optional third argument NO-REMAP
is non-nil, `key-binding' returns the unmapped command.

If KEY is a key sequence initiated with the mouse, the used keymaps
will depend on the clicked mouse position with regard to the buffer
and possible local keymaps on strings.

If the optional argument POSITION is non-nil, it specifies a mouse
position as returned by `event-start' and `event-end', and the lookup
occurs in the keymaps associated with it instead of KEY.  It can also
be a number or marker, in which case the keymap properties at the
specified buffer position instead of point are used.

(fn KEY &optional ACCEPT-DEFAULT NO-REMAP POSITION)Fminor-mode-key-binding
Find the visible minor mode bindings of KEY.
Return an alist of pairs (MODENAME . BINDING), where MODENAME is
the symbol which names the minor mode binding KEY, and BINDING is
KEY's definition in that mode.  In particular, if KEY has no
minor-mode bindings, return nil.  If the first binding is a
non-prefix, all subsequent bindings will be omitted, since they would
be ignored.  Similarly, the list doesn't include non-prefix bindings
that come after prefix bindings.

If optional argument ACCEPT-DEFAULT is non-nil, recognize default
bindings; see the description of `lookup-key' for more details about this.

(fn KEY &optional ACCEPT-DEFAULT)Fuse-global-map
Select KEYMAP as the global keymap.

(fn KEYMAP)Fuse-local-map
Select KEYMAP as the local keymap.
If KEYMAP is nil, that means no local keymap.

(fn KEYMAP)Fcurrent-local-map
Return current buffer's local keymap, or nil if it has none.
Normally the local keymap is set by the major mode with `use-local-map'.

(fn)Fcurrent-global-map
Return the current global keymap.

(fn)Fcurrent-minor-mode-maps
Return a list of keymaps for the minor modes of the current buffer.

(fn)Faccessible-keymaps
Find all keymaps accessible via prefix characters from KEYMAP.
Returns a list of elements of the form (KEYS . MAP), where the sequence
KEYS starting from KEYMAP gets you to MAP.  These elements are ordered
so that the KEYS increase in length.  The first element is ([] . KEYMAP).
An optional argument PREFIX, if non-nil, should be a key sequence;
then the value includes only maps for prefixes that start with PREFIX.

(fn KEYMAP &optional PREFIX)Fkey-description
Return a pretty description of key-sequence KEYS.
Optional arg PREFIX is the sequence of keys leading up to KEYS.
For example, [?\C-x ?l] is converted into the string "C-x l".

For an approximate inverse of this, see `kbd'.

(fn KEYS &optional PREFIX)Fsingle-key-description
Return a pretty description of a character event KEY.
Control characters turn into C-whatever, etc.
Optional argument NO-ANGLES non-nil means don't put angle brackets
around function keys and event symbols.

See `text-char-description' for describing character codes.

(fn KEY &optional NO-ANGLES)Ftext-char-description
Return the description of CHARACTER in standard Emacs notation.
CHARACTER must be a valid character code that passes the `characterp' test.
Control characters turn into "^char", and characters with Meta and other
modifiers signal an error, as they are not valid character codes.
This differs from `single-key-description' which accepts character events,
and thus doesn't enforce the `characterp' condition, turns control
characters into "C-char", and uses the 2**27 bit for Meta.
See Info node `(elisp)Describing Characters' for examples.

(fn CHARACTER)Fwhere-is-internal
Return list of keys that invoke DEFINITION.
If KEYMAP is a keymap, search only KEYMAP and the global keymap.
If KEYMAP is nil, search all the currently active keymaps, except
 for `overriding-local-map' (which is ignored).
If KEYMAP is a list of keymaps, search only those keymaps.

If optional 3rd arg FIRSTONLY is non-nil, return the first key sequence found,
rather than a list of all possible key sequences.
If FIRSTONLY is the symbol `non-ascii', return the first binding found,
no matter what it is.
If FIRSTONLY has another non-nil value, prefer bindings
that use the modifier key specified in `where-is-preferred-modifier'
(or their meta variants) and entirely reject menu bindings.

If optional 4th arg NOINDIRECT is non-nil, don't extract the commands inside
menu-items.  This makes it possible to search for a menu-item itself.

The optional 5th arg NO-REMAP alters how command remapping is handled:

- If another command OTHER-COMMAND is remapped to DEFINITION, normally
  search for the bindings of OTHER-COMMAND and include them in the
  returned list.  But if NO-REMAP is non-nil, include the vector
  [remap OTHER-COMMAND] in the returned list instead, without
  searching for those other bindings.

- If DEFINITION is remapped to OTHER-COMMAND, normally return the
  bindings for OTHER-COMMAND.  But if NO-REMAP is non-nil, return the
  bindings for DEFINITION instead, ignoring its remapping.

Keys that are represented as events that have a `non-key-event' non-nil
symbol property are ignored.

(fn DEFINITION &optional KEYMAP FIRSTONLY NOINDIRECT NO-REMAP)Fdescribe-buffer-bindings
Insert the list of all defined keys and their definitions.
The list is inserted in the current buffer, while the bindings are
looked up in BUFFER.
The optional argument PREFIX, if non-nil, should be a key sequence;
then we display only bindings that start with that prefix.
The optional argument MENUS, if non-nil, says to mention menu bindings.
(Ordinarily these are omitted from the output.)

(fn BUFFER &optional PREFIX MENUS)Fdescribe-vector
Insert a description of contents of VECTOR.
This is text showing the elements of vector matched against indices.
DESCRIBER is the output function used; nil means use `princ'.

(fn VECTOR &optional DESCRIBER)Fhelp--describe-vector
Insert in the current buffer a description of the contents of VECTOR.
Call DESCRIBER to insert the description of one value found in VECTOR.

PREFIX is a string describing the key which leads to the keymap that
this vector is in.

If PARTIAL, it means do not mention suppressed commands.

SHADOW is a list of keymaps that shadow this map.
If it is non-nil, look up the key in those maps and don't mention it
if it is defined by any of them.

ENTIRE-MAP is the keymap in which this vector appears.
If the definition in effect in the whole map does not match
the one in this keymap, we ignore this one.

(fn VECTOR PREFIX DESCRIBER PARTIAL SHADOW ENTIRE-MAP MENTION-SHADOW)Vminibuffer-local-map
Default keymap to use when reading from the minibuffer.Vminor-mode-map-alist
Alist of keymaps to use for minor modes.
Each element looks like (VARIABLE . KEYMAP); KEYMAP is used to read
key sequences and look up bindings if VARIABLE's value is non-nil.
If two active keymaps bind the same key, the keymap appearing earlier
in the list takes precedence.Vminor-mode-overriding-map-alist
Alist of keymaps to use for minor modes, in current major mode.
This variable is an alist just like `minor-mode-map-alist', and it is
used the same way (and before `minor-mode-map-alist'); however,
it is provided for major modes to bind locally.Vemulation-mode-map-alists
List of keymap alists to use for emulation modes.
It is intended for modes or packages using multiple minor-mode keymaps.
Each element is a keymap alist just like `minor-mode-map-alist', or a
symbol with a variable binding which is a keymap alist, and it is used
the same way.  The "active" keymaps in each alist are used before
`minor-mode-map-alist' and `minor-mode-overriding-map-alist'.Vwhere-is-preferred-modifier
Preferred modifier key to use for `where-is'.
When a single binding is requested, `where-is' will return one that
uses this modifier key if possible.  If nil, or if no such binding
exists, bindings using keys without modifiers (or only with meta) will
be preferred.Vdescribe-bindings-check-shadowing-in-ranges
If non-nil, consider command shadowing when describing ranges of keys.
If the value is t, describing bindings of consecutive keys will not
report them as a single range if they are shadowed by different
minor-mode commands.
If the value is `ignore-self-insert', assume that consecutive keys
bound to `self-insert-command' are not all shadowed; this speeds up
commands such as \[describe-bindings] and \[describe-mode], but could miss some shadowing.
Any other non-nil value is treated is t.

Beware: setting this non-nil could potentially slow down commands
that describe key bindings.  That is why the default is nil.Ssysdep.o
Fget-internal-run-time
Return the current run time used by Emacs.
The time is returned as in the style of `current-time'.

On systems that can't determine the run time, `get-internal-run-time'
does the same thing as `current-time'.

(fn)Sbignum.o
Sbuffer.o
Fbuffer-live-p
Return t if OBJECT is a buffer which has not been killed.
Value is nil if OBJECT is not a buffer or if it has been killed.

(fn OBJECT)Fbuffer-list
Return a list of all live buffers.
If the optional arg FRAME is a frame, return the buffer list in the
proper order for that frame: the buffers shown in FRAME come first,
followed by the rest of the buffers.

(fn &optional FRAME)Fget-buffer
Return the buffer named BUFFER-OR-NAME.
BUFFER-OR-NAME must be either a string or a buffer.  If BUFFER-OR-NAME
is a string and there is no buffer with that name, return nil.  If
BUFFER-OR-NAME is a buffer, return it as given.

(fn BUFFER-OR-NAME)Fget-file-buffer
Return the buffer visiting file FILENAME (a string).
The buffer's `buffer-file-name' must match exactly the expansion of FILENAME.
If there is no such live buffer, return nil.
See also `find-buffer-visiting'.

(fn FILENAME)Fget-truename-buffer
Return the buffer with `file-truename' equal to FILENAME (a string).
If there is no such live buffer, return nil.
See also `find-buffer-visiting'.

(fn FILENAME)Ffind-buffer
Return the buffer with buffer-local VARIABLE `equal' to VALUE.
If there is no such live buffer, return nil.
See also `find-buffer-visiting'.

(fn VARIABLE VALUE)Fget-buffer-create
Return the buffer specified by BUFFER-OR-NAME, creating a new one if needed.
If BUFFER-OR-NAME is a string and a live buffer with that name exists,
return that buffer.  If no such buffer exists, create a new buffer with
that name and return it.

If BUFFER-OR-NAME starts with a space, the new buffer does not keep undo
information.  If optional argument INHIBIT-BUFFER-HOOKS is non-nil, the
new buffer does not run the hooks `kill-buffer-hook',
`kill-buffer-query-functions', and `buffer-list-update-hook'.  This
avoids slowing down internal or temporary buffers that are never
presented to users or passed on to other applications.

If BUFFER-OR-NAME is a buffer instead of a string, return it as given,
even if it is dead.  The return value is never nil.

(fn BUFFER-OR-NAME &optional INHIBIT-BUFFER-HOOKS)Fmake-indirect-buffer
Create and return an indirect buffer for buffer BASE-BUFFER, named NAME.
BASE-BUFFER should be a live buffer, or the name of an existing buffer.

NAME should be a string which is not the name of an existing buffer.

Interactively, prompt for BASE-BUFFER (offering the current buffer as
the default), and for NAME (offering as default the name of a recently
used buffer).

Optional argument CLONE non-nil means preserve BASE-BUFFER's state,
such as major and minor modes, in the indirect buffer.
CLONE nil means the indirect buffer's state is reset to default values.

If optional argument INHIBIT-BUFFER-HOOKS is non-nil, the new buffer
does not run the hooks `kill-buffer-hook',
`kill-buffer-query-functions', and `buffer-list-update-hook'.

Interactively, CLONE and INHIBIT-BUFFER-HOOKS are nil.

(fn BASE-BUFFER NAME &optional CLONE INHIBIT-BUFFER-HOOKS)Fgenerate-new-buffer-name
Return a string that is the name of no existing buffer based on NAME.
If there is no live buffer named NAME, then return NAME.
Otherwise modify name by appending `<NUMBER>', incrementing NUMBER
(starting at 2) until an unused name is found, and then return that name.
Optional second argument IGNORE specifies a name that is okay to use (if
it is in the sequence to be tried) even if a buffer with that name exists.

If NAME begins with a space (i.e., a buffer that is not normally
visible to users), then if buffer NAME already exists a random number
is first appended to NAME, to speed up finding a non-existent buffer.

(fn NAME &optional IGNORE)Fbuffer-name
Return the name of BUFFER, as a string.
BUFFER defaults to the current buffer.
Return nil if BUFFER has been killed.

(fn &optional BUFFER)Fbuffer-last-name
Return last name of BUFFER, as a string.
BUFFER defaults to the current buffer.

This is the name BUFFER had before the last time it was renamed or
immediately before it was killed.

(fn &optional BUFFER)Fbuffer-file-name
Return name of file BUFFER is visiting, or nil if none.
No argument or nil as argument means use the current buffer.

(fn &optional BUFFER)Fbuffer-base-buffer
Return the base buffer of indirect buffer BUFFER.
If BUFFER is not indirect, return nil.
BUFFER defaults to the current buffer.

(fn &optional BUFFER)Fbuffer-local-value
Return the value of VARIABLE in BUFFER.
If VARIABLE does not have a buffer-local binding in BUFFER, the value
is the default binding of the variable.

(fn VARIABLE BUFFER)Fbuffer-local-variables
Return an alist of variables that are buffer-local in BUFFER.
Most elements look like (SYMBOL . VALUE), describing one variable.
For a symbol that is locally unbound, just the symbol appears in the value.
Note that storing new VALUEs in these elements doesn't change the variables.
No argument or nil as argument means use current buffer as BUFFER.

(fn &optional BUFFER)Fbuffer-modified-p
Return non-nil if BUFFER was modified since its file was last read or saved.
No argument or nil as argument means use current buffer as BUFFER.

If BUFFER was autosaved since it was last modified, this function
returns the symbol `autosaved'.

(fn &optional BUFFER)Fforce-mode-line-update
Force redisplay of the current buffer's mode line and header line.
With optional non-nil ALL, force redisplay of all mode lines, tab lines and
header lines.  This function also forces recomputation of the
menu bar menus and the frame title.

(fn &optional ALL)Fset-buffer-modified-p
Mark current buffer as modified or unmodified according to FLAG.
A non-nil FLAG means mark the buffer modified.
In addition, this function unconditionally forces redisplay of the
mode lines of the windows that display the current buffer, and also
locks or unlocks the file visited by the buffer, depending on whether
the function's argument is non-nil, but only if both `buffer-file-name'
and `buffer-file-truename' are non-nil.

(fn FLAG)Frestore-buffer-modified-p
Like `set-buffer-modified-p', but doesn't redisplay buffer's mode line.
A nil FLAG means to mark the buffer as unmodified.  A non-nil FLAG
means mark the buffer as modified.  A special value of `autosaved'
will mark the buffer as modified and also as autosaved since it was
last modified.

This function also locks or unlocks the file visited by the buffer,
if both `buffer-file-truename' and `buffer-file-name' are non-nil.

It is not ensured that mode lines will be updated to show the modified
state of the current buffer.  Use with care.

(fn FLAG)Fbuffer-modified-tick
Return BUFFER's tick counter, incremented for each change in text.
Each buffer has a tick counter which is incremented each time the
text in that buffer is changed.  No argument or nil as argument means
use current buffer as BUFFER.

(fn &optional BUFFER)Finternal--set-buffer-modified-tick
Set BUFFER's tick counter to TICK.
No argument or nil as argument means use current buffer as BUFFER.

(fn TICK &optional BUFFER)Fbuffer-chars-modified-tick
Return BUFFER's character-change tick counter.
Each buffer has a character-change tick counter, which is set to the
value of the buffer's tick counter (see `buffer-modified-tick'), each
time text in that buffer is inserted or deleted.  By comparing the
values returned by two individual calls of `buffer-chars-modified-tick',
you can tell whether a character change occurred in that buffer in
between these calls.  No argument or nil as argument means use current
buffer as BUFFER.

(fn &optional BUFFER)Frename-buffer
Change current buffer's name to NEWNAME (a string).
If second arg UNIQUE is nil or omitted, it is an error if a
buffer named NEWNAME already exists.
If UNIQUE is non-nil, come up with a new name using
`generate-new-buffer-name'.
Interactively, you can set UNIQUE with a prefix argument.
We return the name we actually gave the buffer.
This does not change the name of the visited file (if any).

(fn NEWNAME &optional UNIQUE)Fother-buffer
Return most recently selected buffer other than BUFFER.
Buffers not visible in windows are preferred to visible buffers, unless
optional second argument VISIBLE-OK is non-nil.  Ignore the argument
BUFFER unless it denotes a live buffer.  If the optional third argument
FRAME specifies a live frame, then use that frame's buffer list instead
of the selected frame's buffer list.

The buffer is found by scanning the selected or specified frame's buffer
list first, followed by the list of all buffers.  If no other buffer
exists, return the buffer `*scratch*' (creating it if necessary).

(fn &optional BUFFER VISIBLE-OK FRAME)Fbuffer-enable-undo
Start keeping undo information for buffer BUFFER.
No argument or nil as argument means do this for the current buffer.

(fn &optional BUFFER)Fkill-buffer
Kill the buffer specified by BUFFER-OR-NAME.
The argument may be a buffer or the name of an existing buffer.
Argument nil or omitted means kill the current buffer.  Return t if the
buffer is actually killed, nil otherwise.

The functions in `kill-buffer-query-functions' are called with the
buffer to be killed as the current buffer.  If any of them returns nil,
the buffer is not killed.  The hook `kill-buffer-hook' is run before the
buffer is actually killed.  The buffer being killed will be current
while the hook is running.  Functions called by any of these hooks are
supposed to not change the current buffer.  Neither hook is run for
internal or temporary buffers created by `get-buffer-create' or
`generate-new-buffer' with argument INHIBIT-BUFFER-HOOKS non-nil.

Any processes that have this buffer as the `process-buffer' are killed
with SIGHUP.  This function calls `replace-buffer-in-windows' for
cleaning up all windows currently displaying the buffer to be killed.

(fn &optional BUFFER-OR-NAME)Fbury-buffer-internal
Move BUFFER to the end of the buffer list.

(fn BUFFER)Fset-buffer-major-mode
Set an appropriate major mode for BUFFER.
For the *scratch* buffer, use `initial-major-mode', otherwise choose a mode
according to the default value of `major-mode'.
Use this function before selecting the buffer, since it may need to inspect
the current buffer's major mode.

(fn BUFFER)Fcurrent-buffer
Return the current buffer as a Lisp object.

(fn)Fset-buffer
Make buffer BUFFER-OR-NAME current for editing operations.
BUFFER-OR-NAME may be a buffer or the name of an existing buffer.
See also `with-current-buffer' when you want to make a buffer current
temporarily.  This function does not display the buffer, so its effect
ends when the current command terminates.  Use `switch-to-buffer' or
`pop-to-buffer' to switch buffers permanently.
The return value is the buffer made current.

(fn BUFFER-OR-NAME)Fbarf-if-buffer-read-only
Signal a `buffer-read-only' error if the current buffer is read-only.
If the text under POSITION (which defaults to point) has the
`inhibit-read-only' text property set, the error will not be raised.

(fn &optional POSITION)Ferase-buffer
Delete the entire contents of the current buffer.
Any narrowing restriction in effect (see `narrow-to-region') is removed,
so the buffer is truly empty after this.

(fn)Fbuffer-swap-text
Swap the text between current buffer and BUFFER.
Using this function from `save-excursion' might produce surprising
results, see Info node `(elisp)Swapping Text'.

(fn BUFFER)Fset-buffer-multibyte
Set the multibyte flag of the current buffer to FLAG.
If FLAG is t, this makes the buffer a multibyte buffer.
If FLAG is nil, this makes the buffer a single-byte buffer.
In these cases, the buffer contents remain unchanged as a sequence of
bytes but the contents viewed as characters do change.
If FLAG is `to', this makes the buffer a multibyte buffer by changing
all eight-bit bytes to eight-bit characters.
If the multibyte flag was really changed, undo information of the
current buffer is cleared.

(fn FLAG)Fkill-all-local-variables
Switch to Fundamental mode by killing current buffer's local variables.
Most local variable bindings are eliminated so that the default values
become effective once more.  Also, the syntax table is set from
`standard-syntax-table', the local keymap is set to nil,
and the abbrev table from `fundamental-mode-abbrev-table'.
This function also forces redisplay of the mode line.

Every function to select a new major mode starts by
calling this function.

As a special exception, local variables whose names have a non-nil
`permanent-local' property are not eliminated by this function.  If
the optional KILL-PERMANENT argument is non-nil, clear out these local
variables, too.

The first thing this function does is run
the normal hook `change-major-mode-hook'.

(fn &optional KILL-PERMANENT)Foverlayp
Return t if OBJECT is an overlay.

(fn OBJECT)Fmake-overlay
Create a new overlay with range BEG to END in BUFFER and return it.
If omitted, BUFFER defaults to the current buffer.
BEG and END may be integers or markers.
The fourth arg FRONT-ADVANCE, if non-nil, makes the marker
for the front of the overlay advance when text is inserted there
(which means the text *is not* included in the overlay).
The fifth arg REAR-ADVANCE, if non-nil, makes the marker
for the rear of the overlay advance when text is inserted there
(which means the text *is* included in the overlay).

(fn BEG END &optional BUFFER FRONT-ADVANCE REAR-ADVANCE)Fmove-overlay
Set the endpoints of OVERLAY to BEG and END in BUFFER.
If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now.
If BUFFER is omitted, and OVERLAY is in no buffer, put it in the current
buffer.

(fn OVERLAY BEG END &optional BUFFER)Fdelete-overlay
Delete the overlay OVERLAY from its buffer.

(fn OVERLAY)Fdelete-all-overlays
Delete all overlays of BUFFER.
BUFFER omitted or nil means delete all overlays of the current
buffer.

(fn &optional BUFFER)Foverlay-start
Return the position at which OVERLAY starts.

(fn OVERLAY)Foverlay-end
Return the position at which OVERLAY ends.

(fn OVERLAY)Foverlay-buffer
Return the buffer OVERLAY belongs to.
Return nil if OVERLAY has been deleted.

(fn OVERLAY)Foverlay-properties
Return a list of the properties on OVERLAY.
This is a copy of OVERLAY's plist; modifying its conses has no effect on
OVERLAY.

(fn OVERLAY)Foverlays-at
Return a list of the overlays that contain the character at POS.
If SORTED is non-nil, then sort them by decreasing priority.

Zero-length overlays that start and stop at POS are not included in
the return value.  Instead use `overlays-in' if those overlays are of
interest.

(fn POS &optional SORTED)Foverlays-in
Return a list of the overlays that overlap the region BEG ... END.
Overlap means that at least one character is contained within the overlay
and also contained within the specified region.

Empty overlays are included in the result if they are located at BEG,
between BEG and END, or at END provided END denotes the position at the
end of the accessible part of the buffer.

The resulting list of overlays is in an arbitrary unpredictable order.

(fn BEG END)Fnext-overlay-change
Return the next position after POS where an overlay starts or ends.
If there are no overlay boundaries from POS to (point-max),
the value is (point-max).

(fn POS)Fprevious-overlay-change
Return the previous position before POS where an overlay starts or ends.
If there are no overlay boundaries from (point-min) to POS,
the value is (point-min).

(fn POS)Foverlay-lists
Return a list giving all the overlays of the current buffer.

For backward compatibility, the value is actually a list that
holds another list; the overlays are in the inner list.
The list you get is a copy, so that changing it has no effect.
However, the overlays you get are the real objects that the buffer uses.

(fn)Foverlay-recenter
Recenter the overlays of the current buffer around position POS.
That makes overlay lookup faster for positions near POS (but perhaps slower
for positions far away from POS).

Since Emacs 29.1, this function is a no-op, because the implementation
of overlays changed and their lookup is now fast regardless of their
position in the buffer.  In particular, this function no longer affects
the value returned by `overlay-lists'.

(fn POS)Foverlay-get
Get the property of overlay OVERLAY with property name PROP.

(fn OVERLAY PROP)Foverlay-put
Set one property of overlay OVERLAY: give property PROP value VALUE.
VALUE will be returned.

(fn OVERLAY PROP VALUE)Foverlay-tree
Get the overlay tree for BUFFER.

(fn &optional BUFFER)Vtab-line-format
Analogous to `mode-line-format', but controls the tab line.
The tab line appears, optionally, at the top of a window;
the mode line appears at the bottom.Vheader-line-format
Analogous to `mode-line-format', but controls the header line.
The header line appears, optionally, at the top of a window; the mode
line appears at the bottom.

Also see `header-line-indent-mode' if `display-line-numbers-mode' is
turned on and header-line text should be aligned with buffer text.Vmode-line-format
Template for displaying mode line for a window's buffer.

The value may be nil, a string, a symbol or a list.

A value of nil means don't display a mode line.

For any symbol other than t or nil, the symbol's value is processed as
 a mode line construct.  As a special exception, if that value is a
 string, the string is processed verbatim, without handling any
 %-constructs (see below).  Also, unless the symbol has a non-nil
 `risky-local-variable' property, all properties in any strings, as
 well as all :eval and :propertize forms in the value, are ignored.

When the value is processed, the window's buffer is temporarily the
current buffer.

A list whose car is a string or list is processed by processing each
 of the list elements recursively, as separate mode line constructs,
 and concatenating the results.

A list of the form `(:eval FORM)' is processed by evaluating FORM and
 using the result as a mode line construct.  Be careful--FORM should
 not load any files, because that can cause an infinite recursion.

A list of the form `(:propertize ELT PROPS...)' is processed by
 processing ELT as the mode line construct, and adding the text
 properties PROPS to the result.

A list whose car is a symbol is processed by examining the symbol's
 value, and, if that value is non-nil, processing the cadr of the list
 recursively; and if that value is nil, processing the caddr of the
 list recursively.

A list whose car is an integer is processed by processing the cadr of
 the list, and padding (if the number is positive) or truncating (if
 negative) to the width specified by that number.

A string is printed verbatim in the mode line except for %-constructs:
  %b -- print buffer name.
  %c -- print the current column number (this makes editing slower).
        Columns are numbered starting from the left margin, and the
        leftmost column is displayed as zero.
        To make the column number update correctly in all cases,
        `column-number-mode' must be non-nil.
  %C -- Like %c, but the leftmost column is displayed as one.
  %e -- print error message about full memory.
  %f -- print visited file name.
  %F -- print frame name.
  %i -- print the size of the buffer.
  %I -- like %i, but use k, M, G, etc., to abbreviate.
  %l -- print the current line number.
  %n -- print Narrow if appropriate.
  %o -- print percent of window travel through buffer, or Top, Bot or All.
  %p -- print percent of buffer above top of window, or Top, Bot or All.
  %P -- print percent of buffer above bottom of window, perhaps plus Top,
        or print Bottom or All.
  %q -- print percent of buffer above both the top and the bottom of the
        window, separated by `-', or `All'.
  %s -- print process status.
  %z -- print mnemonics of keyboard, terminal, and buffer coding systems.
  %Z -- like %z, but including the end-of-line format.
  %& -- print * if the buffer is modified, otherwise hyphen.
  %+ -- print *, % or hyphen (modified, read-only, neither).
  %* -- print %, * or hyphen (read-only, modified, neither).
        For a modified read-only buffer, %+ prints * and %* prints %.
  %@ -- print @ if default-directory is on a remote machine, else hyphen.
  %[ -- print one [ for each recursive editing level.
  %] -- print one ] for each recursive editing level.
  %- -- print enough dashes to fill the mode line.
  %% -- print %.
Decimal digits after the % specify field width to which to pad.Vmajor-mode
Symbol for current buffer's major mode.
The default value (normally `fundamental-mode') affects new buffers.
A value of nil means to use the current buffer's major mode, provided
it is not marked as "special".Vlocal-minor-modes
Minor modes currently active in the current buffer.
This is a list of symbols, or nil if there are no minor modes active.Vmode-name
Pretty name of current buffer's major mode.
Usually a string, but can use any of the constructs for `mode-line-format',
which see.
Format with `format-mode-line' to produce a string value.Vlocal-abbrev-table
Local (mode-specific) abbrev table of current buffer.Vabbrev-mode
Non-nil if Abbrev mode is enabled.
Use the command `abbrev-mode' to change this variable.Vfill-column
Column beyond which automatic line-wrapping should happen.
It is used by filling commands, such as `fill-region' and `fill-paragraph',
and by `auto-fill-mode', which see.
See also `current-fill-column'.
Interactively, you can set the buffer local value using \[set-fill-column].Vleft-margin
Column for the default `indent-line-function' to indent to.
Linefeed indents to this column in Fundamental mode.Vtab-width
Distance between tab stops (for display of tab characters), in columns.
This controls the width of a TAB character on display.
The value should be a positive integer.
Note that this variable doesn't necessarily affect the size of the
indentation step.  However, if the major mode's indentation facility
inserts one or more TAB characters, this variable will affect the
indentation step as well, even if `indent-tabs-mode' is non-nil.Vctl-arrow
Non-nil means display control chars with uparrow `^'.
A value of nil means use backslash `\' and octal digits.
This variable does not apply to characters whose display is specified in
the current display table (if there is one; see `standard-display-table').Venable-multibyte-characters
Non-nil means the buffer contents are regarded as multi-byte characters.
Otherwise they are regarded as unibyte.  This affects the display,
file I/O and the behavior of various editing commands.

This variable is buffer-local but you cannot set it directly;
use the function `set-buffer-multibyte' to change a buffer's representation.
To prevent any attempts to set it or make it buffer-local, Emacs will
signal an error in those cases.
See also Info node `(elisp)Text Representations'.Vbuffer-file-coding-system
Coding system to be used for encoding the buffer contents on saving.
This variable applies to saving the buffer, and also to `write-region'
and other functions that use `write-region'.
It does not apply to sending output to subprocesses, however.

If this is nil, the buffer is saved without any code conversion
unless some coding system is specified in `file-coding-system-alist'
for the buffer file.

If the text to be saved cannot be encoded as specified by this variable,
an alternative encoding is selected by `select-safe-coding-system', which see.

The variable `coding-system-for-write', if non-nil, overrides this variable.

This variable is never applied to a way of decoding a file while reading it.Vbidi-display-reordering
Non-nil means reorder bidirectional text for display in the visual order.
Setting this to nil is intended for use in debugging the display code.
Don't set to nil in normal sessions, as that is not supported.
See also `bidi-paragraph-direction'; setting that non-nil might
speed up redisplay.Vbidi-paragraph-start-re
If non-nil, a regexp matching a line that starts OR separates paragraphs.

The value of nil means to use empty lines as lines that start and
separate paragraphs.

When Emacs displays bidirectional text, it by default computes
the base paragraph direction separately for each paragraph.
Setting this variable changes the places where paragraph base
direction is recomputed.

The regexp is always matched after a newline, so it is best to
anchor it by beginning it with a "^".

If you change the value of this variable, be sure to change
the value of `bidi-paragraph-separate-re' accordingly.  For
example, to have a single newline behave as a paragraph separator,
set both these variables to "^".

See also `bidi-paragraph-direction'.Vbidi-paragraph-separate-re
If non-nil, a regexp matching a line that separates paragraphs.

The value of nil means to use empty lines as paragraph separators.

When Emacs displays bidirectional text, it by default computes
the base paragraph direction separately for each paragraph.
Setting this variable changes the places where paragraph base
direction is recomputed.

The regexp is always matched after a newline, so it is best to
anchor it by beginning it with a "^".

If you change the value of this variable, be sure to change
the value of `bidi-paragraph-start-re' accordingly.  For
example, to have a single newline behave as a paragraph separator,
set both these variables to "^".

See also `bidi-paragraph-direction'.Vbidi-paragraph-direction
If non-nil, forces directionality of text paragraphs in the buffer.

If this is nil (the default), the direction of each paragraph is
determined by the first strong directional character of its text.
The values of `right-to-left' and `left-to-right' override that.
Any other value is treated as nil.

This variable has no effect unless the buffer's value of
`bidi-display-reordering' is non-nil.Vtruncate-lines
Non-nil means do not display continuation lines.
Instead, give each line of text just one screen line.

Note that this is overridden by the variable
`truncate-partial-width-windows' if that variable is non-nil
and this buffer is not full-frame width.

Minibuffers set this variable to nil.

Don't set this to a non-nil value when `visual-line-mode' is
turned on, as it could produce confusing results.Vword-wrap
Non-nil means to use word-wrapping for continuation lines.
When word-wrapping is on, continuation lines are wrapped at the space
or tab character nearest to the right window edge.
If nil, continuation lines are wrapped at the right screen edge.

This variable has no effect if long lines are truncated (see
`truncate-lines' and `truncate-partial-width-windows').  If you use
word-wrapping, you might want to reduce the value of
`truncate-partial-width-windows', since wrapping can make text readable
in narrower windows.

Instead of setting this variable directly, most users should use
Visual Line mode.  Visual Line mode, when enabled, sets `word-wrap'
to t, and additionally redefines simple editing commands to act on
visual lines rather than logical lines.  See the documentation of
`visual-line-mode'.Vdefault-directory
Name of default directory of current buffer.
It should be an absolute directory name; on GNU and Unix systems,
these names start with "/" or "~" and end with "/".
To interactively change the default directory, use the command `cd'.Vauto-fill-function
Function called (if non-nil) to perform auto-fill.
It is called after self-inserting any character specified in
the `auto-fill-chars' table.
NOTE: This variable is not a hook;
its value may not be a list of functions.Vbuffer-file-name
Name of file visited in current buffer, or nil if not visiting a file.
This should be an absolute file name.Vbuffer-file-truename
Abbreviated truename of file visited in current buffer, or nil if none.
The truename of a file is calculated by `file-truename'
and then abbreviated with `abbreviate-file-name'.Vbuffer-auto-save-file-name
Name of file for auto-saving current buffer.
If it is nil, that means don't auto-save this buffer.Vbuffer-read-only
Non-nil if this buffer is read-only.Vbuffer-backed-up
Non-nil if this buffer's file has been backed up.
Backing up is done before the first time the file is saved.Vbuffer-saved-size
Length of current buffer when last read in, saved or auto-saved.
0 initially.
-1 means auto-saving turned off until next real save.

If you set this to -2, that means don't turn off auto-saving in this buffer
if its text size shrinks.   If you use `buffer-swap-text' on a buffer,
you probably should set this to -2 in that buffer.Vselective-display
Non-nil enables selective display.

An integer N as value means display only lines
that start with less than N columns of space.

A value of t means that the character ^M makes itself and
all the rest of the line invisible; also, when saving the buffer
in a file, save the ^M as a newline.  This usage is obsolete; use
overlays or text properties instead.Vselective-display-ellipses
Non-nil means display ... on previous line when a line is invisible.Voverwrite-mode
Non-nil if self-insertion should replace existing text.
The value should be one of `overwrite-mode-textual',
`overwrite-mode-binary', or nil.
If it is `overwrite-mode-textual', self-insertion still
inserts at the end of a line, and inserts when point is before a tab,
until the tab is filled in.
If `overwrite-mode-binary', self-insertion replaces newlines and tabs too.Vbuffer-display-table
Display table that controls display of the contents of current buffer.

If this variable is nil, the value of `standard-display-table' is used.
Each window can have its own, overriding display table, see
`set-window-display-table' and `window-display-table'.

The display table is a char-table created with `make-display-table'.
A char-table is an array indexed by character codes.  Normal array
primitives `aref' and `aset' can be used to access elements of a char-table.

Each of the char-table elements control how to display the corresponding
text character: the element at index C in the table says how to display
the character whose code is C.  Each element should be a vector of
characters or nil.  The value nil means display the character in the
default fashion; otherwise, the characters from the vector are delivered
to the screen instead of the original character.

For example, (aset buffer-display-table ?X [?Y]) tells Emacs
to display a capital Y instead of each X character.

In addition, a char-table has six extra slots to control the display of:

  the end of a truncated screen line (extra-slot 0, a single character);
  the end of a continued line (extra-slot 1, a single character);
  the escape character used to display character codes in octal
    (extra-slot 2, a single character);
  the character used as an arrow for control characters (extra-slot 3,
    a single character);
  the decoration indicating the presence of invisible lines (extra-slot 4,
    a vector of characters);
  the character used to draw the border between side-by-side windows
    (extra-slot 5, a single character).

See also the functions `display-table-slot' and `set-display-table-slot'.Vleft-margin-width
Width in columns of left marginal area for display of a buffer.
A value of nil means no marginal area.

Setting this variable does not take effect until a new buffer is displayed
in a window.  To make the change take effect, call `set-window-buffer'.Vright-margin-width
Width in columns of right marginal area for display of a buffer.
A value of nil means no marginal area.

Setting this variable does not take effect until a new buffer is displayed
in a window.  To make the change take effect, call `set-window-buffer'.Vleft-fringe-width
Width of this buffer's left fringe (in pixels).
A value of 0 means no left fringe is shown in this buffer's window.
A value of nil means to use the left fringe width from the window's frame.

Setting this variable does not take effect until a new buffer is displayed
in a window.  To make the change take effect, call `set-window-buffer'.Vright-fringe-width
Width of this buffer's right fringe (in pixels).
A value of 0 means no right fringe is shown in this buffer's window.
A value of nil means to use the right fringe width from the window's frame.

Setting this variable does not take effect until a new buffer is displayed
in a window.  To make the change take effect, call `set-window-buffer'.Vfringes-outside-margins
Non-nil means to display fringes outside display margins.
A value of nil means to display fringes between margins and buffer text.

Setting this variable does not take effect until a new buffer is displayed
in a window.  To make the change take effect, call `set-window-buffer'.Vscroll-bar-width
Width of this buffer's vertical scroll bars in pixels.
A value of nil means to use the scroll bar width from the window's frame.Vscroll-bar-height
Height of this buffer's horizontal scroll bars in pixels.
A value of nil means to use the scroll bar height from the window's frame.Vvertical-scroll-bar
Position of this buffer's vertical scroll bar.
The value takes effect whenever you tell a window to display this buffer;
for instance, with `set-window-buffer' or when `display-buffer' displays it.

A value of `left' or `right' means put the vertical scroll bar at that side
of the window; a value of nil means don't show any vertical scroll bars.
A value of t (the default) means do whatever the window's frame specifies.Vhorizontal-scroll-bar
Position of this buffer's horizontal scroll bar.
The value takes effect whenever you tell a window to display this buffer;
for instance, with `set-window-buffer' or when `display-buffer' displays it.

A value of `bottom' means put the horizontal scroll bar at the bottom of
the window; a value of nil means don't show any horizontal scroll bars.
A value of t (the default) means do whatever the window's frame
specifies.Vindicate-empty-lines
Visually indicate unused ("empty") screen lines after the buffer end.
If non-nil, a bitmap is displayed in the left fringe of a window
on graphical displays for each screen line that doesn't correspond
to any buffer text.Vindicate-buffer-boundaries
Visually indicate buffer boundaries and scrolling.
If non-nil, the first and last line of the buffer are marked in the fringe
of a window on graphical displays with angle bitmaps, or if the window can be
scrolled, the top and bottom line of the window are marked with up and down
arrow bitmaps.

If value is a symbol `left' or `right', both angle and arrow bitmaps
are displayed in the left or right fringe, resp.  Any other value
that doesn't look like an alist means display the angle bitmaps in
the left fringe but no arrows.

You can exercise more precise control by using an alist as the
value.  Each alist element (INDICATOR . POSITION) specifies
where to show one of the indicators.  INDICATOR is one of `top',
`bottom', `up', `down', or t, which specifies the default position,
and POSITION is one of `left', `right', or nil, meaning do not show
this indicator.

For example, ((top . left) (t . right)) places the top angle bitmap in
left fringe, the bottom angle bitmap in right fringe, and both arrow
bitmaps in right fringe.  To show just the angle bitmaps in the left
fringe, but no arrow bitmaps, use ((top .  left) (bottom . left)).Vfringe-indicator-alist
Mapping from logical to physical fringe indicator bitmaps.
The value is an alist where each element (INDICATOR . BITMAPS)
specifies the fringe bitmaps used to display a specific logical
fringe indicator.

INDICATOR specifies the logical indicator type which is one of the
following symbols: `truncation' , `continuation', `overlay-arrow',
`top', `bottom', `top-bottom', `up', `down', empty-line', or `unknown'.

BITMAPS is a list of symbols (LEFT RIGHT [LEFT1 RIGHT1]) which specifies
the actual bitmap shown in the left or right fringe for the logical
indicator.  LEFT and RIGHT are the bitmaps shown in the left and/or
right fringe for the specific indicator.  The LEFT1 or RIGHT1 bitmaps
are used only for the `bottom' and `top-bottom' indicators when the
last (only) line has no final newline.  BITMAPS may also be a single
symbol which is used in both left and right fringes.Vfringe-cursor-alist
Mapping from logical to physical fringe cursor bitmaps.
The value is an alist where each element (CURSOR . BITMAP)
specifies the fringe bitmaps used to display a specific logical
cursor type in the fringe.

CURSOR specifies the logical cursor type which is one of the following
symbols: `box' , `hollow', `bar', `hbar', or `hollow-small'.  The last
one is used to show a hollow cursor on narrow lines display lines
where the normal hollow cursor will not fit.

BITMAP is the corresponding fringe bitmap shown for the logical
cursor type.Vscroll-up-aggressively
How far to scroll windows upward.
If you move point off the bottom, the window scrolls automatically.
This variable controls how far it scrolls.  The value nil, the default,
means scroll to center point.  A fraction means scroll to put point
that fraction of the window's height from the bottom of the window.
When the value is 0.0, point goes at the bottom line, which in the
simple case that you moved off with C-f means scrolling just one line.
1.0 means point goes at the top, so that in that simple case, the
window scrolls by a full window height.  Meaningful values are
between 0.0 and 1.0, inclusive.Vscroll-down-aggressively
How far to scroll windows downward.
If you move point off the top, the window scrolls automatically.
This variable controls how far it scrolls.  The value nil, the default,
means scroll to center point.  A fraction means scroll to put point
that fraction of the window's height from the top of the window.
When the value is 0.0, point goes at the top line, which in the
simple case that you moved off with C-b means scrolling just one line.
1.0 means point goes at the bottom, so that in that simple case, the
window scrolls by a full window height.  Meaningful values are
between 0.0 and 1.0, inclusive.Vbefore-change-functions
List of functions to call before each text change.
Two arguments are passed to each function: the positions of
the beginning and end of the range of old text to be changed.
(For an insertion, the beginning and end are at the same place.)
No information is given about the length of the text after the change.

Buffer changes made while executing the `before-change-functions'
don't call any before-change or after-change functions.
That's because `inhibit-modification-hooks' is temporarily set non-nil.

If an unhandled error happens in running these functions,
the variable's value remains nil.  That prevents the error
from happening repeatedly and making Emacs nonfunctional.Vafter-change-functions
List of functions to call after each text change.
Three arguments are passed to each function: the positions of
the beginning and end of the range of changed text,
and the length in chars of the pre-change text replaced by that range.
(For an insertion, the pre-change length is zero;
for a deletion, that length is the number of chars deleted,
and the post-change beginning and end are at the same place.)

Buffer changes made while executing the `after-change-functions'
don't call any before-change or after-change functions.
That's because `inhibit-modification-hooks' is temporarily set non-nil.

If an unhandled error happens in running these functions,
the variable's value remains nil.  That prevents the error
from happening repeatedly and making Emacs nonfunctional.Vfirst-change-hook
A list of functions to call before changing a buffer which is unmodified.
The functions are run using the `run-hooks' function.Vbuffer-undo-list
List of undo entries in current buffer.
Recent changes come first; older changes follow newer.

An entry (BEG . END) represents an insertion which begins at
position BEG and ends at position END.

An entry (TEXT . POSITION) represents the deletion of the string TEXT
from (abs POSITION).  If POSITION is positive, point was at the front
of the text being deleted; if negative, point was at the end.

An entry (t . TIMESTAMP), where TIMESTAMP is in the style of
`current-time', indicates that the buffer was previously unmodified;
TIMESTAMP is the visited file's modification time, as of that time.
If the modification time of the most recent save is different, this
entry is obsolete.

An entry (t . 0) means the buffer was previously unmodified but
its time stamp was unknown because it was not associated with a file.
An entry (t . -1) is similar, except that it means the buffer's visited
file did not exist.

An entry (nil PROPERTY VALUE BEG . END) indicates that a text property
was modified between BEG and END.  PROPERTY is the property name,
and VALUE is the old value.

An entry (apply FUN-NAME . ARGS) means undo the change with
(apply FUN-NAME ARGS).

An entry (apply DELTA BEG END FUN-NAME . ARGS) supports selective undo
in the active region.  BEG and END is the range affected by this entry
and DELTA is the number of characters added or deleted in that range by
this change.

An entry (MARKER . DISTANCE) indicates that the marker MARKER
was adjusted in position by the offset DISTANCE (an integer).

An entry of the form POSITION indicates that point was at the buffer
location given by the integer.  Undoing an entry of this form places
point at POSITION.

Entries with value nil mark undo boundaries.  The undo command treats
the changes between two undo boundaries as a single step to be undone.

If the value of the variable is t, undo information is not recorded.Vmark-active
Non-nil means the mark and region are currently active in this buffer.Vcache-long-scans
Non-nil means that Emacs should use caches in attempt to speedup buffer scans.

There is no reason to set this to nil except for debugging purposes.

Normally, the line-motion functions work by scanning the buffer for
newlines.  Columnar operations (like `move-to-column' and
`compute-motion') also work by scanning the buffer, summing character
widths as they go.  This works well for ordinary text, but if the
buffer's lines are very long (say, more than 500 characters), these
motion functions will take longer to execute.  Emacs may also take
longer to update the display.

If `cache-long-scans' is non-nil, these motion functions cache the
results of their scans, and consult the cache to avoid rescanning
regions of the buffer until the text is modified.  The caches are most
beneficial when they prevent the most searching---that is, when the
buffer contains long lines and large regions of characters with the
same, fixed screen width.

When `cache-long-scans' is non-nil, processing short lines will
become slightly slower (because of the overhead of consulting the
cache), and the caches will use memory roughly proportional to the
number of newlines and characters whose screen width varies.

Bidirectional editing also requires buffer scans to find paragraph
separators.  If you have large paragraphs or no paragraph separators
at all, these scans may be slow.  If `cache-long-scans' is non-nil,
results of these scans are cached.  This doesn't help too much if
paragraphs are of the reasonable (few thousands of characters) size.

The caches require no explicit maintenance; their accuracy is
maintained internally by the Emacs primitives.  Enabling or disabling
the cache should not affect the behavior of any of the motion
functions; it should only affect their performance.Vpoint-before-scroll
Value of point before the last series of scroll operations, or nil.Vbuffer-file-format
List of formats to use when saving this buffer.
Formats are defined by `format-alist'.  This variable is
set when a file is visited.Vbuffer-auto-save-file-format
Format in which to write auto-save files.
Should be a list of symbols naming formats that are defined in `format-alist'.
If it is t, which is the default, auto-save files are written in the
same format as a regular save would use.Vbuffer-invisibility-spec
Invisibility spec of this buffer.
The default is t, which means that text is invisible if it has a non-nil
`invisible' property.
This variable can also be a list.  The list can have two kinds of elements:
`ATOM' and `(ATOM . ELLIPSIS)'.  A text character is invisible if its
`invisible' property is `ATOM', or has an `invisible' property that is a list
that contains `ATOM'.
If the `(ATOM . ELLIPSIS)' form is used, and `ELLIPSIS' is non-nil, an
ellipsis will be displayed after the invisible characters.
Setting this variable is very fast, much faster than scanning all the text in
the buffer looking for properties to change.Vbuffer-display-count
A number incremented each time this buffer is displayed in a window.
The function `set-window-buffer' increments it.Vbuffer-display-time
Time stamp updated each time this buffer is displayed in a window.
The function `set-window-buffer' updates this variable
to the value obtained by calling `current-time'.
If the buffer has never been shown in a window, the value is nil.Vtransient-mark-mode
Non-nil if Transient Mark mode is enabled.
See the command `transient-mark-mode' for a description of this minor mode.

Non-nil also enables highlighting of the region whenever the mark is active.
The region is highlighted with the `region' face.
The variable `highlight-nonselected-windows' controls whether to highlight
all windows or just the selected window.

Lisp programs may give this variable certain special values:

- The symbol `lambda' enables Transient Mark mode temporarily.
  The mode is disabled again after any subsequent action that would
  normally deactivate the mark (e.g. buffer modification).

- The pair (only . OLDVAL) enables Transient Mark mode
  temporarily.  After any subsequent point motion command that is
  not shift-translated, or any other action that would normally
  deactivate the mark (e.g. buffer modification), the value of
  `transient-mark-mode' is set to OLDVAL.Vinhibit-read-only
Non-nil means disregard read-only status of buffers or characters.
A non-nil value that is a list means disregard `buffer-read-only' status,
and disregard a `read-only' text property if the property value is a
member of the list.  Any other non-nil value means disregard `buffer-read-only'
and all `read-only' text properties.Vcursor-type
Cursor to use when this buffer is in the selected window.
Values are interpreted as follows:

  t               use the cursor specified for the frame
  nil             don't display a cursor
  box             display a filled box cursor
  (box . SIZE)    display a filled box cursor, but make it
                  hollow if cursor is under masked image larger than
                  SIZE pixels in either dimension.
  hollow          display a hollow box cursor
  bar             display a vertical bar cursor with default width
  (bar . WIDTH)   display a vertical bar cursor with width WIDTH
  hbar            display a horizontal bar cursor with default height
  (hbar . HEIGHT) display a horizontal bar cursor with height HEIGHT
  ANYTHING ELSE   display a hollow box cursor

WIDTH and HEIGHT can't exceed the frame's canonical character size.

When the buffer is displayed in a non-selected window, the
cursor's appearance is instead controlled by the variable
`cursor-in-non-selected-windows'.Vline-spacing
Additional space to put between lines when displaying a buffer.
The space is measured in pixels, and put below lines on graphic displays,
see `display-graphic-p'.
If value is a floating point number, it specifies the spacing relative
to the default frame line height.  A value of nil means add no extra space.Vcursor-in-non-selected-windows
Non-nil means show a cursor in non-selected windows.
If nil, only shows a cursor in the selected window.
If t, displays a cursor related to the usual cursor type
(a solid box becomes hollow, a bar becomes a narrower bar).
You can also specify the cursor type as in the `cursor-type' variable.
Use Custom to set this variable and update the display.Vtext-conversion-style
How the on screen keyboard's input method should insert in this buffer.

If nil, the input method will be disabled and an ordinary keyboard
will be displayed in its place.

If the value is the symbol `action', the input method will insert text
directly, but will send `return' key events instead of inserting new
line characters.

If the value is the symbol `password', an input method capable of ASCII
input will be enabled, and will not save the entered text where it will
be retrieved for text suggestions or other features not suitable for
handling sensitive information, in addition to reporting `return' as
when `action'.

Any other value means that the input method will insert text directly.

If you need to make non-buffer local changes to this variable, use
`overriding-text-conversion-style', which see.

This variable does not take immediate effect when set; rather, it
takes effect upon the next redisplay after the selected window or
its buffer changes.Vkill-buffer-query-functions
List of functions called with no args to query before killing a buffer.
The buffer being killed will be current while the functions are running.
See `kill-buffer'.

If any of them returns nil, the buffer is not killed.  Functions run by
this hook are supposed to not change the current buffer.

This hook is not run for internal or temporary buffers created by
`get-buffer-create' or `generate-new-buffer' with argument
INHIBIT-BUFFER-HOOKS non-nil.Vchange-major-mode-hook
Normal hook run before changing the major mode of a buffer.
The function `kill-all-local-variables' runs this before doing anything else.Vbuffer-list-update-hook
Hook run when the buffer list changes.
Functions (implicitly) running this hook are `get-buffer-create',
`make-indirect-buffer', `rename-buffer', `kill-buffer', `bury-buffer'
and `select-window'.  This hook is not run for internal or temporary
buffers created by `get-buffer-create' or `generate-new-buffer' with
argument INHIBIT-BUFFER-HOOKS non-nil.

Functions run by this hook should avoid calling `select-window' with a
nil NORECORD argument since it may lead to infinite recursion.Vkill-buffer-delete-auto-save-files
If non-nil, offer to delete any autosave file when killing a buffer.

If `delete-auto-save-files' is nil, any autosave deletion is inhibited.Vdelete-auto-save-files
Non-nil means delete auto-save file when a buffer is saved.
This is the default.  If nil, auto-save file deletion is inhibited.Vcase-fold-search
Non-nil if searches and matches should ignore case.Vclone-indirect-buffer-hook
Normal hook to run in the new buffer at the end of `make-indirect-buffer'.

Since `clone-indirect-buffer' calls `make-indirect-buffer', this hook
will run for `clone-indirect-buffer' calls as well.Vlong-line-threshold
Line length above which to use redisplay shortcuts.

The value should be a positive integer or nil.
If the value is an integer, shortcuts in the display code intended
to speed up redisplay for long lines will automatically be enabled
in buffers which contain one or more lines whose length is above
this threshold.
If nil, these display shortcuts will always remain disabled.

There is no reason to change that value except for debugging purposes.Vlong-line-optimizations-region-size
Region size for narrowing in buffers with long lines.

This variable has effect only in buffers in which
`long-line-optimizations-p' is non-nil.  For performance reasons, in
such buffers, the `fontification-functions', `pre-command-hook' and
`post-command-hook' hooks are executed on a narrowed buffer around
point, as if they were called in a `with-restriction' form with a label.
This variable specifies the size of the narrowed region around point.

To disable that narrowing, set this variable to 0.

See also `long-line-optimizations-bol-search-limit'.

There is no reason to change that value except for debugging purposes.Vlong-line-optimizations-bol-search-limit
Limit for beginning of line search in buffers with long lines.

This variable has effect only in buffers in which
`long-line-optimizations-p' is non-nil.  For performance reasons, in
such buffers, the `fontification-functions', `pre-command-hook' and
`post-command-hook' hooks are executed on a narrowed buffer around
point, as if they were called in a `with-restriction' form with a label.
The variable `long-line-optimizations-region-size' specifies the
size of the narrowed region around point.  This variable, which should
be a small integer, specifies the number of characters by which that
region can be extended backwards to make it start at the beginning of
a line.

There is no reason to change that value except for debugging purposes.Vlarge-hscroll-threshold
Horizontal scroll of truncated lines above which to use redisplay shortcuts.

The value should be a positive integer.

Shortcuts in the display code intended to speed up redisplay for long
and truncated lines will automatically be enabled when a line's
horizontal scroll amount is or about to become larger than the value
of this variable.

This variable has effect only in buffers which contain one or more
lines whose length is above `long-line-threshold', which see.
To disable redisplay shortcuts for long truncated line, set this
variable to `most-positive-fixnum'.

There is no reason to change that value except for debugging purposes.Sfilelock.o
Flock-file
Check whether FILE was modified since it was visited, and lock it.
If user option `create-lockfiles' is nil, this does not create
a lock file for FILE, but it still checks whether FILE was modified
outside of the current Emacs session, and if so, asks the user
whether to modify FILE.

(fn FILE)Funlock-file
Unlock FILE.

(fn FILE)Flock-buffer
Lock FILE, if current buffer is modified.
FILE defaults to current buffer's visited file,
or else nothing is done if current buffer isn't visiting a file.

If the option `create-lockfiles' is nil, this does nothing.

(fn &optional FILE)Funlock-buffer
Unlock the file visited in the current buffer.
If the buffer is not modified, this does nothing because the file
should not be locked in that case.  It also does nothing if the
current buffer is not visiting a file, or is not locked.  Handles file
system errors by calling `display-warning' and continuing as if the
error did not occur.

(fn)Ffile-locked-p
Return a value indicating whether FILENAME is locked.
The value is nil if the FILENAME is not locked,
t if it is locked by you, else a string saying which user has locked it.

(fn FILENAME)Vtemporary-file-directory
The directory for writing temporary files.Vcreate-lockfiles
Non-nil means use lockfiles to avoid editing collisions.
The name of the (per-buffer) lockfile is constructed by prepending
".#" to the name of the file being locked.  See also `lock-buffer' and
Info node `(emacs)Interlocking'.Sinsdel.o
Fcombine-after-change-execute
This function is for use internally in the function `combine-after-change-calls'.

(fn)Vcombine-after-change-calls
Used internally by the function `combine-after-change-calls' macro.Vinhibit-modification-hooks
Non-nil means don't run any of the hooks that respond to buffer changes.
This affects `before-change-functions' and `after-change-functions',
as well as hooks attached to text properties and overlays.
Setting this variable non-nil also inhibits file locks and checks
whether files are locked by another Emacs session, as well as
handling of the active region per `select-active-regions'.

To delay change hooks during a series of changes, use
`combine-change-calls' or `combine-after-change-calls' instead of
binding this variable.

See also the info node `(elisp) Change Hooks'.Smarker.o
Fmarker-buffer
Return the buffer that MARKER points into, or nil if none.
Returns nil if MARKER points into a dead buffer.

(fn MARKER)Fmarker-position
Return the position of MARKER, or nil if it points nowhere.

(fn MARKER)Fmarker-last-position
Return last position of MARKER in its buffer.
This is like `marker-position' with one exception:  If the buffer of
MARKER is dead, it returns the last position of MARKER in that buffer
before it was killed.

(fn MARKER)Fset-marker
Position MARKER before character number POSITION in BUFFER.
If BUFFER is omitted or nil, it defaults to the current buffer.  If
POSITION is nil, makes marker point nowhere so it no longer slows down
editing in any buffer.  Returns MARKER.

(fn MARKER POSITION &optional BUFFER)Fcopy-marker
Return a new marker pointing at the same place as MARKER.
If argument is a number, makes a new marker pointing
at that position in the current buffer.
If MARKER is not specified, the new marker does not point anywhere.
The optional argument TYPE specifies the insertion type of the new marker;
see `marker-insertion-type'.

(fn &optional MARKER TYPE)Fmarker-insertion-type
Return insertion type of MARKER: t if it stays after inserted text.
The value nil means the marker stays before text inserted there.

(fn MARKER)Fset-marker-insertion-type
Set the insertion-type of MARKER to TYPE.
If TYPE is t, it means the marker advances when you insert text at it.
If TYPE is nil, it means the marker stays behind when you insert text at it.

(fn MARKER TYPE)Sminibuf.o
Factive-minibuffer-window
Return the currently active minibuffer window, or nil if none.

(fn)Fset-minibuffer-window
Specify which minibuffer window to use for the minibuffer.
This affects where the minibuffer is displayed if you put text in it
without invoking the usual minibuffer commands.

(fn WINDOW)Fminibufferp
Return t if BUFFER is a minibuffer.
No argument or nil as argument means use current buffer as BUFFER.
BUFFER can be a buffer or a buffer name.  If LIVE is non-nil, then
return t only if BUFFER is an active minibuffer.

(fn &optional BUFFER LIVE)Finnermost-minibuffer-p
Return t if BUFFER is the most nested active minibuffer.
No argument or nil as argument means use the current buffer as BUFFER.

(fn &optional BUFFER)Fminibuffer-innermost-command-loop-p
Return t if BUFFER is a minibuffer at the current command loop level.
No argument or nil as argument means use the current buffer as BUFFER.

(fn &optional BUFFER)Fabort-minibuffers
Abort the current minibuffer.
If we are not currently in the innermost minibuffer, prompt the user to
confirm the aborting of the current minibuffer and all contained ones.

(fn)Fminibuffer-prompt-end
Return the buffer position of the end of the minibuffer prompt.
Return (point-min) if current buffer is not a minibuffer.

(fn)Fminibuffer-contents
Return the user input in a minibuffer as a string.
If the current buffer is not a minibuffer, return its entire contents.

(fn)Fminibuffer-contents-no-properties
Return the user input in a minibuffer as a string, without text-properties.
If the current buffer is not a minibuffer, return its entire contents.

(fn)Fread-from-minibuffer
Read and return a string from the minibuffer, prompting with string PROMPT.
The optional second arg INITIAL-CONTENTS is an obsolete alternative to
  DEFAULT-VALUE.  It normally should be nil in new code, except when
  HIST is a cons.  It is discussed in more detail below.

Third arg KEYMAP is a keymap to use whilst reading;
  if omitted or nil, the default is `minibuffer-local-map'.

If fourth arg READ is non-nil, interpret the result as a Lisp object
  and return that object:
  in other words, do `(car (read-from-string INPUT-STRING))'

Fifth arg HIST, if non-nil, specifies a history list and optionally
  the initial position in the list.  It can be a symbol, which is the
  history list variable to use, or a cons cell (HISTVAR . HISTPOS).
  In that case, HISTVAR is the history list variable to use, and
  HISTPOS is the initial position for use by the minibuffer history
  commands.  For consistency, you should also specify that element of
  the history as the value of INITIAL-CONTENTS.  Positions are counted
  starting from 1 at the beginning of the list.  If HIST is nil, the
  default history list `minibuffer-history' is used.  If HIST is t,
  history is not recorded.

  If `history-add-new-input' is non-nil (the default), the result will
  be added to the history list using `add-to-history'.

Sixth arg DEFAULT-VALUE, if non-nil, should be a string, which is used
  as the default to `read' if READ is non-nil and the user enters
  empty input.  But if READ is nil, this function does _not_ return
  DEFAULT-VALUE for empty input!  Instead, it returns the empty string.

  Whatever the value of READ, DEFAULT-VALUE is made available via the
  minibuffer history commands.  DEFAULT-VALUE can also be a list of
  strings, in which case all the strings are available in the history,
  and the first string is the default to `read' if READ is non-nil.

Seventh arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
 the current input method and the setting of `enable-multibyte-characters'.

If the variable `minibuffer-allow-text-properties' is non-nil
 (either let-bound or buffer-local in the minibuffer),
 then the string which is returned includes whatever text properties
 were present in the minibuffer.  Otherwise the value has no text properties.

If `inhibit-interaction' is non-nil, this function will signal an
  `inhibited-interaction' error.

The remainder of this documentation string describes the
INITIAL-CONTENTS argument in more detail.  It is only relevant when
studying existing code, or when HIST is a cons.  If non-nil,
INITIAL-CONTENTS is a string to be inserted into the minibuffer before
reading input.  Normally, point is put at the end of that string.
However, if INITIAL-CONTENTS is (STRING . POSITION), the initial
input is STRING, but point is placed at _one-indexed_ position
POSITION in the minibuffer.  Any integer value less than or equal to
one puts point at the beginning of the string.  *Note* that this
behavior differs from the way such arguments are used in `completing-read'
and some related functions, which use zero-indexing for POSITION.

(fn PROMPT &optional INITIAL-CONTENTS KEYMAP READ HIST DEFAULT-VALUE INHERIT-INPUT-METHOD)Fread-string
Read and return a string from the minibuffer, prompting with PROMPT.

PROMPT is a string, which should normally end with the string ": ".

If non-nil, second arg INITIAL-INPUT is a string to insert before
reading.  This argument has been superseded by DEFAULT-VALUE and should
normally be nil in new code.  It behaves as INITIAL-CONTENTS in
`read-from-minibuffer' (which see).

The third arg HISTORY, if non-nil, specifies a history list and
optionally the initial position in the list.

See `read-from-minibuffer' for details of HISTORY argument.

Fourth arg DEFAULT-VALUE is the default value or the list of default
values.  If non-nil, it is used for history commands, and as the value
(or the first element of the list of default values) to return if the
user enters the empty string.

Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer
inherits the current input method and the setting of
`enable-multibyte-characters'.

(fn PROMPT &optional INITIAL-INPUT HISTORY DEFAULT-VALUE INHERIT-INPUT-METHOD)Fread-command
Read the name of a command and return it as a symbol.
Prompt with PROMPT.  By default, return DEFAULT-VALUE or its first element
if it is a list.  If DEFAULT-VALUE is omitted or nil, and the user enters
null input, return a symbol whose name is an empty string.

(fn PROMPT &optional DEFAULT-VALUE)Fread-function
One arg PROMPT, a string.  Read the name of a function and return as a symbol.
Prompt with PROMPT.

(fn PROMPT)Fread-variable
Read the name of a user option and return it as a symbol.
Prompt with PROMPT.  By default, return DEFAULT-VALUE or its first element
if it is a list of strings.
A user option, or customizable variable, is one for which
`custom-variable-p' returns non-nil.

(fn PROMPT &optional DEFAULT-VALUE)Fread-buffer
Read the name of a buffer and return it as a string.
Prompt with PROMPT, which should be a string ending with a colon and a space.
Provides completion on buffer names the user types.
Optional second arg DEF is value to return if user enters an empty line,
 instead of that empty string.
 If DEF is a list of default values, return its first element.
Optional third arg REQUIRE-MATCH has the same meaning as the
 REQUIRE-MATCH argument of `completing-read'.
Optional arg PREDICATE, if non-nil, is a function limiting the buffers that
can be considered.  It will be called with each potential candidate, in
the form of either a string or a cons cell whose `car' is a string, and
should return non-nil to accept the candidate for completion, nil otherwise.
If `read-buffer-completion-ignore-case' is non-nil, completion ignores
case while reading the buffer name.
If `read-buffer-function' is non-nil, this works by calling it as a
function, instead of the usual behavior.

(fn PROMPT &optional DEF REQUIRE-MATCH PREDICATE)Ftry-completion
Return longest common substring of all completions of STRING in COLLECTION.

Test each possible completion specified by COLLECTION
to see if it begins with STRING.  The possible completions may be
strings or symbols.  Symbols are converted to strings before testing,
by using `symbol-name'.

If no possible completions match, the function returns nil; if
there's just one exact match, it returns t; otherwise it returns
the longest initial substring common to all possible completions
that begin with STRING.

If COLLECTION is an alist, the keys (cars of elements) are the
possible completions.  If an element is not a cons cell, then the
element itself is a possible completion.
If COLLECTION is a hash-table, all the keys that are either strings
or symbols are the possible completions.
If COLLECTION is an obarray, the names of all symbols in the obarray
are the possible completions.

COLLECTION can also be a function to do the completion itself.
It receives three arguments: STRING, PREDICATE and nil.
Whatever it returns becomes the value of `try-completion'.

If optional third argument PREDICATE is non-nil, it must be a function
of one or two arguments, and is used to test each possible completion.
A possible completion is accepted only if PREDICATE returns non-nil.

The argument given to PREDICATE is either a string or a cons cell (whose
car is a string) from the alist, or a symbol from the obarray.
If COLLECTION is a hash-table, PREDICATE is called with two arguments:
the string key and the associated value.

To be acceptable, a possible completion must also match all the regexps
in `completion-regexp-list' (unless COLLECTION is a function, in
which case that function should itself handle `completion-regexp-list').

If `completion-ignore-case' is non-nil, possible completions are matched
while ignoring letter-case, but no guarantee is made about the letter-case
of the return value, except that it comes either from the user's input
or from one of the possible completions.

(fn STRING COLLECTION &optional PREDICATE)Fall-completions
Search for partial matches of STRING in COLLECTION.

Test each possible completion specified by COLLECTION
to see if it begins with STRING.  The possible completions may be
strings or symbols.  Symbols are converted to strings before testing,
by using `symbol-name'.

The value is a list of all the possible completions that match STRING.

If COLLECTION is an alist, the keys (cars of elements) are the
possible completions.  If an element is not a cons cell, then the
element itself is the possible completion.
If COLLECTION is a hash-table, all the keys that are strings or symbols
are the possible completions.
If COLLECTION is an obarray, the names of all symbols in the obarray
are the possible completions.

COLLECTION can also be a function to do the completion itself.
It receives three arguments: STRING, PREDICATE and t.
Whatever it returns becomes the value of `all-completions'.

If optional third argument PREDICATE is non-nil, it must be a function
of one or two arguments, and is used to test each possible completion.
A possible completion is accepted only if PREDICATE returns non-nil.

The argument given to PREDICATE is either a string or a cons cell (whose
car is a string) from the alist, or a symbol from the obarray.
If COLLECTION is a hash-table, PREDICATE is called with two arguments:
the string key and the associated value.

To be acceptable, a possible completion must also match all the regexps
in `completion-regexp-list' (unless COLLECTION is a function, in
which case that function should itself handle `completion-regexp-list').

An obsolete optional fourth argument HIDE-SPACES is still accepted for
backward compatibility.  If non-nil, strings in COLLECTION that start
with a space are ignored unless STRING itself starts with a space.

(fn STRING COLLECTION &optional PREDICATE HIDE-SPACES)Fcompleting-read
Read a string in the minibuffer, with completion.
While in the minibuffer, you can use \<minibuffer-local-completion-map>\[minibuffer-complete] and \[minibuffer-complete-word] to complete your input.
You can also use \<minibuffer-local-map>\[minibuffer-complete-history] to complete using history items in the
input history HIST, and you can use \[minibuffer-complete-defaults] to complete using
the default items in DEFAULT-VALUE.

PROMPT is a string to prompt with; normally it ends in a colon and a space.
COLLECTION can be a list of strings, an alist, an obarray or a hash table.
COLLECTION can also be a function to do the completion itself.
PREDICATE limits completion to a subset of COLLECTION.
See `try-completion', `all-completions', `test-completion',
and `completion-boundaries', for more details on completion,
COLLECTION, and PREDICATE.  See also Info node `(elisp)Basic Completion'
for the details about completion, and Info node `(elisp)Programmed
Completion' for expectations from COLLECTION when it's a function.

REQUIRE-MATCH can take the following values:
- t means that the user is not allowed to exit unless the input is (or
  completes to) an element of COLLECTION or is null.
- nil means that the user can exit with any input.
- `confirm' means that the user can exit with any input, but she needs
  to confirm her choice if the input is not an element of COLLECTION.
- `confirm-after-completion' means that the user can exit with any
  input, but she needs to confirm her choice if she called
  `minibuffer-complete' right before `minibuffer-complete-and-exit'
  and the input is not an element of COLLECTION.
- a function, which will be called with the input as the
  argument.  If the function returns a non-nil value, the
  minibuffer is exited with that argument as the value.
- anything else behaves like t except that typing RET does not exit if it
  does non-null completion.

If the input is null, `completing-read' returns DEF, or the first
element of the list of default values, or an empty string if DEF is
nil, regardless of the value of REQUIRE-MATCH.

If INITIAL-INPUT is non-nil, insert it in the minibuffer initially,
  with point positioned at the end.  If it is (STRING . POSITION), the
  initial input is STRING, but point is placed at _zero-indexed_
  position POSITION in STRING.  (*Note* that this is different from
  `read-from-minibuffer' and related functions, which use one-indexing
  for POSITION.)  This feature is deprecated--it is best to pass nil
  for INITIAL-INPUT and supply the default value DEF instead.  The
  user can yank the default value into the minibuffer easily using
  \<minibuffer-local-map>\[next-history-element].

HIST, if non-nil, specifies a history list and optionally the initial
  position in the list.  It can be a symbol, which is the history list
  variable to use, or it can be a cons cell (HISTVAR . HISTPOS).  In
  that case, HISTVAR is the history list variable to use, and HISTPOS
  is the initial position (the position in the list used by the
  minibuffer history commands).  For consistency, you should also
  specify that element of the history as the value of INITIAL-INPUT.
  (This is the only case in which you should use INITIAL-INPUT instead
  of DEF.)  Positions are counted starting from 1 at the beginning of
  the list.  The variable `history-length' controls the maximum length
  of a history list.  If HIST is t, history is not recorded.

DEF, if non-nil, is the default value or the list of default values.

If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits the
  current input method and the setting of `enable-multibyte-characters'.

Completion ignores case if the ambient value of
  `completion-ignore-case' is non-nil.

See also `completing-read-function'.

(fn PROMPT COLLECTION &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)Ftest-completion
Return non-nil if STRING is a valid completion.
For instance, if COLLECTION is a list of strings, STRING is a
valid completion if it appears in the list and PREDICATE is satisfied.

Takes the same arguments as `all-completions' and `try-completion'.

If COLLECTION is a function, it is called with three arguments:
the values STRING, PREDICATE and `lambda'.

(fn STRING COLLECTION &optional PREDICATE)Finternal-complete-buffer
Perform completion on buffer names.
STRING and PREDICATE have the same meanings as in `try-completion',
`all-completions', and `test-completion'.

If FLAG is nil, invoke `try-completion'; if it is t, invoke
`all-completions'; otherwise invoke `test-completion'.

(fn STRING PREDICATE FLAG)Fassoc-string
Like `assoc' but specifically for strings (and symbols).

This returns the first element of LIST whose car matches the string or
symbol KEY, or nil if no match exists.  When performing the
comparison, symbols are first converted to strings, and unibyte
strings to multibyte.  If the optional arg CASE-FOLD is non-nil, both
KEY and the elements of LIST are upcased for comparison.

Unlike `assoc', KEY can also match an entry in LIST consisting of a
single string, rather than a cons cell whose car is a string.

(fn KEY LIST &optional CASE-FOLD)Fminibuffer-depth
Return current depth of activations of minibuffer, a nonnegative integer.

(fn)Fminibuffer-prompt
Return the prompt string of the currently-active minibuffer.
If no minibuffer is active, return nil.

(fn)Vread-expression-history
A history list for arguments that are Lisp expressions to evaluate.
For example, `eval-expression' uses this.Vread-buffer-function
If this is non-nil, `read-buffer' does its work by calling this function.
The function is called with the arguments passed to `read-buffer'.Vminibuffer-follows-selected-frame
t means the active minibuffer always displays on the selected frame.
Nil means that a minibuffer will appear only in the frame which created it.
Any other value means the minibuffer will move onto another frame, but
only when the user starts using a minibuffer there.

Any buffer local or dynamic binding of this variable is ignored.  Only the
default top level value is used.Vread-buffer-completion-ignore-case
Non-nil means completion ignores case when reading a buffer name.Vminibuffer-setup-hook
Normal hook run just after entry to minibuffer.Vminibuffer-exit-hook
Normal hook run whenever a minibuffer is exited.Vhistory-length
Maximum length of history lists before truncation takes place.
A number means truncate to that length; truncation deletes old
elements, and is done just after inserting a new element.
A value of t means no truncation.

This variable only affects history lists that don't specify their own
maximum lengths.  Setting the `history-length' property of a history
variable overrides this default.Vhistory-delete-duplicates
Non-nil means to delete duplicates in history.
If set to t when adding a new history element, all previous identical
elements are deleted from the history list.Vhistory-add-new-input
Non-nil means to add new elements in history.
If set to nil, minibuffer reading functions don't add new elements to the
history list, so it is possible to do this afterwards by calling
`add-to-history' explicitly.Vcompletion-ignore-case
Non-nil means don't consider case significant in completion.
For file-name completion, `read-file-name-completion-ignore-case'
controls the behavior, rather than this variable.
For buffer name completion, `read-buffer-completion-ignore-case'
controls the behavior, rather than this variable.Venable-recursive-minibuffers
Non-nil means to allow minibuffer commands while in the minibuffer.
This variable makes a difference whenever the minibuffer window is active.
Also see `minibuffer-depth-indicate-mode', which may be handy if this
variable is non-nil.Vminibuffer-completion-table
Alist or obarray used for completion in the minibuffer.
This becomes the ALIST argument to `try-completion' and `all-completions'.
The value can also be a list of strings or a hash table.

The value may alternatively be a function, which is given three arguments:
  STRING, the current buffer contents;
  PREDICATE, the predicate for filtering possible matches;
  CODE, which says what kind of things to do.
CODE can be nil, t or `lambda':
  nil    -- return the best completion of STRING, or nil if there is none.
  t      -- return a list of all possible completions of STRING.
  lambda -- return t if STRING is a valid completion as it stands.Vminibuffer-completion-predicate
Within call to `completing-read', this holds the PREDICATE argument.Vminibuffer-completion-confirm
Whether to demand confirmation of completion before exiting minibuffer.
If nil, confirmation is not required.
If the value is `confirm', the user may exit with an input that is not
 a valid completion alternative, but Emacs asks for confirmation.
If the value is `confirm-after-completion', the user may exit with an
 input that is not a valid completion alternative, but Emacs asks for
 confirmation if the user submitted the input right after any of the
 completion commands listed in `minibuffer-confirm-exit-commands'.Vminibuffer-completing-file-name
Non-nil means completing file names.Vminibuffer-help-form
Value that `help-form' takes on inside the minibuffer.Vminibuffer-history-variable
History list symbol to add minibuffer values to.
Each string of minibuffer input, as it appears on exit from the minibuffer,
is added with

  (set minibuffer-history-variable
       (cons STRING (symbol-value minibuffer-history-variable)))

 If the variable is t, no history is recorded.Vminibuffer-history-position
Current position of redoing in the history list.Vminibuffer-auto-raise
Non-nil means entering the minibuffer raises the minibuffer's frame.
Some uses of the echo area also raise that frame (since they use it too).Vcompletion-regexp-list
List of regexps that should restrict possible completions.
The basic completion functions only consider a completion acceptable
if it matches all regular expressions in this list, with
`case-fold-search' bound to the value of `completion-ignore-case'.
See Info node `(elisp)Basic Completion', for a description of these
functions.

Do not set this variable to a non-nil value globally, as that is not
safe and will probably cause errors in completion commands.  This
variable should be only let-bound to non-nil values around calls to
basic completion functions like `try-completion' and `all-completions'.Vminibuffer-allow-text-properties
Non-nil means `read-from-minibuffer' should not discard text properties.
The value could be let-bound or buffer-local in the minibuffer.
This also affects `read-string', or any of the functions that do
minibuffer input with completion, but it does not affect `read-minibuffer'
that always discards text properties.Vminibuffer-prompt-properties
Text properties that are added to minibuffer prompts.
These are in addition to the basic `field' property, and stickiness
properties.Vread-hide-char
Whether to hide input characters in noninteractive mode.
If non-nil, it must be a character, which will be used to mask the
input characters.  This variable should never be set globally.

This variable also overrides the default character that `read-passwd'
uses to hide passwords.Vinhibit-interaction
Non-nil means any user interaction will signal an error.
This variable can be bound when user interaction can't be performed,
for instance when running a headless Emacs server.  Functions like
`read-from-minibuffer' (and the like) will signal `inhibited-interaction'
instead.Vread-minibuffer-restore-windows
Non-nil means restore window configurations on exit from minibuffer.
If this is non-nil (the default), reading input with the minibuffer will
restore, on exit, the window configurations of the frame where the
minibuffer was entered from and, if it is different, the frame that owns
the associated minibuffer window.

If this is nil, window configurations are not restored upon exiting
the minibuffer.  However, if `minibuffer-restore-windows' is present
in `minibuffer-exit-hook', exiting the minibuffer will remove the window
showing the *Completions* buffer, if any.Sfileio.o
Ffind-file-name-handler
Return FILENAME's handler function for OPERATION, if it has one.
Otherwise, return nil.
A file name is handled if one of the regular expressions in
`file-name-handler-alist' matches it.

If OPERATION equals `inhibit-file-name-operation', then ignore
any handlers that are members of `inhibit-file-name-handlers',
but still do run any other handlers.  This lets handlers
use the standard functions without calling themselves recursively.

(fn FILENAME OPERATION)Ffile-name-directory
Return the directory component in file name FILENAME.
Return nil if FILENAME does not include a directory.
Otherwise return a directory name.
Given a Unix syntax file name, returns a string ending in slash.

(fn FILENAME)Ffile-name-nondirectory
Return file name FILENAME sans its directory.
For example, in a Unix-syntax file name,
this is everything after the last slash,
or the entire name if it contains no slash.

(fn FILENAME)Funhandled-file-name-directory
Return a directly usable directory name somehow associated with FILENAME.
A `directly usable' directory name is one that may be used without the
intervention of any file name handler.
If FILENAME is a directly usable file itself, return
(file-name-as-directory FILENAME).
If FILENAME refers to a file which is not accessible from a local process,
then this should return nil.
The `call-process' and `start-process' functions use this function to
get a current directory to run processes in.

(fn FILENAME)Ffile-name-as-directory
Return a string representing the file name FILE interpreted as a directory.
This operation exists because a directory is also a file, but its name as
a directory is different from its name as a file.
The result can be used as the value of `default-directory'
or passed as second argument to `expand-file-name'.
For a Unix-syntax file name, just appends a slash unless a trailing slash
is already present.

(fn FILE)Fdirectory-name-p
Return non-nil if NAME ends with a directory separator character.

(fn NAME)Fdirectory-file-name
Returns the file name of the directory named DIRECTORY.
This is the name of the file that holds the data for the directory DIRECTORY.
This operation exists because a directory is also a file, but its name as
a directory is different from its name as a file.
In Unix-syntax, this function just removes the final slash.

(fn DIRECTORY)Fmake-temp-file-internal
Generate a new file whose name starts with PREFIX, a string.
Return the name of the generated file.  If DIR-FLAG is zero, do not
create the file, just its name.  Otherwise, if DIR-FLAG is non-nil,
create an empty directory.  The file name should end in SUFFIX.
Do not expand PREFIX; a non-absolute PREFIX is relative to the Emacs
working directory.  If TEXT is a string, insert it into the newly
created file.

Signal an error if the file could not be created.

This function does not grok magic file names.

(fn PREFIX DIR-FLAG SUFFIX TEXT)Fmake-temp-name
Generate temporary file name (string) starting with PREFIX (a string).

This function tries to choose a name that has no existing file.
For this to work, PREFIX should be an absolute file name, and PREFIX
and the returned string should both be non-magic.

There is a race condition between calling `make-temp-name' and
later creating the file, which opens all kinds of security holes.
For that reason, you should normally use `make-temp-file' instead.

(fn PREFIX)Ffile-name-concat
Append COMPONENTS to DIRECTORY and return the resulting string.
Each element in COMPONENTS must be a string or nil.
DIRECTORY or the non-final elements in COMPONENTS may or may not end
with a slash -- if they don't end with a slash, a slash will be
inserted before concatenating.
In most cases, one or more calls to `expand-file-name' are better
suited for the job than this function.  Use this function only if
some of the special expansions done by `expand-file-name' get in
the way of what your program needs to do.

(fn DIRECTORY &rest COMPONENTS)Fexpand-file-name
Convert filename NAME to absolute, and canonicalize it.
Second arg DEFAULT-DIRECTORY is directory to start with if NAME is relative
(does not start with slash or tilde); both the directory name and
a directory's file name are accepted.  If DEFAULT-DIRECTORY is nil or
missing, the current buffer's value of `default-directory' is used.
NAME should be a string that is a valid file name for the underlying
filesystem.

File name components that are `.' are removed, and so are file name
components followed by `..', along with the `..' itself; note that
these simplifications are done without checking the resulting file
names in the file system.

Multiple consecutive slashes are collapsed into a single slash, except
at the beginning of the file name when they are significant (e.g., UNC
file names on MS-Windows.)

An initial "~" in NAME expands to your home directory.

An initial "~USER" in NAME expands to USER's home directory.  If
USER doesn't exist, "~USER" is not expanded.

To do other file name substitutions, see `substitute-in-file-name'.

For technical reasons, this function can return correct but
non-intuitive results for the root directory; for instance,
(expand-file-name ".." "/") returns "/..".  For this reason, use
(directory-file-name (file-name-directory dirname)) to traverse a
filesystem tree, not (expand-file-name ".." dirname).  Note: make
sure DIRNAME in this example doesn't end in a slash, unless it's
the root directory.

(fn NAME &optional DEFAULT-DIRECTORY)Fsubstitute-in-file-name
Substitute environment variables referred to in FILENAME.
`$FOO' where FOO is an environment variable name means to substitute
the value of that variable.  The variable name should be terminated
with a character not a letter, digit or underscore; otherwise, enclose
the entire variable name in braces.

If FOO is not defined in the environment, `$FOO' is left unchanged in
the value of this function.

If `/~' appears, all of FILENAME through that `/' is discarded.
If `//' appears, everything up to and including the first of
those `/' is discarded.  More generally, if a variable substitution
produces an absolute file name, everything before that file name
is discarded.

(fn FILENAME)Fcopy-file
Copy FILE to NEWNAME.  Both args must be strings.
If NEWNAME is a directory name, copy FILE to a like-named file under
NEWNAME.  For NEWNAME to be recognized as a directory name, it should
end in a slash.

This function always sets the file modes of the output file to match
the input file.

The optional third argument OK-IF-ALREADY-EXISTS specifies what to do
if file NEWNAME already exists.  If OK-IF-ALREADY-EXISTS is nil,
signal a `file-already-exists' error without overwriting.  If
OK-IF-ALREADY-EXISTS is an integer, request confirmation from the user
about overwriting; this is what happens in interactive use with M-x.
Any other value for OK-IF-ALREADY-EXISTS means to overwrite the
existing file.

Fourth arg KEEP-TIME non-nil means give the output file the same
last-modified time as the old one.  (This works on only some systems.)

A prefix arg makes KEEP-TIME non-nil.

If PRESERVE-UID-GID is non-nil, try to transfer the uid and gid of
FILE to NEWNAME.

If PRESERVE-PERMISSIONS is non-nil, copy permissions of FILE to NEWNAME;
this includes the file modes, along with ACL entries and SELinux
context if present.  Otherwise, if NEWNAME is created its file
permission bits are those of FILE, masked by the default file
permissions.

(fn FILE NEWNAME &optional OK-IF-ALREADY-EXISTS KEEP-TIME PRESERVE-UID-GID PRESERVE-PERMISSIONS)Fmake-directory-internal
Create a new directory named DIRECTORY.

(fn DIRECTORY)Fdelete-directory-internal
Delete the directory named DIRECTORY.  Does not follow symlinks.

(fn DIRECTORY)Fdelete-file-internal
Delete file named FILENAME; internal use only.
If it is a symlink, remove the symlink.
If file has multiple names, it continues to exist with the other names.

(fn FILENAME)Ffile-name-case-insensitive-p
Return t if file FILENAME is on a case-insensitive filesystem.
Return nil if FILENAME does not exist or is not on a case-insensitive
filesystem, or if there was trouble determining whether the filesystem
is case-insensitive.

(fn FILENAME)Frename-file
Rename FILE as NEWNAME.  Both args must be strings.
If file has names other than FILE, it continues to have those names.
If NEWNAME is a directory name, rename FILE to a like-named file under
NEWNAME.  For NEWNAME to be recognized as a directory name, it should
end in a slash.

Signal a `file-already-exists' error if a file NEWNAME already exists
unless optional third argument OK-IF-ALREADY-EXISTS is non-nil.
An integer third arg means request confirmation if NEWNAME already exists.
This is what happens in interactive use with M-x.

(fn FILE NEWNAME &optional OK-IF-ALREADY-EXISTS)Fadd-name-to-file
Give FILE additional name NEWNAME.  Both args must be strings.
If NEWNAME is a directory name, give FILE a like-named new name under
NEWNAME.

Signal a `file-already-exists' error if a file NEWNAME already exists
unless optional third argument OK-IF-ALREADY-EXISTS is non-nil.
An integer third arg means request confirmation if NEWNAME already exists.
This is what happens in interactive use with M-x.

(fn FILE NEWNAME &optional OK-IF-ALREADY-EXISTS)Fmake-symbolic-link
Make a symbolic link to TARGET, named LINKNAME.
If LINKNAME is a directory name, make a like-named symbolic link under
LINKNAME.

Signal a `file-already-exists' error if a file LINKNAME already exists
unless optional third argument OK-IF-ALREADY-EXISTS is non-nil.
An integer third arg means request confirmation if LINKNAME already
exists, and expand leading "~" or strip leading "/:" in TARGET.
This happens for interactive use with M-x.

(fn TARGET LINKNAME &optional OK-IF-ALREADY-EXISTS)Ffile-name-absolute-p
Return t if FILENAME is an absolute file name.
On Unix, absolute file names start with `/'.  In Emacs, an absolute
file name can also start with an initial `~' or `~USER' component,
where USER is a valid login name.

(fn FILENAME)Ffile-exists-p
Return t if file FILENAME exists (whether or not you can read it).
Return nil if FILENAME does not exist, or if there was trouble
determining whether the file exists.
See also `file-readable-p' and `file-attributes'.
This returns nil for a symlink to a nonexistent file.
Use `file-symlink-p' to test for such links.

(fn FILENAME)Ffile-executable-p
Return t if FILENAME can be executed by you.
For a directory, this means you can access files in that directory.
(It is generally better to use `file-accessible-directory-p' for that
purpose, though.)

(fn FILENAME)Ffile-readable-p
Return t if file FILENAME exists and you can read it.
See also `file-exists-p' and `file-attributes'.

(fn FILENAME)Ffile-writable-p
Return t if file FILENAME can be written or created by you.

(fn FILENAME)Faccess-file
Access file FILENAME, and get an error if that does not work.
The second argument STRING is prepended to the error message.
If there is no error, returns nil.

(fn FILENAME STRING)Ffile-symlink-p
Return non-nil if file FILENAME is the name of a symbolic link.
The value is the link target, as a string.
Return nil if FILENAME does not exist or is not a symbolic link,
of there was trouble determining whether the file is a symbolic link.

This function does not check whether the link target exists.

(fn FILENAME)Ffile-directory-p
Return t if FILENAME names an existing directory.
Return nil if FILENAME does not name a directory, or if there
was trouble determining whether FILENAME is a directory.

As a special case, this function will also return t if FILENAME is the
empty string ("").  This quirk is due to Emacs interpreting the
empty string (in some cases) as the current directory.

Symbolic links to directories count as directories.
See `file-symlink-p' to distinguish symlinks.

(fn FILENAME)Ffile-accessible-directory-p
Return t if FILENAME names a directory you can open.
This means that FILENAME must specify the name of a directory, and the
directory must allow you to open files in it.  If this isn't the case,
return nil.

FILENAME can either be a directory name (eg. "/tmp/foo/") or the
file name of a file which is a directory (eg. "/tmp/foo", without
the final slash).

In order to use a directory as a buffer's current directory, this
predicate must return true.

(fn FILENAME)Ffile-regular-p
Return t if FILENAME names a regular file.
This is the sort of file that holds an ordinary stream of data bytes.
Return nil if FILENAME does not exist or is not a regular file,
or there was trouble determining whether FILENAME is a regular file.
Symbolic links to regular files count as regular files.
See `file-symlink-p' to distinguish symlinks.

(fn FILENAME)Ffile-selinux-context
Return SELinux context of file named FILENAME.
The return value is a list (USER ROLE TYPE RANGE), where the list
elements are strings naming the user, role, type, and range of the
file's SELinux security context.

Return (nil nil nil nil) if the file is nonexistent,
or if SELinux is disabled, or if Emacs lacks SELinux support.

(fn FILENAME)Fset-file-selinux-context
Set SELinux context of file named FILENAME to CONTEXT.
CONTEXT should be a list (USER ROLE TYPE RANGE), where the list
elements are strings naming the components of a SELinux context.

Value is t if setting of SELinux context was successful, nil otherwise.

This function does nothing and returns nil if SELinux is disabled,
or if Emacs was not compiled with SELinux support.

(fn FILENAME CONTEXT)Ffile-acl
Return ACL entries of file named FILENAME.
The entries are returned in a format suitable for use in `set-file-acl'
but is otherwise undocumented and subject to change.
Return nil if file does not exist.

(fn FILENAME)Fset-file-acl
Set ACL of file named FILENAME to ACL-STRING.
ACL-STRING should contain the textual representation of the ACL
entries in a format suitable for the platform.

Value is t if setting of ACL was successful, nil otherwise.

Setting ACL for local files requires Emacs to be built with ACL
support.

(fn FILENAME ACL-STRING)Ffile-modes
Return mode bits of file named FILENAME, as an integer.
Return nil if FILENAME does not exist.  If optional FLAG is `nofollow',
do not follow FILENAME if it is a symbolic link.

(fn FILENAME &optional FLAG)Fset-file-modes
Set mode bits of file named FILENAME to MODE (an integer).
Only the 12 low bits of MODE are used.  If optional FLAG is `nofollow',
do not follow FILENAME if it is a symbolic link.

Interactively, prompt for FILENAME, and read MODE with
`read-file-modes', which accepts symbolic notation, like the `chmod'
command from GNU Coreutils.

(fn FILENAME MODE &optional FLAG)Fset-default-file-modes
Set the file permission bits for newly created files.
The argument MODE should be an integer; only the low 9 bits are used.
On Posix hosts, this setting is inherited by subprocesses.

This function works by setting the Emacs's file mode creation mask.
Each bit that is set in the mask means that the corresponding bit
in the permissions of newly created files will be disabled.

Note that when `write-region' creates a file, it resets the
execute bit, even if the mask set by this function allows that bit
by having the corresponding bit in the mask reset.

See also `with-file-modes'.

(fn MODE)Fdefault-file-modes
Return the default file protection for created files.
The value is an integer.

(fn)Fset-file-times
Set times of file FILENAME to TIMESTAMP.
If optional FLAG is `nofollow', do not follow FILENAME if it is a
symbolic link.  Set both access and modification times.  Return t on
success, else nil.  Use the current time if TIMESTAMP is nil.
TIMESTAMP is in the format of `current-time'.

(fn FILENAME &optional TIMESTAMP FLAG)Funix-sync
Tell Unix to finish all pending disk updates.

(fn)Ffile-newer-than-file-p
Return t if file FILE1 is newer than file FILE2.
If FILE1 does not exist, the return value is nil;
if FILE2 does not exist, the return value is t.
For existing files, this compares their last-modified times.

(fn FILE1 FILE2)Finsert-file-contents
Insert contents of file FILENAME after point.
Returns list of absolute file name and number of characters inserted.
If second argument VISIT is non-nil, the buffer's visited filename and
last save file modtime are set, and it is marked unmodified.  If
visiting and the file does not exist, visiting is completed before the
error is signaled.

The optional third and fourth arguments BEG and END specify what portion
of the file to insert.  These arguments count bytes in the file, not
characters in the buffer.  If VISIT is non-nil, BEG and END must be nil.

When inserting data from a special file (e.g., /dev/urandom), you
can't specify VISIT or BEG, and END should be specified to avoid
inserting unlimited data into the buffer from some special files
which otherwise could supply infinite amounts of data.

If optional fifth argument REPLACE is non-nil and FILENAME names a
regular file, replace the current buffer contents (in the accessible
portion) with the file's contents.  This is better than simply
deleting and inserting the whole thing because (1) it preserves some
marker positions (in unchanged portions at the start and end of the
buffer) and (2) it puts less data in the undo list.  When REPLACE is
non-nil, the second element of the return value is the number of
characters that replace the previous buffer contents.

If FILENAME is not a regular file and REPLACE is `if-regular', erase
the accessible portion of the buffer and insert the new contents.  Any
other non-nil value of REPLACE will signal an error if FILENAME is not
a regular file.

This function does code conversion according to the value of
`coding-system-for-read' or `file-coding-system-alist', and sets the
variable `last-coding-system-used' to the coding system actually used.

In addition, this function decodes the inserted text from known formats
by calling `format-decode', which see.

(fn FILENAME &optional VISIT BEG END REPLACE)Fwrite-region
Write current region into specified file.
When called from a program, requires three arguments:
START, END and FILENAME.  START and END are normally buffer positions
specifying the part of the buffer to write.
If START is nil, that means to use the entire buffer contents; END is
ignored.
If START is a string, then output that string to the file
instead of any buffer contents; END is ignored.

Optional fourth argument APPEND if non-nil means
  append to existing file contents (if any).  If it is a number,
  seek to that offset in the file before writing.
Optional fifth argument VISIT, if t or a string, means
  set the last-save-file-modtime of buffer to this file's modtime
  and mark buffer not modified.
If VISIT is t, the buffer is marked as visiting FILENAME.
If VISIT is a string, it is a second file name;
  the output goes to FILENAME, but the buffer is marked as visiting VISIT.
  VISIT is also the file name to lock and unlock for clash detection.
If VISIT is neither t nor nil nor a string, or if Emacs is in batch mode,
  do not display the "Wrote file" message.
The optional sixth arg LOCKNAME, if non-nil, specifies the name to
  use for locking and unlocking, overriding FILENAME and VISIT.
The optional seventh arg MUSTBENEW, if non-nil, insists on a check
  for an existing file with the same name.  If MUSTBENEW is `excl',
  that means to get an error if the file already exists; never overwrite.
  If MUSTBENEW is neither nil nor `excl', that means ask for
  confirmation before overwriting, but do go ahead and overwrite the file
  if the user confirms.

This does code conversion according to the value of
`coding-system-for-write', `buffer-file-coding-system', or
`file-coding-system-alist', and sets the variable
`last-coding-system-used' to the coding system actually used.

This calls `write-region-annotate-functions' at the start, and
`write-region-post-annotation-function' at the end.

(fn START END FILENAME &optional APPEND VISIT LOCKNAME MUSTBENEW)Fcar-less-than-car
Return t if (car A) is numerically less than (car B).

(fn A B)Fverify-visited-file-modtime
Return t if last mod time of BUF's visited file matches what BUF records.
This means that the file has not been changed since it was visited or saved.
If BUF is omitted or nil, it defaults to the current buffer.
See Info node `(elisp)Modification Time' for more details.

(fn &optional BUF)Fvisited-file-modtime
Return the current buffer's recorded visited file modification time.
Return a Lisp timestamp (as in `current-time') if the current buffer
has a recorded file modification time, 0 if it doesn't, and -1 if the
visited file doesn't exist.
See Info node `(elisp)Modification Time' for more details.

(fn)Fset-visited-file-modtime
Update buffer's recorded modification time from the visited file's time.
Useful if the buffer was not read from the file normally
or if the file itself has been changed for some known benign reason.
An argument specifies the modification time value to use
(instead of that of the visited file), in the form of a time value as
in `current-time' or an integer flag as returned by `visited-file-modtime'.

(fn &optional TIME-FLAG)Fdo-auto-save
Auto-save all buffers that need it.
This auto-saves all buffers that have auto-saving enabled and
were changed since last auto-saved.

Auto-saving writes the buffer into a file so that your edits are
not lost if the system crashes.

The auto-save file is not the file you visited; that changes only
when you save.

Normally, run the normal hook `auto-save-hook' before saving.

A non-nil NO-MESSAGE argument means do not print any message if successful.

A non-nil CURRENT-ONLY argument means save only current buffer.

(fn &optional NO-MESSAGE CURRENT-ONLY)Fset-buffer-auto-saved
Mark current buffer as auto-saved with its current text.
No auto-save file will be written until the buffer changes again.

(fn)Fclear-buffer-auto-save-failure
Clear any record of a recent auto-save failure in the current buffer.

(fn)Frecent-auto-save-p
Return t if current buffer has been auto-saved recently.
More precisely, if it has been auto-saved since last read from or saved
in the visited file.  If the buffer has no visited file,
then any auto-save counts as "recent".

(fn)Fnext-read-file-uses-dialog-p
Return t if a call to `read-file-name' will use a dialog.
The return value is only relevant for a call to `read-file-name' that happens
before any other event (mouse or keypress) is handled.

(fn)Fset-binary-mode
Switch STREAM to binary I/O mode or text I/O mode.
STREAM can be one of the symbols `stdin', `stdout', or `stderr'.
If MODE is non-nil, switch STREAM to binary mode, otherwise switch
it to text mode.

As a side effect, this function flushes any pending STREAM's data.

Value is the previous value of STREAM's I/O mode, nil for text mode,
non-nil for binary mode.

On MS-Windows and MS-DOS, binary mode is needed to read or write
arbitrary binary data, and for disabling translation between CR-LF
pairs and a single newline character.  Examples include generation
of text files with Unix-style end-of-line format using `princ' in
batch mode, with standard output redirected to a file.

On Posix systems, this function always returns non-nil, and has no
effect except for flushing STREAM's data.

(fn STREAM MODE)Ffile-system-info
Return storage information about the file system FILENAME is on.
Value is a list of numbers (TOTAL FREE AVAIL), where TOTAL is the total
storage of the file system, FREE is the free storage, and AVAIL is the
storage available to a non-superuser.  All 3 numbers are in bytes.
If the underlying system call fails, value is nil.

(fn FILENAME)Vfile-name-coding-system
Coding system for encoding file names.
If it is nil, `default-file-name-coding-system' (which see) is used.

On MS-Windows, the value of this variable is largely ignored if
`w32-unicode-filenames' (which see) is non-nil.  Emacs on Windows
behaves as if file names were encoded in `utf-8'.Vdefault-file-name-coding-system
Default coding system for encoding file names.
This variable is used only when `file-name-coding-system' is nil.

This variable is set/changed by the command `set-language-environment'.
User should not set this variable manually,
instead use `file-name-coding-system' to get a constant encoding
of file names regardless of the current language environment.

On MS-Windows, the value of this variable is largely ignored if
`w32-unicode-filenames' (which see) is non-nil.  Emacs on Windows
behaves as if file names were encoded in `utf-8'.Vfile-name-handler-alist
Alist of elements (REGEXP . HANDLER) for file names handled specially.
If a file name matches REGEXP, all I/O on that file is done by calling
HANDLER.  If a file name matches more than one handler, the handler
whose match starts last in the file name gets precedence.  The
function `find-file-name-handler' checks this list for a handler for
its argument.

HANDLER should be a function.  The first argument given to it is the
name of the I/O primitive to be handled; the remaining arguments are
the arguments that were passed to that primitive.  For example, if you
do (file-exists-p FILENAME) and FILENAME is handled by HANDLER, then
HANDLER is called like this:

  (funcall HANDLER \='file-exists-p FILENAME)

Note that HANDLER must be able to handle all I/O primitives; if it has
nothing special to do for a primitive, it should reinvoke the
primitive to handle the operation "the usual way".
See Info node `(elisp)Magic File Names' for more details.Vset-auto-coding-function
If non-nil, a function to call to decide a coding system of file.
Two arguments are passed to this function: the file name
and the length of a file contents following the point.
This function should return a coding system to decode the file contents.
It should check the file name against `auto-coding-alist'.
If no coding system is decided, it should check a coding system
specified in the heading lines with the format:
	-*- ... coding: CODING-SYSTEM; ... -*-
or local variable spec of the tailing lines with `coding:' tag.Vafter-insert-file-functions
A list of functions to be called at the end of `insert-file-contents'.
Each is passed one argument, the number of characters inserted,
with point at the start of the inserted text.  Each function
should leave point the same, and return the new character count.
If `insert-file-contents' is intercepted by a handler from
`file-name-handler-alist', that handler is responsible for calling the
functions in `after-insert-file-functions' if appropriate.Vwrite-region-annotate-functions
A list of functions to be called at the start of `write-region'.
Each is passed two arguments, START and END as for `write-region'.
These are usually two numbers but not always; see the documentation
for `write-region'.  The function should return a list of pairs
of the form (POSITION . STRING), consisting of strings to be effectively
inserted at the specified positions of the file being written (1 means to
insert before the first byte written).  The POSITIONs must be sorted into
increasing order.

If there are several annotation functions, the lists returned by these
functions are merged destructively.  As each annotation function runs,
the variable `write-region-annotations-so-far' contains a list of all
annotations returned by previous annotation functions.

An annotation function can return with a different buffer current.
Doing so removes the annotations returned by previous functions, and
resets START and END to `point-min' and `point-max' of the new buffer.

After `write-region' completes, Emacs calls the function stored in
`write-region-post-annotation-function', once for each buffer that was
current when building the annotations (i.e., at least once), with that
buffer current.Vwrite-region-post-annotation-function
Function to call after `write-region' completes.
The function is called with no arguments.  If one or more of the
annotation functions in `write-region-annotate-functions' changed the
current buffer, the function stored in this variable is called for
each of those additional buffers as well, in addition to the original
buffer.  The relevant buffer is current during each function call.Vwrite-region-annotations-so-far
When an annotation function is called, this holds the previous annotations.
These are the annotations made by other annotation functions
that were already called.  See also `write-region-annotate-functions'.Vinhibit-file-name-handlers
A list of file name handlers that temporarily should not be used.
This applies only to the operation `inhibit-file-name-operation'.Vinhibit-file-name-operation
The operation for which `inhibit-file-name-handlers' is applicable.Vauto-save-list-file-name
File name in which to write a list of all auto save file names.
This variable is initialized automatically from `auto-save-list-file-prefix'
shortly after Emacs reads your init file, if you have not yet given it
a non-nil value.Vauto-save-visited-file-name
Non-nil says auto-save a buffer in the file it is visiting, when practical.
Normally auto-save files are written under other names.Vauto-save-include-big-deletions
If non-nil, auto-save even if a large part of the text is deleted.
If nil, deleting a substantial portion of the text disables auto-save
in the buffer; this is the default behavior, because the auto-save
file is usually more useful if it contains the deleted text.Vwrite-region-inhibit-fsync
Non-nil means don't call fsync in `write-region'.
This variable affects calls to `write-region' as well as save commands.
By default, it is non-nil.

Although setting this to nil may avoid data loss if the system loses power,
it can be a significant performance hit in the usual case, and it doesn't
necessarily cause file-save operations to actually survive a crash.Vdelete-by-moving-to-trash
Specifies whether to use the system's trash can.
When non-nil, certain file deletion commands use the function
`move-file-to-trash' instead of deleting files outright.
This includes interactive calls to `delete-file' and
`delete-directory' and the Dired deletion commands.Sdired.o
Fdirectory-files
Return a list of names of files in DIRECTORY.
There are four optional arguments:
If FULL is non-nil, return absolute file names.  Otherwise return names
 that are relative to the specified directory.
If MATCH is non-nil, mention only file names whose non-directory part
 matches the regexp MATCH.
If NOSORT is non-nil, the list is not sorted--its order is unpredictable.
 Otherwise, the list returned is sorted with `string-lessp'.
 NOSORT is useful if you plan to sort the result yourself.
If COUNT is non-nil and a natural number, the function will return
 COUNT number of file names (if so many are present).

(fn DIRECTORY &optional FULL MATCH NOSORT COUNT)Fdirectory-files-and-attributes
Return a list of names of files and their attributes in DIRECTORY.
Value is a list of the form:

  ((FILE1 . FILE1-ATTRS) (FILE2 . FILE2-ATTRS) ...)

where each FILEn-ATTRS is the attributes of FILEn as returned
by `file-attributes'.

This function accepts five optional arguments:
If FULL is non-nil, return absolute file names.  Otherwise return names
 that are relative to the specified directory.
If MATCH is non-nil, mention only file names whose non-directory part
 matches the regexp MATCH.
If NOSORT is non-nil, the list is not sorted--its order is unpredictable.
 NOSORT is useful if you plan to sort the result yourself.
ID-FORMAT specifies the preferred format of attributes uid and gid, see
 `file-attributes' for further documentation.
If COUNT is non-nil and a natural number, the function will return
 COUNT number of file names (if so many are present).
On MS-Windows, performance depends on `w32-get-true-file-attributes',
which see.

(fn DIRECTORY &optional FULL MATCH NOSORT ID-FORMAT COUNT)Ffile-name-completion
Complete file name FILE in directory DIRECTORY.
Returns the longest string
common to all file names in DIRECTORY that start with FILE.
If there is only one and FILE matches it exactly, returns t.
Returns nil if DIRECTORY contains no name starting with FILE.

If PREDICATE is non-nil, call PREDICATE with each possible
completion (in absolute form) and ignore it if PREDICATE returns nil.

This function ignores some of the possible completions as determined
by the variables `completion-regexp-list' and
`completion-ignored-extensions', which see.  `completion-regexp-list'
is matched against file and directory names relative to DIRECTORY.

(fn FILE DIRECTORY &optional PREDICATE)Ffile-name-all-completions
Return a list of all completions of file name FILE in directory DIRECTORY.
These are all file names in directory DIRECTORY which begin with FILE.

This function ignores some of the possible completions as determined
by `completion-regexp-list', which see.  `completion-regexp-list'
is matched against file and directory names relative to DIRECTORY.

(fn FILE DIRECTORY)Ffile-attributes
Return a list of attributes of file FILENAME.
Value is nil if specified file does not exist.

ID-FORMAT specifies the preferred format of attributes uid and gid (see
below) - valid values are `string' and `integer'.  The latter is the
default, but we plan to change that, so you should specify a non-nil value
for ID-FORMAT if you use the returned uid or gid.

To access the elements returned, the following access functions are
provided: `file-attribute-type', `file-attribute-link-number',
`file-attribute-user-id', `file-attribute-group-id',
`file-attribute-access-time', `file-attribute-modification-time',
`file-attribute-status-change-time', `file-attribute-size',
`file-attribute-modes', `file-attribute-inode-number', and
`file-attribute-device-number'.

Elements of the attribute list are:
 0. t for directory, string (name linked to) for symbolic link, or nil.
 1. Number of links to file.
 2. File uid as a string or (if ID-FORMAT is `integer' or a string value
  cannot be looked up) as an integer.
 3. File gid, likewise.
 4. Last access time, in the style of `current-time'.
  (See a note below about access time on FAT-based filesystems.)
 5. Last modification time, likewise.  This is the time of the last
  change to the file's contents.
 6. Last status change time, likewise.  This is the time of last change
  to the file's attributes: owner and group, access mode bits, etc.
 7. Size in bytes, as an integer.
 8. File modes, as a string of ten letters or dashes as in ls -l.
 9. An unspecified value, present only for backward compatibility.
10. inode number, as a nonnegative integer.
11. Filesystem device identifier, as an integer or a cons cell of integers.

Large integers are bignums, so `eq' might not work on them.
On most filesystems, the combination of the inode and the device
identifier uniquely identifies the file.  This unique file identification
is provided by the access function `file-attribute-file-identifier'.

On MS-Windows, performance depends on `w32-get-true-file-attributes',
which see.

On some FAT-based filesystems, only the date of last access is recorded,
so last access time will always be midnight of that day.

(fn FILENAME &optional ID-FORMAT)Ffile-attributes-lessp
Return t if first arg file attributes list is less than second.
Comparison is in lexicographic order and case is significant.

(fn F1 F2)Fsystem-users
Return a list of user names currently registered in the system.
If we don't know how to determine that on this platform, just
return a list with one element, taken from `user-real-login-name'.

(fn)Fsystem-groups
Return a list of user group names currently registered in the system.
The value may be nil if not supported on this platform.

(fn)Vcompletion-ignored-extensions
Completion ignores file names ending in any string in this list.
It does not ignore them if all possible completions end in one of
these strings or when displaying a list of completions.
It ignores directory names if they match any string in this list which
ends in a slash.Scmds.o
Fforward-char
Move point N characters forward (backward if N is negative).
On reaching end or beginning of buffer, stop and signal error.
Interactively, N is the numeric prefix argument.
If N is omitted or nil, move point 1 character forward.

Depending on the bidirectional context, the movement may be to the
right or to the left on the screen.  This is in contrast with
\[right-char], which see.

(fn &optional N)Fbackward-char
Move point N characters backward (forward if N is negative).
On attempt to pass beginning or end of buffer, stop and signal error.
Interactively, N is the numeric prefix argument.
If N is omitted or nil, move point 1 character backward.

Depending on the bidirectional context, the movement may be to the
right or to the left on the screen.  This is in contrast with
\[left-char], which see.

(fn &optional N)Fforward-line
Move N lines forward (backward if N is negative).
Precisely, if point is on line I, move to the start of line I + N
("start of line" in the logical order).
If there isn't room, go as far as possible (no error).
Interactively, N is the numeric prefix argument and defaults to 1.

Returns the count of lines left to move.  If moving forward,
that is N minus number of lines moved; if backward, N plus number
moved.

Exception: With positive N, a non-empty line at the end of the
buffer, or of its accessible portion, counts as one line
successfully moved (for the return value).  This means that the
function will move point to the end of such a line and will count
it as a line moved across, even though there is no next line to
go to its beginning.

(fn &optional N)Fbeginning-of-line
Move point to beginning of current line (in the logical order).
With argument N not nil or 1, move forward N - 1 lines first.
If point reaches the beginning or end of buffer, it stops there.

This function constrains point to the current field unless this moves
point to a different line from the original, unconstrained result.
If N is nil or 1, and a front-sticky field starts at point, the point
does not move.  To ignore field boundaries bind
`inhibit-field-text-motion' to t, or use the `forward-line' function
instead.  For instance, `(forward-line 0)' does the same thing as
`(beginning-of-line)', except that it ignores field boundaries.

(fn &optional N)Fend-of-line
Move point to end of current line (in the logical order).
With argument N not nil or 1, move forward N - 1 lines first.
If point reaches the beginning or end of buffer, it stops there.
To ignore intangibility, bind `inhibit-point-motion-hooks' to t.

This function constrains point to the current field unless this moves
point to a different line from the original, unconstrained result.  If
N is nil or 1, and a rear-sticky field ends at point, the point does
not move.  To ignore field boundaries bind `inhibit-field-text-motion'
to t.

(fn &optional N)Fdelete-char
Delete the following N characters (previous if N is negative).
Optional second arg KILLFLAG non-nil means kill instead (save in kill ring).
Interactively, N is the prefix arg, and KILLFLAG is set if
N was explicitly specified.

The command `delete-forward-char' is preferable for interactive use, e.g.
because it respects values of `delete-active-region' and `overwrite-mode'.

(fn N &optional KILLFLAG)Fself-insert-command
Insert the character you type.
Whichever character C you type to run this command is inserted.
The numeric prefix argument N says how many times to repeat the insertion.
Before insertion, `expand-abbrev' is executed if the inserted character does
not have word syntax and the previous character in the buffer does.
After insertion, `internal-auto-fill' is called if
`auto-fill-function' is non-nil and if the `auto-fill-chars' table has
a non-nil value for the inserted character.  At the end, it runs
`post-self-insert-hook'.

(fn N &optional C)Vpost-self-insert-hook
Hook run at the end of `self-insert-command'.
This is run after inserting a character.
The hook can access the inserted character via `last-command-event'.Scasetab.o
Fcase-table-p
Return t if OBJECT is a case table.
See `set-case-table' for more information on these data structures.

(fn OBJECT)Fcurrent-case-table
Return the case table of the current buffer.

(fn)Fstandard-case-table
Return the standard case table.
This is the one used for new buffers.

(fn)Fset-case-table
Select a new case table for the current buffer.
A case table is a char-table which maps characters
to their lower-case equivalents.  It also has three "extra" slots
which may be additional char-tables or nil.
These slots are called UPCASE, CANONICALIZE and EQUIVALENCES.
UPCASE maps each non-upper-case character to its upper-case equivalent.
 (The value in UPCASE for an upper-case character is never used.)
 If lower and upper case characters are in 1-1 correspondence,
 you may use nil and the upcase table will be deduced from DOWNCASE.
CANONICALIZE maps each character to a canonical equivalent;
 any two characters that are related by case-conversion have the same
 canonical equivalent character; it may be nil, in which case it is
 deduced from DOWNCASE and UPCASE.
EQUIVALENCES is a map that cyclically permutes each equivalence class
 (of characters with the same canonical equivalent); it may be nil,
 in which case it is deduced from CANONICALIZE.

(fn TABLE)Fset-standard-case-table
Select a new standard case table for new buffers.
See `set-case-table' for more info on case tables.

(fn TABLE)Scasefiddle.o
Fupcase
Convert argument to upper case and return that.
The argument may be a character or string.  The result has the same
type.  (See `downcase' for further details about the type.)

The argument object is not altered--the value is a copy.  If argument
is a character, characters which map to multiple code points when
cased, e.g. ﬁ, are returned unchanged.

See also `capitalize', `downcase' and `upcase-initials'.

(fn OBJ)Fdowncase
Convert argument to lower case and return that.
The argument may be a character or string.  The result has the same type,
including the multibyteness of the string.

This means that if this function is called with a unibyte string
argument, and downcasing it would turn it into a multibyte string
(according to the current locale), the downcasing is done using ASCII
"C" rules instead.  To accurately downcase according to the current
locale, the string must be converted into multibyte first.

The argument object is not altered--the value is a copy.

(fn OBJ)Fcapitalize
Convert argument to capitalized form and return that.
This means that each word's first character is converted to either
title case or upper case, and the rest to lower case.

The argument may be a character or string.  The result has the same
type.  (See `downcase' for further details about the type.)

The argument object is not altered--the value is a copy.  If argument
is a character, characters which map to multiple code points when
cased, e.g. ﬁ, are returned unchanged.

(fn OBJ)Fupcase-initials
Convert the initial of each word in the argument to upper case.
This means that each word's first character is converted to either
title case or upper case, and the rest are left unchanged.

The argument may be a character or string.  The result has the same
type.  (See `downcase' for further details about the type.)

The argument object is not altered--the value is a copy.  If argument
is a character, characters which map to multiple code points when
cased, e.g. ﬁ, are returned unchanged.

(fn OBJ)Fupcase-region
Convert the region to upper case.  In programs, wants two arguments.
These arguments specify the starting and ending character numbers of
the region to operate on.  When used as a command, the text between
point and the mark is operated on.
See also `capitalize-region'.

(fn BEG END &optional REGION-NONCONTIGUOUS-P)Fdowncase-region
Convert the region to lower case.  In programs, wants two arguments.
These arguments specify the starting and ending character numbers of
the region to operate on.  When used as a command, the text between
point and the mark is operated on.

(fn BEG END &optional REGION-NONCONTIGUOUS-P)Fcapitalize-region
Convert the region to capitalized form.
This means that each word's first character is converted to either
title case or upper case, and the rest to lower case.
In programs, give two arguments, the starting and ending
character positions to operate on.

(fn BEG END &optional REGION-NONCONTIGUOUS-P)Fupcase-initials-region
Upcase the initial of each word in the region.
This means that each word's first character is converted to either
title case or upper case, and the rest are left unchanged.
In programs, give two arguments, the starting and ending
character positions to operate on.

(fn BEG END &optional REGION-NONCONTIGUOUS-P)Fupcase-word
Convert to upper case from point to end of word, moving over.

If point is in the middle of a word, the part of that word before point
is ignored when moving forward.

With negative argument, convert previous words but do not move.
See also `capitalize-word'.

(fn ARG)Fdowncase-word
Convert to lower case from point to end of word, moving over.

If point is in the middle of a word, the part of that word before point
is ignored when moving forward.

With negative argument, convert previous words but do not move.

(fn ARG)Fcapitalize-word
Capitalize from point to the end of word, moving over.
With numerical argument ARG, capitalize the next ARG-1 words as well.
This gives the word(s) a first character in upper case
and the rest lower case.

If point is in the middle of a word, the part of that word before point
is ignored when moving forward.

With negative argument, capitalize previous words but do not move.

(fn ARG)Vregion-extract-function
Function to get the region's content.
Called with one argument METHOD which can be:
- nil: return the content as a string (list of strings for
  non-contiguous regions).
- `delete-only': delete the region; the return value is undefined.
- `bounds': return the boundaries of the region as a list of one
  or more cons cells of the form (START . END).
- anything else: delete the region and return its content
  as a string (or list of strings for non-contiguous regions),
  after filtering it with `filter-buffer-substring', which
  is called, for each contiguous sub-region, with METHOD as its
  3rd argument.Vcase-symbols-as-words
If non-nil, case functions treat symbol syntax as part of words.

Functions such as `upcase-initials' and `replace-match' check or modify
the case pattern of sequences of characters.  Normally, these operate on
sequences of characters whose syntax is word constituent.  If this
variable is non-nil, then they operate on sequences of characters whose
syntax is either word constituent or symbol constituent.

This is useful for programming languages and styles where only the first
letter of a symbol's name is ever capitalized.Sindent.o
Fcurrent-column
Return the horizontal position of point.  Beginning of line is column 0.
This is calculated by adding together the widths of all the displayed
representations of the character between the start of the previous line
and point (e.g., control characters will have a width of 2 or 4, tabs
will have a variable width).
Ignores finite width of frame, which means that this function may return
values greater than (frame-width).
In a buffer with very long lines, the value will be an approximation,
because calculating the exact number is very expensive.
Whether the line is visible (if `selective-display' is t) has no effect;
however, ^M is treated as end of line when `selective-display' is t.
Text that has an invisible property is considered as having width 0, unless
`buffer-invisibility-spec' specifies that it is replaced by an ellipsis.

(fn)Findent-to
Indent from point with tabs and spaces until COLUMN is reached.
Optional second argument MINIMUM says always do at least MINIMUM spaces
even if that goes past COLUMN; by default, MINIMUM is zero.

Whether this uses tabs or spaces depends on `indent-tabs-mode'.

The return value is the column where the insertion ends.

(fn COLUMN &optional MINIMUM)Fcurrent-indentation
Return the indentation of the current line.
This is the horizontal position of the character following any initial
whitespace.
Text that has an invisible property is considered as having width 0, unless
`buffer-invisibility-spec' specifies that it is replaced by an ellipsis.

(fn)Fmove-to-column
Move point to column COLUMN in the current line.
Interactively, COLUMN is the value of prefix numeric argument.
The column of a character is calculated by adding together the widths
as displayed of the previous characters in the line.
This function ignores line-continuation;
there is no upper limit on the column number a character can have
and horizontal scrolling has no effect.
Text that has an invisible property is considered as having width 0,
unless `buffer-invisibility-spec' specifies that it is replaced by
an ellipsis.

If specified column is within a character, point goes after that character.
If it's past end of line, point goes to end of line.

Optional second argument FORCE non-nil means if COLUMN is in the
middle of a tab character, either change it to spaces (when
`indent-tabs-mode' is nil), or insert enough spaces before it to reach
COLUMN (otherwise).  In addition, if FORCE is t, and the line is too short
to reach COLUMN, add spaces/tabs to get there.

The return value is the current column.

(fn COLUMN &optional FORCE)Fcompute-motion
Scan through the current buffer, calculating screen position.
Scan the current buffer forward from offset FROM,
assuming it is at position FROMPOS--a cons of the form (HPOS . VPOS)--
to position TO or position TOPOS--another cons of the form (HPOS . VPOS)--
and return the ending buffer position and screen location.

If TOPOS is nil, the actual width and height of the window's
text area are used.

There are three additional arguments:

WIDTH is the number of columns available to display text;
this affects handling of continuation lines.  A value of nil
corresponds to the actual number of available text columns.

OFFSETS is either nil or a cons cell (HSCROLL . TAB-OFFSET).
HSCROLL is the number of columns not being displayed at the left
margin; this is usually taken from a window's hscroll member.
TAB-OFFSET is the number of columns of the first tab that aren't
being displayed, perhaps because the line was continued within it.
If OFFSETS is nil, HSCROLL and TAB-OFFSET are assumed to be zero.

WINDOW is the window to operate on.  It is used to choose the display table;
if it is showing the current buffer, it is used also for
deciding which overlay properties apply.
Note that `compute-motion' always operates on the current buffer.

The value is a list of five elements:
  (POS HPOS VPOS PREVHPOS CONTIN)
POS is the buffer position where the scan stopped.
VPOS is the vertical position where the scan stopped.
HPOS is the horizontal position where the scan stopped.

PREVHPOS is the horizontal position one character back from POS.
CONTIN is t if a line was continued after (or within) the previous character.

For example, to find the buffer position of column COL of line LINE
of a certain window, pass the window's starting location as FROM
and the window's upper-left coordinates as FROMPOS.
Pass the buffer's (point-max) as TO, to limit the scan to the end of the
visible section of the buffer, and pass LINE and COL as TOPOS.

(fn FROM FROMPOS TO TOPOS WIDTH OFFSETS WINDOW)Fline-number-display-width
Return the width used for displaying line numbers in the selected window.
If optional argument PIXELWISE is the symbol `columns', return the width
in units of the frame's canonical character width.  In this case, the
value is a float.
If optional argument PIXELWISE is t or any other non-nil value, return
the width as an integer number of pixels.
Otherwise return the value as an integer number of columns of the face
used to display line numbers, `line-number'.  Note that in the latter
case, the value doesn't include the 2 columns used for padding the
numbers on display.

(fn &optional PIXELWISE)Fvertical-motion
Move point to start of the screen line LINES lines down.
If LINES is negative, this means moving up.

This function is an ordinary cursor motion function
which calculates the new position based on how text would be displayed.
The new position may be the start of a line,
or the start of a continuation line,
or the start of the visible portion of a horizontally-scrolled line.

The function returns number of screen lines moved over;
that usually equals LINES, but may be closer to zero if
beginning or end of buffer was reached.

The optional second argument WINDOW specifies the window to use for
parameters such as width, horizontal scrolling, and so on.
The default is to use the selected window's parameters.

If LINES is zero, point will move to the first visible character on
the current screen line.

LINES can optionally take the form (COLS . LINES), in which case the
motion will stop at the COLSth column from the visual start of the
line (if such column exists on that line, that is).  If the line is
scrolled horizontally, COLS is interpreted visually, i.e., as addition
to the columns of text beyond the left edge of the window.
If LINES is a cons cell, its car COLS can be a float, which allows
specifying an accurate position of point on a screen line that mixes
fonts or uses variable-pitch font: COLS is interpreted in units of the
canonical character width, and is internally converted to pixel units;
point will then stop at the position closest to that pixel coordinate.
The cdr of the cons, LINES, must be an integer; if it is zero, this
function moves point horizontally in the current screen line, to the
position specified by COLS.

The optional third argument CUR-COL specifies the horizontal
window-relative coordinate of point, in units of frame's canonical
character width, where the function is invoked.  If this argument is
omitted or nil, the function will determine the point coordinate by
going back to the beginning of the line.

`vertical-motion' always uses the current buffer, regardless of which
buffer is displayed in WINDOW.  This is consistent with other cursor
motion functions and makes it possible to use `vertical-motion' in any
buffer, whether or not it is currently displayed in some window.

(fn LINES &optional WINDOW CUR-COL)Vindent-tabs-mode
Indentation can insert tabs if this is non-nil.Ssearch.o
Flooking-at
Return t if text after point matches regular expression REGEXP.
By default, this function modifies the match data that
`match-beginning', `match-end' and `match-data' access.  If
INHIBIT-MODIFY is non-nil, don't modify the match data.

(fn REGEXP &optional INHIBIT-MODIFY)Fposix-looking-at
Return t if text after point matches REGEXP according to Posix rules.
Find the longest match, in accordance with Posix regular expression rules.

By default, this function modifies the match data that
`match-beginning', `match-end' and `match-data' access.  If
INHIBIT-MODIFY is non-nil, don't modify the match data.

(fn REGEXP &optional INHIBIT-MODIFY)Fstring-match
Return index of start of first match for REGEXP in STRING, or nil.
Matching ignores case if `case-fold-search' is non-nil.
If third arg START is non-nil, start search at that index in STRING.

If INHIBIT-MODIFY is non-nil, match data is not changed.

If INHIBIT-MODIFY is nil or missing, match data is changed, and
`match-end' and `match-beginning' give indices of substrings matched
by parenthesis constructs in the pattern.  You can use the function
`match-string' to extract the substrings matched by the parenthesis
constructions in REGEXP.  For index of first char beyond the match, do
(match-end 0).

(fn REGEXP STRING &optional START INHIBIT-MODIFY)Fposix-string-match
Return index of start of first match for Posix REGEXP in STRING, or nil.
Find the longest match, in accord with Posix regular expression rules.
Case is ignored if `case-fold-search' is non-nil in the current buffer.

If INHIBIT-MODIFY is non-nil, match data is not changed.

If INHIBIT-MODIFY is nil or missing, match data is changed, and
`match-end' and `match-beginning' give indices of substrings matched
by parenthesis constructs in the pattern.  You can use the function
`match-string' to extract the substrings matched by the parenthesis
constructions in REGEXP.  For index of first char beyond the match, do
(match-end 0).

(fn REGEXP STRING &optional START INHIBIT-MODIFY)Fsearch-backward
Search backward from point for STRING.
Set point to the beginning of the occurrence found, and return point.
An optional second argument bounds the search; it is a buffer position.
  The match found must not begin before that position.  A value of nil
  means search to the beginning of the accessible portion of the buffer.
Optional third argument, if t, means if fail just return nil (no error).
  If not nil and not t, position at limit of search and return nil.
Optional fourth argument COUNT, if a positive number, means to search
  for COUNT successive occurrences.  If COUNT is negative, search
  forward, instead of backward, for -COUNT occurrences.  A value of
  nil means the same as 1.
With COUNT positive, the match found is the COUNTth to last one (or
  last, if COUNT is 1 or nil) in the buffer located entirely before
  the origin of the search; correspondingly with COUNT negative.

Search case-sensitivity is determined by the value of the variable
`case-fold-search', which see.

See also the functions `match-beginning', `match-end' and `replace-match'.

(fn STRING &optional BOUND NOERROR COUNT)Fsearch-forward
Search forward from point for STRING.
Set point to the end of the occurrence found, and return point.
An optional second argument bounds the search; it is a buffer position.
  The match found must not end after that position.  A value of nil
  means search to the end of the accessible portion of the buffer.
Optional third argument, if t, means if fail just return nil (no error).
  If not nil and not t, move to limit of search and return nil.
Optional fourth argument COUNT, if a positive number, means to search
  for COUNT successive occurrences.  If COUNT is negative, search
  backward, instead of forward, for -COUNT occurrences.  A value of
  nil means the same as 1.
With COUNT positive, the match found is the COUNTth one (or first,
  if COUNT is 1 or nil) in the buffer located entirely after the
  origin of the search; correspondingly with COUNT negative.

Search case-sensitivity is determined by the value of the variable
`case-fold-search', which see.

See also the functions `match-beginning', `match-end' and `replace-match'.

(fn STRING &optional BOUND NOERROR COUNT)Fre-search-backward
Search backward from point for regular expression REGEXP.
This function is almost identical to `re-search-forward', except that
by default it searches backward instead of forward, and the sign of
COUNT also indicates exactly the opposite searching direction.
See `re-search-forward' for details.

Note that searching backwards may give a shorter match than expected,
because REGEXP is still matched in the forward direction.  See Info
anchor `(elisp) re-search-backward' for details.

(fn REGEXP &optional BOUND NOERROR COUNT)Fre-search-forward
Search forward from point for regular expression REGEXP.
Set point to the end of the occurrence found, and return point.
The optional second argument BOUND is a buffer position that bounds
  the search.  The match found must not end after that position.  A
  value of nil means search to the end of the accessible portion of
  the buffer.
The optional third argument NOERROR indicates how errors are handled
  when the search fails: if it is nil or omitted, emit an error; if
  it is t, simply return nil and do nothing; if it is neither nil nor
  t, move to the limit of search and return nil.
The optional fourth argument COUNT is a number that indicates the
  search direction and the number of occurrences to search for.  If it
  is positive, search forward for COUNT successive occurrences; if it
  is negative, search backward, instead of forward, for -COUNT
  occurrences.  A value of nil means the same as 1.
With COUNT positive/negative, the match found is the COUNTth/-COUNTth
  one in the buffer located entirely after/before the origin of the
  search.

Search case-sensitivity is determined by the value of the variable
`case-fold-search', which see.

See also the functions `match-beginning', `match-end', `match-string',
and `replace-match'.

(fn REGEXP &optional BOUND NOERROR COUNT)Fposix-search-backward
Search backward from point for match for REGEXP according to Posix rules.
Find the longest match in accord with Posix regular expression rules.
Set point to the beginning of the occurrence found, and return point.
An optional second argument bounds the search; it is a buffer position.
  The match found must not begin before that position.  A value of nil
  means search to the beginning of the accessible portion of the buffer.
Optional third argument, if t, means if fail just return nil (no error).
  If not nil and not t, position at limit of search and return nil.
Optional fourth argument COUNT, if a positive number, means to search
  for COUNT successive occurrences.  If COUNT is negative, search
  forward, instead of backward, for -COUNT occurrences.  A value of
  nil means the same as 1.
With COUNT positive, the match found is the COUNTth to last one (or
  last, if COUNT is 1 or nil) in the buffer located entirely before
  the origin of the search; correspondingly with COUNT negative.

Search case-sensitivity is determined by the value of the variable
`case-fold-search', which see.

See also the functions `match-beginning', `match-end', `match-string',
and `replace-match'.

(fn REGEXP &optional BOUND NOERROR COUNT)Fposix-search-forward
Search forward from point for REGEXP according to Posix rules.
Find the longest match in accord with Posix regular expression rules.
Set point to the end of the occurrence found, and return point.
An optional second argument bounds the search; it is a buffer position.
  The match found must not end after that position.  A value of nil
  means search to the end of the accessible portion of the buffer.
Optional third argument, if t, means if fail just return nil (no error).
  If not nil and not t, move to limit of search and return nil.
Optional fourth argument COUNT, if a positive number, means to search
  for COUNT successive occurrences.  If COUNT is negative, search
  backward, instead of forward, for -COUNT occurrences.  A value of
  nil means the same as 1.
With COUNT positive, the match found is the COUNTth one (or first,
  if COUNT is 1 or nil) in the buffer located entirely after the
  origin of the search; correspondingly with COUNT negative.

Search case-sensitivity is determined by the value of the variable
`case-fold-search', which see.

See also the functions `match-beginning', `match-end', `match-string',
and `replace-match'.

(fn REGEXP &optional BOUND NOERROR COUNT)Freplace-match
Replace text matched by last search with NEWTEXT.
Leave point at the end of the replacement text.

If optional second arg FIXEDCASE is non-nil, do not alter the case of
the replacement text.  Otherwise, maybe capitalize the whole text, or
maybe just word initials, based on the replaced text.  If the replaced
text has only capital letters and has at least one multiletter word,
convert NEWTEXT to all caps.  Otherwise if all words are capitalized
in the replaced text, capitalize each word in NEWTEXT.  Note that
what exactly is a word is determined by the syntax tables in effect
in the current buffer, and the variable `case-symbols-as-words'.

If optional third arg LITERAL is non-nil, insert NEWTEXT literally.
Otherwise treat `\' as special:
  `\&' in NEWTEXT means substitute original matched text.
  `\N' means substitute what matched the Nth `\(...\)'.
       If Nth parens didn't match, substitute nothing.
  `\\' means insert one `\'.
  `\?' is treated literally
       (for compatibility with `query-replace-regexp').
  Any other character following `\' signals an error.
Case conversion does not apply to these substitutions.

If optional fourth argument STRING is non-nil, it should be a string
to act on; this should be the string on which the previous match was
done via `string-match'.  In this case, `replace-match' creates and
returns a new string, made by copying STRING and replacing the part of
STRING that was matched (the original STRING itself is not altered).

The optional fifth argument SUBEXP specifies a subexpression;
it says to replace just that subexpression with NEWTEXT,
rather than replacing the entire matched text.
This is, in a vague sense, the inverse of using `\N' in NEWTEXT;
`\N' copies subexp N into NEWTEXT, but using N as SUBEXP puts
NEWTEXT in place of subexp N.
This is useful only after a regular expression search or match,
since only regular expressions have distinguished subexpressions.

(fn NEWTEXT &optional FIXEDCASE LITERAL STRING SUBEXP)Fmatch-beginning
Return position of start of text matched by last search.
SUBEXP, a number, specifies the parenthesized subexpression in the last
  regexp for which to return the start position.
Value is nil if SUBEXPth subexpression didn't match, or there were fewer
  than SUBEXP subexpressions.
SUBEXP zero means the entire text matched by the whole regexp or whole
  string.

Return value is undefined if the last search failed.

(fn SUBEXP)Fmatch-end
Return position of end of text matched by last search.
SUBEXP, a number, specifies the parenthesized subexpression in the last
  regexp for which to return the start position.
Value is nil if SUBEXPth subexpression didn't match, or there were fewer
  than SUBEXP subexpressions.
SUBEXP zero means the entire text matched by the whole regexp or whole
  string.

Return value is undefined if the last search failed.

(fn SUBEXP)Fmatch-data
Return a list of positions that record text matched by the last search.
Element 2N of the returned list is the position of the beginning of the
match of the Nth subexpression; it corresponds to `(match-beginning N)';
element 2N + 1 is the position of the end of the match of the Nth
subexpression; it corresponds to `(match-end N)'.  See `match-beginning'
and `match-end'.
If the last search was on a buffer, all the elements are by default
markers or nil (nil when the Nth pair didn't match); they are integers
or nil if the search was on a string.  But if the optional argument
INTEGERS is non-nil, the elements that represent buffer positions are
always integers, not markers, and (if the search was on a buffer) the
buffer itself is appended to the list as one additional element.

Use `set-match-data' to reinstate the match data from the elements of
this list.

Note that non-matching optional groups at the end of the regexp are
elided instead of being represented with two `nil's each.  For instance:

  (progn
    (string-match "^\(a\)?\(b\)\(c\)?$" "b")
    (match-data))
  => (0 1 nil nil 0 1)

If REUSE is a list, store the value in REUSE by destructively modifying it.
If REUSE is long enough to hold all the values, its length remains the
same, and any unused elements are set to nil.  If REUSE is not long
enough, it is extended.  Note that if REUSE is long enough and INTEGERS
is non-nil, no consing is done to make the return value; this minimizes GC.

If optional third argument RESEAT is non-nil, any previous markers on the
REUSE list will be modified to point to nowhere.

Return value is undefined if the last search failed.

(fn &optional INTEGERS REUSE RESEAT)Fset-match-data
Set internal data on last search match from elements of LIST.
LIST should have been created by calling `match-data' previously.

If optional arg RESEAT is non-nil, make markers on LIST point nowhere.

(fn LIST &optional RESEAT)Fmatch-data--translate
Add N to all positions in the match data.  Internal.

(fn N)Fregexp-quote
Return a regexp string which matches exactly STRING and nothing else.

(fn STRING)Fnewline-cache-check
Check the newline cache of BUFFER against buffer contents.

BUFFER defaults to the current buffer.

Value is an array of 2 sub-arrays of buffer positions for newlines,
the first based on the cache, the second based on actually scanning
the buffer.  If the buffer doesn't have a cache, the value is nil.

(fn &optional BUFFER)Fre--describe-compiled
Return a string describing the compiled form of REGEXP.
If RAW is non-nil, just return the actual bytecode.

(fn REGEXP &optional RAW)Vsearch-spaces-regexp
Regexp to substitute for bunches of spaces in regexp search.
Some commands use this for user-specified regexps.
Spaces that occur inside character classes or repetition operators
or other such regexp constructs are not replaced with this.
A value of nil (which is the normal value) means treat spaces
literally.  Note that a value with capturing groups can change the
numbering of existing capture groups in unexpected ways.Vinhibit-changing-match-data
Internal use only.
If non-nil, the primitive searching and matching functions
such as `looking-at', `string-match', `re-search-forward', etc.,
do not set the match data.  The proper way to use this variable
is to bind it with `let' around a small expression.Sregex-emacs.o
Sundo.o
Fundo-boundary
Mark a boundary between units of undo.
An undo command will stop at this point,
but another undo command will undo to the previous boundary.

(fn)Vundo-limit
Keep no more undo information once it exceeds this size.
This limit is applied when garbage collection happens.
When a previous command increases the total undo list size past this
value, the earlier commands that came before it are forgotten.

The size is counted as the number of bytes occupied,
which includes both saved text and other data.Vundo-strong-limit
Don't keep more than this much size of undo information.
This limit is applied when garbage collection happens.
When a previous command increases the total undo list size past this
value, that command and the earlier commands that came before it are forgotten.
However, the most recent buffer-modifying command's undo info
is never discarded for this reason.

The size is counted as the number of bytes occupied,
which includes both saved text and other data.Vundo-outer-limit
Outer limit on size of undo information for one command.
At garbage collection time, if the current command has produced
more than this much undo information, it discards the info and displays
a warning.  This is a last-ditch limit to prevent memory overflow.

The size is counted as the number of bytes occupied, which includes
both saved text and other data.  A value of nil means no limit.  In
this case, accumulating one huge undo entry could make Emacs crash as
a result of memory overflow.

In fact, this calls the function which is the value of
`undo-outer-limit-function' with one argument, the size.
The text above describes the behavior of the function
that variable usually specifies.Vundo-outer-limit-function
Function to call when an undo list exceeds `undo-outer-limit'.
This function is called with one argument, the current undo list size
for the most recent command (since the last undo boundary).
If the function returns t, that means truncation has been fully handled.
If it returns nil, the other forms of truncation are done.

Garbage collection is inhibited around the call to this function,
so it must make sure not to do a lot of consing.Vundo-inhibit-record-point
Non-nil means do not record `point' in `buffer-undo-list'.Salloc.o
Fmake-string
Return a newly created string of length LENGTH, with INIT in each element.
LENGTH must be an integer.
INIT must be an integer that represents a character.
If optional argument MULTIBYTE is non-nil, the result will be
a multibyte string even if INIT is an ASCII character.

(fn LENGTH INIT &optional MULTIBYTE)Fmake-bool-vector
Return a new bool-vector of length LENGTH, using INIT for each element.
LENGTH must be a number.  INIT matters only in whether it is t or nil.

(fn LENGTH INIT)Fbool-vector
Return a new bool-vector with specified arguments as elements.
Allows any number of arguments, including zero.

(fn &rest OBJECTS)Fcons
Create a new cons, give it CAR and CDR as components, and return it.

(fn CAR CDR)Flist
Return a newly created list with specified arguments as elements.
Allows any number of arguments, including zero.

(fn &rest OBJECTS)Fmake-list
Return a newly created list of length LENGTH, with each element being INIT.

(fn LENGTH INIT)Fmake-record
Create a new record.
TYPE is its type as returned by `type-of'; it should be either a
symbol or a type descriptor.  SLOTS is the number of non-type slots,
each initialized to INIT.

(fn TYPE SLOTS INIT)Frecord
Create a new record.
TYPE is its type as returned by `type-of'; it should be either a
symbol or a type descriptor.  SLOTS is used to initialize the record
slots with shallow copies of the arguments.

(fn TYPE &rest SLOTS)Fmake-vector
Return a newly created vector of length LENGTH, with each element being INIT.
See also the function `vector'.

(fn LENGTH INIT)Fvector
Return a newly created vector with specified arguments as elements.
Allows any number of arguments, including zero.

(fn &rest OBJECTS)Fmake-byte-code
Create a byte-code object with specified arguments as elements.
The arguments should be the ARGLIST, bytecode-string BYTE-CODE, constant
vector CONSTANTS, maximum stack size DEPTH, (optional) DOCSTRING,
and (optional) INTERACTIVE-SPEC.
The first four arguments are required; at most six have any
significance.
The ARGLIST can be either like the one of `lambda', in which case the arguments
will be dynamically bound before executing the byte code, or it can be an
integer of the form NNNNNNNRMMMMMMM where the 7bit MMMMMMM specifies the
minimum number of arguments, the 7-bit NNNNNNN specifies the maximum number
of arguments (ignoring &rest) and the R bit specifies whether there is a &rest
argument to catch the left-over arguments.  If such an integer is used, the
arguments will not be dynamically bound but will be instead pushed on the
stack before executing the byte-code.

(fn ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INTERACTIVE-SPEC &rest ELEMENTS)Fmake-closure
Create a byte-code closure from PROTOTYPE and CLOSURE-VARS.
Return a copy of PROTOTYPE, a byte-code object, with CLOSURE-VARS
replacing the elements in the beginning of the constant-vector.

(fn PROTOTYPE &rest CLOSURE-VARS)Fmake-symbol
Return a newly allocated uninterned symbol whose name is NAME.
Its value is void, and its function definition and property list are nil.

(fn NAME)Fmake-marker
Return a newly allocated marker which does not point at any place.

(fn)Fmake-finalizer
Make a finalizer that will run FUNCTION.
FUNCTION will be called after garbage collection when the returned
finalizer object becomes unreachable.  If the finalizer object is
reachable only through references from finalizer objects, it does not
count as reachable for the purpose of deciding whether to run
FUNCTION.  FUNCTION will be run once per finalizer object.

(fn FUNCTION)Fpurecopy
Make a copy of object OBJ in pure storage.
Recursively copies contents of vectors and cons cells.
Does not copy symbols.  Copies strings without text properties.

(fn OBJ)Fgarbage-collect
Reclaim storage for Lisp objects no longer needed.
Garbage collection happens automatically if you cons more than
`gc-cons-threshold' bytes of Lisp data since previous garbage collection.
`garbage-collect' normally returns a list with info on amount of space in use,
where each entry has the form (NAME SIZE USED FREE), where:
- NAME is a symbol describing the kind of objects this entry represents,
- SIZE is the number of bytes used by each one,
- USED is the number of those objects that were found live in the heap,
- FREE is the number of those objects that are not live but that Emacs
  keeps around for future allocations (maybe because it does not know how
  to return them to the OS).

However, if there was overflow in pure space, and Emacs was dumped
using the "unexec" method, `garbage-collect' returns nil, because
real GC can't be done.

Note that calling this function does not guarantee that absolutely all
unreachable objects will be garbage-collected.  Emacs uses a
mark-and-sweep garbage collector, but is conservative when it comes to
collecting objects in some circumstances.

For further details, see Info node `(elisp)Garbage Collection'.

(fn)Fgarbage-collect-maybe
Call `garbage-collect' if enough allocation happened.
FACTOR determines what "enough" means here:
If FACTOR is a positive number N, it means to run GC if more than
1/Nth of the allocations needed to trigger automatic allocation took
place.
Therefore, as N gets higher, this is more likely to perform a GC.
Returns non-nil if GC happened, and nil otherwise.

(fn FACTOR)Fmemory-info
Return a list of (TOTAL-RAM FREE-RAM TOTAL-SWAP FREE-SWAP).
All values are in Kbytes.  If there is no swap space,
last two values are zero.  If the system is not supported
or memory information can't be obtained, return nil.
If `default-directory' is remote, return memory information of the
respective remote host.

(fn)Fmemory-use-counts
Return a list of counters that measure how much consing there has been.
Each of these counters increments for a certain kind of object.
The counters wrap around from the largest positive integer to zero.
Garbage collection does not decrease them.
The elements of the value are as follows:
  (CONSES FLOATS VECTOR-CELLS SYMBOLS STRING-CHARS INTERVALS STRINGS)
All are in units of 1 = one object consed
except for VECTOR-CELLS and STRING-CHARS, which count the total length of
objects consed.
Frames, windows, buffers, and subprocesses count as vectors
  (but the contents of a buffer's text do not count here).

(fn)Fmalloc-info
Report malloc information to stderr.
This function outputs to stderr an XML-formatted
description of the current state of the memory-allocation
arenas.

(fn)Fmalloc-trim
Release free heap memory to the OS.
This function asks libc to return unused heap memory back to the operating
system.  This function isn't guaranteed to do anything, and is mainly
meant as a debugging tool.

If LEAVE_PADDING is given, ask the system to leave that much unused
space in the heap of the Emacs process.  This should be an integer, and if
not given, it defaults to 0.

This function returns nil if no memory could be returned to the
system, and non-nil if some memory could be returned.

(fn &optional LEAVE-PADDING)Vgc-cons-threshold
Number of bytes of consing between garbage collections.
Garbage collection can happen automatically once this many bytes have been
allocated since the last garbage collection.  All data types count.

Garbage collection happens automatically only when `eval' is called.

By binding this temporarily to a large number, you can effectively
prevent garbage collection during a part of the program.  But be
sure to get back to the normal value soon enough, to avoid system-wide
memory pressure, and never use a too-high value for prolonged periods
of time.
See also `gc-cons-percentage'.Vgc-cons-percentage
Portion of the heap used for allocation.
Garbage collection can happen automatically once this portion of the heap
has been allocated since the last garbage collection.

By binding this temporarily to a large number, you can effectively
prevent garbage collection during a part of the program.  But be
sure to get back to the normal value soon enough, to avoid system-wide
memory pressure, and never use a too-high value for prolonged periods
of time.

If this portion is smaller than `gc-cons-threshold', this is ignored.Vpure-bytes-used
Number of bytes of shareable Lisp data allocated so far.Vcons-cells-consed
Number of cons cells that have been consed so far.Vfloats-consed
Number of floats that have been consed so far.Vvector-cells-consed
Number of vector cells that have been consed so far.Vsymbols-consed
Number of symbols that have been consed so far.Vstring-chars-consed
Number of string characters that have been consed so far.Vintervals-consed
Number of intervals that have been consed so far.Vstrings-consed
Number of strings that have been consed so far.Vpurify-flag
Non-nil means loading Lisp code in order to dump an executable.
This means that certain objects should be allocated in shared (pure) space.
It can also be set to a hash-table, in which case this table is used to
do hash-consing of the objects allocated to pure space.Vgarbage-collection-messages
Non-nil means display messages at start and end of garbage collection.Vpost-gc-hook
Hook run after garbage collection has finished.Vmemory-signal-data
Precomputed `signal' argument for memory-full error.Vmemory-full
Non-nil means Emacs cannot get much more Lisp memory.Vgc-elapsed
Accumulated time elapsed in garbage collections.
The time is in seconds as a floating point value.Vgcs-done
Accumulated number of garbage collections done.Vinteger-width
Maximum number N of bits in safely-calculated integers.
Integers with absolute values less than 2**N do not signal a range error.
N should be nonnegative.Spdumper.o
Fdump-emacs-portable
Dump current state of Emacs into dump file FILENAME.
If TRACK-REFERRERS is non-nil, keep additional debugging information
that can help track down the provenance of unsupported object
types.

(fn FILENAME &optional TRACK-REFERRERS)Fdump-emacs-portable--sort-predicate
Internal relocation sorting function.

(fn A B)Fdump-emacs-portable--sort-predicate-copied
Internal relocation sorting function.

(fn A B)Fpdumper-stats
Return statistics about portable dumping used by this session.
If this Emacs session was started from a dump file,
the return value is an alist of the form:

  ((dumped-with-pdumper . t) (load-time . TIME) (dump-file-name . FILE))

where TIME is the time in seconds it took to restore Emacs state
from the dump file, and FILE is the name of the dump file.
Value is nil if this session was not started using a dump file.

(fn)Vpdumper-fingerprint
The fingerprint of this Emacs binary.
It is a string that is supposed to be unique to each build of
Emacs.Sdata.o
Feq
Return t if the two args are the same Lisp object.

(fn OBJ1 OBJ2)Fnull
Return t if OBJECT is nil, and return nil otherwise.

(fn OBJECT)Ftype-of
Return a symbol representing the type of OBJECT.
The symbol returned names the object's basic type;
for example, (type-of 1) returns `integer'.
Contrary to `cl-type-of', the returned type is not always the most
precise type possible, because instead this function tries to preserve
compatibility with the return value of previous Emacs versions.

(fn OBJECT)Fcl-type-of
Return a symbol representing the type of OBJECT.
The returned symbol names the most specific possible type of the object.
for example, (cl-type-of nil) returns `null'.
The specific type returned may change depending on Emacs versions,
so we recommend you use `cl-typep', `cl-typecase', or other predicates
rather than compare the return value of this function against
a fixed set of types.

(fn OBJECT)Fconsp
Return t if OBJECT is a cons cell.

(fn OBJECT)Fatom
Return t if OBJECT is not a cons cell.  This includes nil.

(fn OBJECT)Flistp
Return t if OBJECT is a list, that is, a cons cell or nil.
Otherwise, return nil.

(fn OBJECT)Fnlistp
Return t if OBJECT is not a list.  Lists include nil.

(fn OBJECT)Fbare-symbol-p
Return t if OBJECT is a symbol, but not a symbol together with position.

(fn OBJECT)Fsymbol-with-pos-p
Return t if OBJECT is a symbol together with position.
Ignore `symbols-with-pos-enabled'.

(fn OBJECT)Fsymbolp
Return t if OBJECT is a symbol.

(fn OBJECT)Fkeywordp
Return t if OBJECT is a keyword.
This means that it is a symbol with a print name beginning with `:'
interned in the initial obarray.

(fn OBJECT)Fvectorp
Return t if OBJECT is a vector.

(fn OBJECT)Frecordp
Return t if OBJECT is a record.

(fn OBJECT)Fstringp
Return t if OBJECT is a string.

(fn OBJECT)Fmultibyte-string-p
Return t if OBJECT is a multibyte string.
Return nil if OBJECT is either a unibyte string, or not a string.

(fn OBJECT)Fchar-table-p
Return t if OBJECT is a char-table.

(fn OBJECT)Fvector-or-char-table-p
Return t if OBJECT is a char-table or vector.

(fn OBJECT)Fbool-vector-p
Return t if OBJECT is a bool-vector.

(fn OBJECT)Farrayp
Return t if OBJECT is an array (string or vector).

(fn OBJECT)Fsequencep
Return t if OBJECT is a sequence (list or array).

(fn OBJECT)Fbufferp
Return t if OBJECT is an editor buffer.

(fn OBJECT)Fmarkerp
Return t if OBJECT is a marker (editor pointer).

(fn OBJECT)Fuser-ptrp
Return t if OBJECT is a module user pointer.

(fn OBJECT)Fsubrp
Return t if OBJECT is a built-in or native compiled Lisp function.

See also `primitive-function-p' and `native-comp-function-p'.

(fn OBJECT)Fclosurep
Return t if OBJECT is a function of type `closure'.

(fn OBJECT)Fbyte-code-function-p
Return t if OBJECT is a byte-compiled function object.

(fn OBJECT)Finterpreted-function-p
Return t if OBJECT is a function of type `interpreted-function'.

(fn OBJECT)Fmodule-function-p
Return t if OBJECT is a function loaded from a dynamic module.

(fn OBJECT)Fchar-or-string-p
Return t if OBJECT is a character or a string.

(fn OBJECT)Fintegerp
Return t if OBJECT is an integer.

(fn OBJECT)Finteger-or-marker-p
Return t if OBJECT is an integer or a marker (editor pointer).

(fn OBJECT)Fnatnump
Return t if OBJECT is a nonnegative integer.

(fn OBJECT)Fnumberp
Return t if OBJECT is a number (floating point or integer).

(fn OBJECT)Fnumber-or-marker-p
Return t if OBJECT is a number or a marker.

(fn OBJECT)Ffloatp
Return t if OBJECT is a floating point number.

(fn OBJECT)Fthreadp
Return t if OBJECT is a thread.

(fn OBJECT)Fmutexp
Return t if OBJECT is a mutex.

(fn OBJECT)Fcondition-variable-p
Return t if OBJECT is a condition variable.

(fn OBJECT)Fcar
Return the car of LIST.  If LIST is nil, return nil.
Error if LIST is not nil and not a cons cell.  See also `car-safe'.

See Info node `(elisp)Cons Cells' for a discussion of related basic
Lisp concepts such as car, cdr, cons cell and list.

(fn LIST)Fcar-safe
Return the car of OBJECT if it is a cons cell, or else nil.

(fn OBJECT)Fcdr
Return the cdr of LIST.  If LIST is nil, return nil.
Error if LIST is not nil and not a cons cell.  See also `cdr-safe'.

See Info node `(elisp)Cons Cells' for a discussion of related basic
Lisp concepts such as cdr, car, cons cell and list.

(fn LIST)Fcdr-safe
Return the cdr of OBJECT if it is a cons cell, or else nil.

(fn OBJECT)Fsetcar
Set the car of CELL to be NEWCAR.  Returns NEWCAR.

(fn CELL NEWCAR)Fsetcdr
Set the cdr of CELL to be NEWCDR.  Returns NEWCDR.

(fn CELL NEWCDR)Fboundp
Return t if SYMBOL's value is not void.
Note that if `lexical-binding' is in effect, this refers to the
global value outside of any lexical scope.

(fn SYMBOL)Ffboundp
Return t if SYMBOL's function definition is not nil.

(fn SYMBOL)Fmakunbound
Empty out the value cell of SYMBOL, making it void as a variable.
Return SYMBOL.

If a variable is void, trying to evaluate the variable signals a
`void-variable' error, instead of returning a value.  For more
details, see Info node `(elisp) Void Variables'.

See also `fmakunbound'.

(fn SYMBOL)Ffmakunbound
Make SYMBOL's function definition be nil.
Return SYMBOL.

If a function definition is nil, trying to call a function by
that name will cause a `void-function' error.  For more details, see
Info node `(elisp) Function Cells'.

See also `makunbound'.

(fn SYMBOL)Fsymbol-function
Return SYMBOL's function definition.

(fn SYMBOL)Fsymbol-plist
Return SYMBOL's property list.

(fn SYMBOL)Fsymbol-name
Return SYMBOL's name, a string.

Warning: never alter the string returned by `symbol-name'.
Doing that might make Emacs dysfunctional, and might even crash Emacs.

(fn SYMBOL)Fbare-symbol
Extract, if need be, the bare symbol from SYM.
SYM must be either a symbol or a symbol with position, otherwise
the function will signal the `wrong-type-argument' error.
This function ignores `symbols-with-pos-enabled'.

(fn SYM)Fsymbol-with-pos-pos
Extract the position from the symbol with position SYMPOS.
Ignore `symbols-with-pos-enabled'.

(fn SYMPOS)Fremove-pos-from-symbol
If ARG is a symbol with position, return it without the position.
Otherwise, return ARG unchanged.  Ignore `symbols-with-pos-enabled'.
Compare with `bare-symbol', which does the same, but signals an error
if ARG is not a symbol.

(fn ARG)Fposition-symbol
Make a new symbol with position.
SYM is a symbol, with or without position, the symbol to position.
POS, the position, is either a nonnegative fixnum,
or a symbol with position from which the position will be taken.
Ignore `symbols-with-pos-enabled'.

(fn SYM POS)Ffset
Set SYMBOL's function definition to DEFINITION, and return DEFINITION.
If the resulting chain of function definitions would contain a loop,
signal a `cyclic-function-indirection' error.

(fn SYMBOL DEFINITION)Fdefalias
Set SYMBOL's function definition to DEFINITION.
Associates the function with the current load file, if any.
The optional third argument DOCSTRING specifies the documentation string
for SYMBOL; if it is omitted or nil, SYMBOL uses the documentation string
determined by DEFINITION.

Internally, this normally uses `fset', but if SYMBOL has a
`defalias-fset-function' property, the associated value is used instead.

The return value is undefined.

(fn SYMBOL DEFINITION &optional DOCSTRING)Fsetplist
Set SYMBOL's property list to NEWPLIST, and return NEWPLIST.

(fn SYMBOL NEWPLIST)Fsubr-arity
Return minimum and maximum number of args allowed for SUBR.
SUBR must be a built-in function.
The returned value is a pair (MIN . MAX).  MIN is the minimum number
of args.  MAX is the maximum number or the symbol `many', for a
function with `&rest' args, or `unevalled' for a special form.

(fn SUBR)Fsubr-name
Return name of subroutine SUBR.
SUBR must be a built-in function.

(fn SUBR)Fnative-comp-function-p
Return t if the object is native compiled Lisp function, nil otherwise.

(fn OBJECT)Fsubr-native-lambda-list
Return the lambda list for a native compiled lisp/d
function or t otherwise.

(fn SUBR)Fsubr-type
Return the type of SUBR.

(fn SUBR)Fsubr-native-comp-unit
Return the native compilation unit.

(fn SUBR)Fnative-comp-unit-file
Return the file of the native compilation unit.

(fn COMP-UNIT)Fnative-comp-unit-set-file
Return the file of the native compilation unit.

(fn COMP-UNIT NEW-FILE)Finteractive-form
Return the interactive form of CMD or nil if none.
If CMD is not a command, the return value is nil.
Value, if non-nil, is a list (interactive SPEC).

(fn CMD)Fcommand-modes
Return the modes COMMAND is defined for.
If COMMAND is not a command, the return value is nil.
The value, if non-nil, is a list of mode name symbols.

(fn COMMAND)Findirect-variable
Return the variable at the end of OBJECT's variable chain.
If OBJECT is a symbol, follow its variable indirections (if any), and
return the variable at the end of the chain of aliases.  See Info node
`(elisp)Variable Aliases'.

If OBJECT is not a symbol, just return it.

(fn OBJECT)Fsymbol-value
Return SYMBOL's value.  Error if that is void.
Note that if `lexical-binding' is in effect, this returns the
global value outside of any lexical scope.

(fn SYMBOL)Fset
Set SYMBOL's value to NEWVAL, and return NEWVAL.

(fn SYMBOL NEWVAL)Fadd-variable-watcher
Cause WATCH-FUNCTION to be called when SYMBOL is about to be set.

It will be called with 4 arguments: (SYMBOL NEWVAL OPERATION WHERE).
SYMBOL is the variable being changed.
NEWVAL is the value it will be changed to.  (The variable still has
the old value when WATCH-FUNCTION is called.)
OPERATION is a symbol representing the kind of change, one of: `set',
`let', `unlet', `makunbound', and `defvaralias'.
WHERE is a buffer if the buffer-local value of the variable is being
changed, nil otherwise.

All writes to aliases of SYMBOL will call WATCH-FUNCTION too.

(fn SYMBOL WATCH-FUNCTION)Fremove-variable-watcher
Undo the effect of `add-variable-watcher'.
Remove WATCH-FUNCTION from the list of functions to be called when
SYMBOL (or its aliases) are set.

(fn SYMBOL WATCH-FUNCTION)Fget-variable-watchers
Return a list of SYMBOL's active watchers.

(fn SYMBOL)Fdefault-boundp
Return t if SYMBOL has a non-void default value.
A variable may have a buffer-local value.  This function says whether
the variable has a non-void value outside of the current buffer
context.  Also see `default-value'.

(fn SYMBOL)Fdefault-value
Return SYMBOL's default value.
This is the value that is seen in buffers that do not have their own values
for this variable.  The default value is meaningful for variables with
local bindings in certain buffers.

(fn SYMBOL)Fset-default
Set SYMBOL's default value to VALUE.  SYMBOL and VALUE are evaluated.
The default value is seen in buffers that do not have their own values
for this variable.

(fn SYMBOL VALUE)Fmake-variable-buffer-local
Make VARIABLE become buffer-local whenever it is set.
At any time, the value for the current buffer is in effect,
unless the variable has never been set in this buffer,
in which case the default value is in effect.
Note that binding the variable with `let', or setting it while
a `let'-style binding made in this buffer is in effect,
does not make the variable buffer-local.  Return VARIABLE.

This globally affects all uses of this variable, so it belongs together with
the variable declaration, rather than with its uses (if you just want to make
a variable local to the current buffer for one particular use, use
`make-local-variable').  Buffer-local bindings are normally cleared
while setting up a new major mode, unless they have a `permanent-local'
property.

The function `default-value' gets the default value and `set-default' sets it.

See also `defvar-local'.

(fn VARIABLE)Fmake-local-variable
Make VARIABLE have a separate value in the current buffer.
Other buffers will continue to share a common default value.
(The buffer-local value of VARIABLE starts out as the same value
VARIABLE previously had.  If VARIABLE was void, it remains void.)
Return VARIABLE.

If the variable is already arranged to become local when set,
this function causes a local value to exist for this buffer,
just as setting the variable would do.

This function returns VARIABLE, and therefore
  (set (make-local-variable \='VARIABLE) VALUE-EXP)
works.

See also `make-variable-buffer-local'.

Do not use `make-local-variable' to make a hook variable buffer-local.
Instead, use `add-hook' and specify t for the LOCAL argument.

(fn VARIABLE)Fkill-local-variable
Make VARIABLE no longer have a separate value in the current buffer.
From now on the default value will apply in this buffer.  Return VARIABLE.

(fn VARIABLE)Flocal-variable-p
Non-nil if VARIABLE has a local binding in buffer BUFFER.
BUFFER defaults to the current buffer.

Also see `buffer-local-boundp'.

(fn VARIABLE &optional BUFFER)Flocal-variable-if-set-p
Non-nil if VARIABLE is local in buffer BUFFER when set there.
BUFFER defaults to the current buffer.

More precisely, return non-nil if either VARIABLE already has a local
value in BUFFER, or if VARIABLE is automatically buffer-local (see
`make-variable-buffer-local').

(fn VARIABLE &optional BUFFER)Fvariable-binding-locus
Return a value indicating where VARIABLE's current binding comes from.
If the current binding is buffer-local, the value is the current buffer.
If the current binding is global (the default), the value is nil.

(fn VARIABLE)Findirect-function
Return the function at the end of OBJECT's function chain.
If OBJECT is not a symbol, just return it.  Otherwise, follow all
function indirections to find the final function binding and return it.

(fn OBJECT &optional NOERROR)Faref
Return the element of ARRAY at index IDX.
ARRAY may be a vector, a string, a char-table, a bool-vector, a record,
or a byte-code object.  IDX starts at 0.

(fn ARRAY IDX)Faset
Store into the element of ARRAY at index IDX the value NEWELT.
Return NEWELT.  ARRAY may be a vector, a string, a char-table or a
bool-vector.  IDX starts at 0.

(fn ARRAY IDX NEWELT)F=
Return t if args, all numbers or markers, are equal.

(fn NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS)F<
Return t if each arg (a number or marker), is less than the next arg.

(fn NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS)F>
Return t if each arg (a number or marker) is greater than the next arg.

(fn NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS)F<=
Return t if each arg (a number or marker) is less than or equal to the next.

(fn NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS)F>=
Return t if each arg (a number or marker) is greater than or equal to the next.

(fn NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS)F/=
Return t if first arg is not equal to second arg.  Both must be numbers or markers.

(fn NUM1 NUM2)Fnumber-to-string
Return the decimal representation of NUMBER as a string.
Uses a minus sign if negative.
NUMBER may be an integer or a floating point number.

(fn NUMBER)Fstring-to-number
Parse STRING as a decimal number and return the number.
Ignore leading spaces and tabs, and all trailing chars.  Return 0 if
STRING cannot be parsed as an integer or floating point number.

If BASE, interpret STRING as a number in that base.  If BASE isn't
present, base 10 is used.  BASE must be between 2 and 16 (inclusive).
If the base used is not 10, STRING is always parsed as an integer.

(fn STRING &optional BASE)F+
Return sum of any number of arguments, which are numbers or markers.

(fn &rest NUMBERS-OR-MARKERS)F-
Negate number or subtract numbers or markers and return the result.
With one arg, negates it.  With more than one arg,
subtracts all but the first from the first.

(fn &optional NUMBER-OR-MARKER &rest MORE-NUMBERS-OR-MARKERS)F*
Return product of any number of arguments, which are numbers or markers.

(fn &rest NUMBERS-OR-MARKERS)F/
Divide number by divisors and return the result.
With two or more arguments, return first argument divided by the rest.
With one argument, return 1 divided by the argument.
The arguments must be numbers or markers.

(fn NUMBER &rest DIVISORS)F%
Return remainder of X divided by Y.
Both must be integers or markers.

(fn X Y)Fmod
Return X modulo Y.
The result falls between zero (inclusive) and Y (exclusive).
Both X and Y must be numbers or markers.

(fn X Y)Fmax
Return largest of all the arguments (which must be numbers or markers).
The value is always a number; markers are converted to numbers.

(fn NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS)Fmin
Return smallest of all the arguments (which must be numbers or markers).
The value is always a number; markers are converted to numbers.

(fn NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS)Flogand
Return bitwise-and of all the arguments.
Arguments may be integers, or markers converted to integers.

(fn &rest INTS-OR-MARKERS)Flogior
Return bitwise-or of all the arguments.
Arguments may be integers, or markers converted to integers.

(fn &rest INTS-OR-MARKERS)Flogxor
Return bitwise-exclusive-or of all the arguments.
Arguments may be integers, or markers converted to integers.

(fn &rest INTS-OR-MARKERS)Flogcount
Return population count of VALUE.
This is the number of one bits in the two's complement representation
of VALUE.  If VALUE is negative, return the number of zero bits in the
representation.

(fn VALUE)Fash
Return integer VALUE with its bits shifted left by COUNT bit positions.
If COUNT is negative, shift VALUE to the right instead.
VALUE and COUNT must be integers.
Mathematically, the return value is VALUE multiplied by 2 to the
power of COUNT, rounded down.  If the result is non-zero, its sign
is the same as that of VALUE.
In terms of bits, when COUNT is positive, the function moves
the bits of VALUE to the left, adding zero bits on the right; when
COUNT is negative, it moves the bits of VALUE to the right,
discarding bits.

(fn VALUE COUNT)F1+
Return NUMBER plus one.  NUMBER may be a number or a marker.
Markers are converted to integers.

(fn NUMBER)F1-
Return NUMBER minus one.  NUMBER may be a number or a marker.
Markers are converted to integers.

(fn NUMBER)Flognot
Return the bitwise complement of NUMBER.  NUMBER must be an integer.

(fn NUMBER)Fbyteorder
Return the byteorder for the machine.
Returns 66 (ASCII uppercase B) for big endian machines or 108 (ASCII
lowercase l) for small endian machines.

(fn)Fbool-vector-exclusive-or
Return A ^ B, bitwise exclusive or.
If optional third argument C is given, store result into C.
A, B, and C must be bool vectors of the same length.
Return the destination vector if it changed or nil otherwise.

(fn A B &optional C)Fbool-vector-union
Return A | B, bitwise or.
If optional third argument C is given, store result into C.
A, B, and C must be bool vectors of the same length.
Return the destination vector if it changed or nil otherwise.

(fn A B &optional C)Fbool-vector-intersection
Return A & B, bitwise and.
If optional third argument C is given, store result into C.
A, B, and C must be bool vectors of the same length.
Return the destination vector if it changed or nil otherwise.

(fn A B &optional C)Fbool-vector-set-difference
Return A &~ B, set difference.
If optional third argument C is given, store result into C.
A, B, and C must be bool vectors of the same length.
Return the destination vector if it changed or nil otherwise.

(fn A B &optional C)Fbool-vector-subsetp
Return t if every t value in A is also t in B, nil otherwise.
A and B must be bool vectors of the same length.

(fn A B)Fbool-vector-not
Compute ~A, set complement.
If optional second argument B is given, store result into B.
A and B must be bool vectors of the same length.
Return the destination vector.

(fn A &optional B)Fbool-vector-count-population
Count how many elements in A are t.
A is a bool vector.  To count A's nil elements, subtract the return
value from A's length.

(fn A)Fbool-vector-count-consecutive
Count how many consecutive elements in A equal B starting at I.
A is a bool vector, B is t or nil, and I is an index into A.

(fn A B I)Vmost-positive-fixnum
The greatest integer that is represented efficiently.
This variable cannot be set; trying to do so will signal an error.Vmost-negative-fixnum
The least integer that is represented efficiently.
This variable cannot be set; trying to do so will signal an error.Vsymbols-with-pos-enabled
If non-nil, a symbol with position ordinarily behaves as its bare symbol.
Bind this to non-nil in applications such as the byte compiler.Sdoc.o
Fdocumentation-stringp
Return non-nil if OBJECT is a well-formed docstring object.
OBJECT can be either a string or a reference if it's kept externally.

(fn OBJECT)Fdocumentation
Return the documentation string of FUNCTION.
Unless a non-nil second argument RAW is given, the
string is passed through `substitute-command-keys'.

(fn FUNCTION &optional RAW)Finternal-subr-documentation
Return the raw documentation info of a C primitive.

(fn FUNCTION)Fdocumentation-property
Return the documentation string that is SYMBOL's PROP property.
Third argument RAW omitted or nil means pass the result through
`substitute-command-keys' if it is a string.

This differs from `get' in that it can refer to strings stored in the
`etc/DOC' file; and that it evaluates documentation properties that
aren't strings.

(fn SYMBOL PROP &optional RAW)FSnarf-documentation
Used during Emacs initialization to scan the `etc/DOC...' file.
This searches the `etc/DOC...' file for doc strings and
records them in function and variable definitions.
The function takes one argument, FILENAME, a string;
it specifies the file name (without a directory) of the DOC file.
That file is found in `../etc' now; later, when the dumped Emacs is run,
the same file name is found in the `doc-directory'.

(fn FILENAME)Ftext-quoting-style
Return the current effective text quoting style.
If the variable `text-quoting-style' is `grave', `straight' or
`curve', just return that value.  If it is nil (the default), return
`grave' if curved quotes cannot be displayed (for instance, on a
terminal with no support for these characters), otherwise return
`curve'.  Any other value is treated as `curve'.

Note that in contrast to the variable `text-quoting-style', this
function will never return nil.

(fn)Vinternal-doc-file-name
Name of file containing documentation strings of built-in symbols.Vbuild-files
A list of files used to build this Emacs binary.Vtext-quoting-style
Style to use for single quotes in help and messages.

The value of this variable determines substitution of grave accents
and apostrophes in help output (but not for display of Info
manuals) and in functions like `message' and `format-message', but not
in `format'.

The value should be one of these symbols:
  `curve':    quote with curved single quotes ‘like this’.
  `straight': quote with straight apostrophes \='like this\='.
  `grave':    quote with grave accent and apostrophe \=`like this\=';
	      i.e., do not alter the original quote marks.
  nil:        like `curve' if curved single quotes are displayable,
	      and like `grave' otherwise.  This is the default.

You should never read the value of this variable directly from a Lisp
program.  Use the function `text-quoting-style' instead, as that will
compute the correct value for the current terminal in the nil case.Vinternal--text-quoting-flag
If nil, a nil `text-quoting-style' is treated as `grave'.Seditfns.o
Fchar-to-string
Convert arg CHAR to a string containing that character.

(fn CHAR)Fbyte-to-string
Convert arg BYTE to a unibyte string containing that byte.

(fn BYTE)Fstring-to-char
Return the first character in STRING.

(fn STRING)Fpoint
Return value of point, as an integer.
Beginning of buffer is position (point-min).

(fn)Fpoint-marker
Return value of point, as a marker object.

(fn)Fgoto-char
Set point to POSITION, a number or marker.
Beginning of buffer is position (point-min), end is (point-max).

The return value is POSITION.

If called interactively, a numeric prefix argument specifies
POSITION; without a numeric prefix argument, read POSITION from the
minibuffer.  The default value is the number at point (if any).

(fn POSITION)Fregion-beginning
Return the integer value of point or mark, whichever is smaller.

(fn)Fregion-end
Return the integer value of point or mark, whichever is larger.

(fn)Fmark-marker
Return this buffer's mark, as a marker object.
Watch out!  Moving this marker changes the mark position.
If you set the marker not to point anywhere, the buffer will have no mark.

(fn)Fget-pos-property
Return the value of POSITION's property PROP, in OBJECT.
Almost identical to `get-char-property' except for the following difference:
Whereas `get-char-property' returns the property of the char at (i.e. right
after) POSITION, this pays attention to properties's stickiness and overlays's
advancement settings, in order to find the property of POSITION itself,
i.e. the property that a char would inherit if it were inserted
at POSITION.

(fn POSITION PROP &optional OBJECT)Fdelete-field
Delete the field surrounding POS.
A field is a region of text with the same `field' property.
If POS is nil, the value of point is used for POS.

(fn &optional POS)Ffield-string
Return the contents of the field surrounding POS as a string.
A field is a region of text with the same `field' property.
If POS is nil, the value of point is used for POS.

(fn &optional POS)Ffield-string-no-properties
Return the contents of the field around POS, without text properties.
A field is a region of text with the same `field' property.
If POS is nil, the value of point is used for POS.

(fn &optional POS)Ffield-beginning
Return the beginning of the field surrounding POS.
A field is a region of text with the same `field' property.
If POS is nil, the value of point is used for POS.
If ESCAPE-FROM-EDGE is non-nil and POS is at the beginning of its
field, then the beginning of the *previous* field is returned.
If LIMIT is non-nil, it is a buffer position; if the beginning of the field
is before LIMIT, then LIMIT will be returned instead.

(fn &optional POS ESCAPE-FROM-EDGE LIMIT)Ffield-end
Return the end of the field surrounding POS.
A field is a region of text with the same `field' property.
If POS is nil, the value of point is used for POS.
If ESCAPE-FROM-EDGE is non-nil and POS is at the end of its field,
then the end of the *following* field is returned.
If LIMIT is non-nil, it is a buffer position; if the end of the field
is after LIMIT, then LIMIT will be returned instead.

(fn &optional POS ESCAPE-FROM-EDGE LIMIT)Fconstrain-to-field
Return the position closest to NEW-POS that is in the same field as OLD-POS.
A field is a region of text with the same `field' property.

If NEW-POS is nil, then use the current point instead, and move point
to the resulting constrained position, in addition to returning that
position.

If OLD-POS is at the boundary of two fields, then the allowable
positions for NEW-POS depends on the value of the optional argument
ESCAPE-FROM-EDGE: If ESCAPE-FROM-EDGE is nil, then NEW-POS is
constrained to the field that has the same `field' char-property
as any new characters inserted at OLD-POS, whereas if ESCAPE-FROM-EDGE
is non-nil, NEW-POS is constrained to the union of the two adjacent
fields.  Additionally, if two fields are separated by another field with
the special value `boundary', then any point within this special field is
also considered to be `on the boundary'.

If the optional argument ONLY-IN-LINE is non-nil and constraining
NEW-POS would move it to a different line, NEW-POS is returned
unconstrained.  This is useful for commands that move by line, like
\[next-line] or \[beginning-of-line], which should generally respect field boundaries
only in the case where they can still move to the right line.

If the optional argument INHIBIT-CAPTURE-PROPERTY is non-nil, and OLD-POS has
a non-nil property of that name, then any field boundaries are ignored.

Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil.

(fn NEW-POS OLD-POS &optional ESCAPE-FROM-EDGE ONLY-IN-LINE INHIBIT-CAPTURE-PROPERTY)Fpos-bol
Return the position of the first character on the current line.
With optional argument N, scan forward N - 1 lines first.
If the scan reaches the end of the buffer, return that position.

This function ignores text display directionality; it returns the
position of the first character in logical order, i.e. the smallest
character position on the logical line.  See `vertical-motion' for
movement by screen lines.

This function does not move point.  Also see `line-beginning-position'.

(fn &optional N)Fline-beginning-position
Return the position of the first character in the current line/field.
With optional argument N non-nil, move forward N - 1 lines first.
This function is like `pos-bol' (which see), but respects fields.

This function constrains the returned position to the current field
unless that position would be on a different line from the original,
unconstrained result.  If N is nil or 1, and a front-sticky field
starts at point, the scan stops as soon as it starts.  To ignore field
boundaries, bind `inhibit-field-text-motion' to t.

This function does not move point.

(fn &optional N)Fpos-eol
Return the position of the last character on the current line.
With argument N not nil or 1, move forward N - 1 lines first.
If scan reaches end of buffer, return that position.

This function ignores text display directionality; it returns the
position of the last character in logical order, i.e. the largest
character position on the line.

This function does not move point.  Also see `line-end-position'.

(fn &optional N)Fline-end-position
Return the position of the last character in the current line/field.
With argument N not nil or 1, move forward N - 1 lines first.
If scan reaches end of buffer, return that position.

This function is like `pos-eol' (which see), but respects fields.

This function constrains the returned position to the current field
unless that would be on a different line from the original,
unconstrained result.  If N is nil or 1, and a rear-sticky field ends
at point, the scan stops as soon as it starts.  To ignore field
boundaries bind `inhibit-field-text-motion' to t.

This function does not move point.

(fn &optional N)Fsave-excursion
Save point, and current buffer; execute BODY; restore those things.
Executes BODY just like `progn'.
The values of point and the current buffer are restored
even in case of abnormal exit (throw or error).

If you only want to save the current buffer but not point,
then just use `save-current-buffer', or even `with-current-buffer'.

Before Emacs 25.1, `save-excursion' used to save the mark state.
To save the mark state as well as point and the current buffer, use
`save-mark-and-excursion'.

(fn &rest BODY)Fsave-current-buffer
Record which buffer is current; execute BODY; make that buffer current.
BODY is executed just like `progn'.

(fn &rest BODY)Fbuffer-size
Return the number of characters in the current buffer.
If BUFFER is not nil, return the number of characters in that buffer
instead.

This does not take narrowing into account; to count the number of
characters in the accessible portion of the current buffer, use
`(- (point-max) (point-min))', and to count the number of characters
in the accessible portion of some other BUFFER, use
`(with-current-buffer BUFFER (- (point-max) (point-min)))'.

(fn &optional BUFFER)Fpoint-min
Return the minimum permissible value of point in the current buffer.
This is 1, unless narrowing (a buffer restriction) is in effect.

(fn)Fpoint-min-marker
Return a marker to the minimum permissible value of point in this buffer.
This is the beginning, unless narrowing (a buffer restriction) is in effect.

(fn)Fpoint-max
Return the maximum permissible value of point in the current buffer.
This is (1+ (buffer-size)), unless narrowing (a buffer restriction)
is in effect, in which case it is less.

(fn)Fpoint-max-marker
Return a marker to the maximum permissible value of point in this buffer.
This is (1+ (buffer-size)), unless narrowing (a buffer restriction)
is in effect, in which case it is less.

(fn)Fgap-position
Return the position of the gap, in the current buffer.
See also `gap-size'.

(fn)Fgap-size
Return the size of the current buffer's gap.
See also `gap-position'.

(fn)Fposition-bytes
Return the byte position for character position POSITION.
If POSITION is out of range, the value is nil.

(fn POSITION)Fbyte-to-position
Return the character position for byte position BYTEPOS.
If BYTEPOS is out of range, the value is nil.

(fn BYTEPOS)Ffollowing-char
Return the character following point, as a number.
At the end of the buffer or accessible region, return 0.

(fn)Fpreceding-char
Return the character preceding point, as a number.
At the beginning of the buffer or accessible region, return 0.

(fn)Fbobp
Return t if point is at the beginning of the buffer.
If the buffer is narrowed, this means the beginning of the narrowed part.

(fn)Feobp
Return t if point is at the end of the buffer.
If the buffer is narrowed, this means the end of the narrowed part.

(fn)Fbolp
Return t if point is at the beginning of a line.

(fn)Feolp
Return t if point is at the end of a line.
`End of a line' includes point being at the end of the buffer.

(fn)Fchar-after
Return character in current buffer at position POS.
POS is an integer or a marker and defaults to point.
If POS is out of range, the value is nil.

(fn &optional POS)Fchar-before
Return character in current buffer preceding position POS.
POS is an integer or a marker and defaults to point.
If POS is out of range, the value is nil.

(fn &optional POS)Fuser-login-name
Return the name under which the user logged in, as a string.
This is based on the effective uid, not the real uid.
Also, if the environment variables LOGNAME or USER are set,
that determines the value of this function.

If optional argument UID is an integer, return the login name
of the user with that uid, or nil if there is no such user.

(fn &optional UID)Fuser-real-login-name
Return the name of the user's real uid, as a string.
This ignores the environment variables LOGNAME and USER, so it differs from
`user-login-name' when running under `su'.

(fn)Fuser-uid
Return the effective uid of Emacs, as an integer.

(fn)Fuser-real-uid
Return the real uid of Emacs, as an integer.

(fn)Fgroup-name
Return the name of the group whose numeric group ID is GID.
The argument GID should be an integer or a float.
Return nil if a group with such GID does not exists or is not known.

(fn GID)Fgroup-gid
Return the effective gid of Emacs, as an integer.

(fn)Fgroup-real-gid
Return the real gid of Emacs, as an integer.

(fn)Fuser-full-name
Return the full name of the user logged in, as a string.
If the full name corresponding to Emacs's userid is not known,
return "unknown".

If optional argument UID is an integer, return the full name
of the user with that uid, or nil if there is no such user.
If UID is a string, return the full name of the user with that login
name, or nil if there is no such user.

If the full name includes commas, remove everything starting with
the first comma, because the \='gecos\=' field of the \='/etc/passwd\=' file
is in general a comma-separated list.

(fn &optional UID)Fsystem-name
Return the host name of the machine you are running on, as a string.

(fn)Femacs-pid
Return the process ID of Emacs, as an integer.

(fn)Finsert
Insert the arguments, either strings or characters, at point.
Point and after-insertion markers move forward to end up
 after the inserted text.
Any other markers at the point of insertion remain before the text.

If the current buffer is multibyte, unibyte strings are converted
to multibyte for insertion (see `string-make-multibyte').
If the current buffer is unibyte, multibyte strings are converted
to unibyte for insertion (see `string-make-unibyte').

When operating on binary data, it may be necessary to preserve the
original bytes of a unibyte string when inserting it into a multibyte
buffer; to accomplish this, apply `decode-coding-string' with the
`no-conversion' coding system to the string and insert the result.

(fn &rest ARGS)Finsert-and-inherit
Insert the arguments at point, inheriting properties from adjoining text.
Point and after-insertion markers move forward to end up
 after the inserted text.
Any other markers at the point of insertion remain before the text.

If the current buffer is multibyte, unibyte strings are converted
to multibyte for insertion (see `unibyte-char-to-multibyte').
If the current buffer is unibyte, multibyte strings are converted
to unibyte for insertion.

(fn &rest ARGS)Finsert-before-markers
Insert strings or characters at point, relocating markers after the text.
Point and markers move forward to end up after the inserted text.

If the current buffer is multibyte, unibyte strings are converted
to multibyte for insertion (see `unibyte-char-to-multibyte').
If the current buffer is unibyte, multibyte strings are converted
to unibyte for insertion.

If an overlay begins at the insertion point, the inserted text falls
outside the overlay; if a nonempty overlay ends at the insertion
point, the inserted text falls inside that overlay.

(fn &rest ARGS)Finsert-before-markers-and-inherit
Insert text at point, relocating markers and inheriting properties.
Point and markers move forward to end up after the inserted text.

If the current buffer is multibyte, unibyte strings are converted
to multibyte for insertion (see `unibyte-char-to-multibyte').
If the current buffer is unibyte, multibyte strings are converted
to unibyte for insertion.

(fn &rest ARGS)Finsert-char
Insert COUNT copies of CHARACTER.

Interactively, prompt for CHARACTER using `read-char-by-name'.
You can specify CHARACTER at the prompt in one of these ways:

 - As its Unicode character name, e.g. "LATIN SMALL LETTER A".
   Completion is available; if you type a substring of the name
   preceded by an asterisk `*', Emacs shows all names which include
   that substring, not necessarily at the beginning of the name.

 - As a hexadecimal code point, e.g. 263A.  Note that code points in
   Emacs are equivalent to Unicode up to 10FFFF (which is the limit of
   the Unicode code space).

 - As a code point with a radix specified with #, e.g. #o21430
   (octal), #x2318 (hex), or #10r8984 (decimal).

When called from Lisp, CHARACTER should be an integer whose value
is valid for a character; see `characterp'.  To specify a character by
its Unicode name in calls from Lisp, use `char-from-name'.

When called interactively, COUNT is the prefix argument.  If omitted or
nil, it defaults to 1.

Inserting the character(s) relocates point and before-insertion
markers in the same ways as the function `insert'.

The optional third argument INHERIT, if non-nil, says to inherit text
properties from adjoining text, if those properties are sticky.  When
called interactively, INHERIT is t.

(fn CHARACTER &optional COUNT INHERIT)Finsert-byte
Insert COUNT (second arg) copies of BYTE (first arg).
Both arguments are required.
BYTE is a number of the range 0..255.

If BYTE is 128..255 and the current buffer is multibyte, the
corresponding eight-bit character is inserted.

Point, and before-insertion markers, are relocated as in the function `insert'.
The optional third arg INHERIT, if non-nil, says to inherit text properties
from adjoining text, if those properties are sticky.

(fn BYTE COUNT &optional INHERIT)Fbuffer-substring
Return the contents of part of the current buffer as a string.
The two arguments START and END are character positions;
they can be in either order.
The string returned is multibyte if the buffer is multibyte.

This function copies the text properties of that part of the buffer
into the result string; if you don't want the text properties,
use `buffer-substring-no-properties' instead.

(fn START END)Fbuffer-substring-no-properties
Return the characters of part of the buffer, without the text properties.
The two arguments START and END are character positions;
they can be in either order.

(fn START END)Fbuffer-string
Return the contents of the current buffer as a string.
If narrowing is in effect, this function returns only the visible part
of the buffer.

This function copies the text properties of that part of the buffer
into the result string; if you don’t want the text properties,
use `buffer-substring-no-properties' instead.

(fn)Finsert-buffer-substring
Insert before point a substring of the contents of BUFFER.
BUFFER may be a buffer or a buffer name.
Arguments START and END are character positions specifying the substring.
They default to the values of (point-min) and (point-max) in BUFFER.

Point and before-insertion markers move forward to end up after the
inserted text.
Any other markers at the point of insertion remain before the text.

If the current buffer is multibyte and BUFFER is unibyte, or vice
versa, strings are converted from unibyte to multibyte or vice versa
using `string-make-multibyte' or `string-make-unibyte', which see.

(fn BUFFER &optional START END)Fcompare-buffer-substrings
Compare two substrings of two buffers; return result as number.
Return -N if first string is less after N-1 chars, +N if first string is
greater after N-1 chars, or 0 if strings match.
The first substring is in BUFFER1 from START1 to END1 and the second
is in BUFFER2 from START2 to END2.
All arguments may be nil.  If BUFFER1 or BUFFER2 is nil, the current
buffer is used.  If START1 or START2 is nil, the value of `point-min'
in the respective buffers is used.  If END1 or END2 is nil, the value
of `point-max' in the respective buffers is used.
The value of `case-fold-search' in the current buffer
determines whether case is significant or ignored.

(fn BUFFER1 START1 END1 BUFFER2 START2 END2)Freplace-buffer-contents
Replace accessible portion of current buffer with that of SOURCE.
SOURCE can be a buffer or a string that names a buffer.
Interactively, prompt for SOURCE.

As far as possible the replacement is non-destructive, i.e. existing
buffer contents, markers, properties, and overlays in the current
buffer stay intact.

Because this function can be very slow if there is a large number of
differences between the two buffers, there are two optional arguments
mitigating this issue.

The MAX-SECS argument, if given, defines a hard limit on the time used
for comparing the buffers.  If it takes longer than MAX-SECS, the
function falls back to a plain `delete-region' and
`insert-buffer-substring'.  (Note that the checks are not performed
too evenly over time, so in some cases it may run a bit longer than
allowed).

The optional argument MAX-COSTS defines the quality of the difference
computation.  If the actual costs exceed this limit, heuristics are
used to provide a faster but suboptimal solution.  The default value
is 1000000.

This function returns t if a non-destructive replacement could be
performed.  Otherwise, i.e., if MAX-SECS was exceeded, it returns
nil.

(fn SOURCE &optional MAX-SECS MAX-COSTS)Fsubst-char-in-region
From START to END, replace FROMCHAR with TOCHAR each time it occurs.
If optional arg NOUNDO is non-nil, don't record this change for undo
and don't mark the buffer as really changed.
Both characters must have the same length of multi-byte form.

(fn START END FROMCHAR TOCHAR &optional NOUNDO)Ftranslate-region-internal
Internal use only.
From START to END, translate characters according to TABLE.
TABLE is a string or a char-table; the Nth character in it is the
mapping for the character with code N.
It returns the number of characters changed.

(fn START END TABLE)Fdelete-region
Delete the text between START and END.
If called interactively, delete the region between point and mark.
This command deletes buffer text without modifying the kill ring.

(fn START END)Fdelete-and-extract-region
Delete the text between START and END and return it.

(fn START END)Fwiden
Remove restrictions (narrowing) from current buffer.

This allows the buffer's full text to be seen and edited.

However, when restrictions have been set by `with-restriction' with a
label, `widen' restores the narrowing limits set by `with-restriction'.
To gain access to other portions of the buffer, use
`without-restriction' with the same label.

(fn)Fnarrow-to-region
Restrict editing in this buffer to the current region.
The rest of the text becomes temporarily invisible and untouchable
but is not deleted; if you save the buffer in a file, the invisible
text is included in the file.  \[widen] makes all visible again.
See also `save-restriction'.

When calling from Lisp, pass two arguments START and END:
positions (integers or markers) bounding the text that should
remain visible.

However, when restrictions have been set by `with-restriction' with a
label, `narrow-to-region' can be used only within the limits of these
restrictions.  If the START or END arguments are outside these limits,
the corresponding limit set by `with-restriction' is used instead of the
argument.  To gain access to other portions of the buffer, use
`without-restriction' with the same label.

(fn START END)Finternal--labeled-narrow-to-region
Restrict this buffer to START-END, and label the restriction with LABEL.

This is an internal function used by `with-restriction'.

(fn START END LABEL)Finternal--labeled-widen
Remove the current restriction if it is labeled with LABEL, and widen.

This is an internal function used by `without-restriction'.

(fn LABEL)Fsave-restriction
Execute BODY, saving and restoring current buffer's restrictions.
The buffer's restrictions make parts of the beginning and end invisible.
(They are set up with `narrow-to-region' and eliminated with `widen'.)
This special form, `save-restriction', saves the current buffer's
restrictions, including those that were set by `with-restriction' with a
label argument, when it is entered, and restores them when it is exited.
So any `narrow-to-region' within BODY lasts only until the end of the form.
The old restrictions settings are restored even in case of abnormal exit
(throw or error).

The value returned is the value of the last form in BODY.

Note: if you are using both `save-excursion' and `save-restriction',
use `save-excursion' outermost:
    (save-excursion (save-restriction ...))

(fn &rest BODY)Fngettext
Return the translation of MSGID (plural MSGID-PLURAL) depending on N.
MSGID is the singular form of the string to be converted;
use it as the key for the search in the translation catalog.
MSGID-PLURAL is the plural form.  Use N to select the proper translation.
If no message catalog is found, MSGID is returned if N is equal to 1,
otherwise MSGID-PLURAL.

(fn MSGID MSGID-PLURAL N)Fmessage
Display a message at the bottom of the screen.
The message also goes into the `*Messages*' buffer, if `message-log-max'
is non-nil.  (In keyboard macros, that's all it does.)
Return the message.

In batch mode, the message is printed to the standard error stream,
followed by a newline.

If the variable `inhibit-message' is non-nil, the message is not
displayed, only logged in the `*Messages*' buffer.

The first argument is a format control string, and the rest are data
to be formatted under control of the string.  Percent sign (%), grave
accent (\=`) and apostrophe (\=') are special in the format; see
`format-message' for details.  To display STRING without special
treatment, use (message "%s" STRING).

If the first argument is nil or the empty string, the function clears
any existing message; this lets the minibuffer contents show.  See
also `current-message'.

(fn FORMAT-STRING &rest ARGS)Fmessage-box
Display a message, in a dialog box if possible.
If a dialog box is not available, use the echo area.
The first argument is a format control string, and the rest are data
to be formatted under control of the string.  See `format-message' for
details.

If the first argument is nil or the empty string, clear any existing
message; let the minibuffer contents show.

(fn FORMAT-STRING &rest ARGS)Fmessage-or-box
Display a message in a dialog box or in the echo area.
If this command was invoked with the mouse, use a dialog box if
`use-dialog-box' is non-nil.
Otherwise, use the echo area.
The first argument is a format control string, and the rest are data
to be formatted under control of the string.  See `format-message' for
details.

If the first argument is nil or the empty string, clear any existing
message; let the minibuffer contents show.

(fn FORMAT-STRING &rest ARGS)Fcurrent-message
Return the string currently displayed in the echo area, or nil if none.

(fn)Fpropertize
Return a copy of STRING with text properties added.
First argument is the string to copy.
Remaining arguments form a sequence of PROPERTY VALUE pairs for text
properties to add to the result.

See Info node `(elisp) Text Properties' for more information.

(fn STRING &rest PROPERTIES)Fformat
Format a string out of a format-string and arguments.
The first argument is a format control string.
The other arguments are substituted into it to make the result, a string.

The format control string may contain %-sequences meaning to substitute
the next available argument, or the argument explicitly specified:

%s means produce a string argument.  Actually, produces any object with `princ'.
%d means produce as signed number in decimal.
%o means produce a number in octal.
%x means produce a number in hex.
%X is like %x, but uses upper case.
%e means produce a number in exponential notation.
%f means produce a number in decimal-point notation.
%g means produce a number in exponential notation if the exponent would be
   less than -4 or greater than or equal to the precision (default: 6);
   otherwise it produces in decimal-point notation.
%c means produce a number as a single character.
%S means produce any object as an s-expression (using `prin1').

The argument used for %d, %o, %x, %e, %f, %g or %c must be a number.
%o, %x, and %X treat arguments as unsigned if `binary-as-unsigned' is t
  (this is experimental; email 32252@debbugs.gnu.org if you need it).
Use %% to put a single % into the output.

A %-sequence other than %% may contain optional field number, flag,
width, and precision specifiers, as follows:

  %<field><flags><width><precision>character

where field is [0-9]+ followed by a literal dollar "$", flags is
[+ #0-]+, width is [0-9]+, and precision is a literal period "."
followed by [0-9]+.

If a %-sequence is numbered with a field with positive value N, the
Nth argument is substituted instead of the next one.  A format can
contain either numbered or unnumbered %-sequences but not both, except
that %% can be mixed with numbered %-sequences.

The + flag character inserts a + before any nonnegative number, while a
space inserts a space before any nonnegative number; these flags
affect only numeric %-sequences, and the + flag takes precedence.
The - and 0 flags affect the width specifier, as described below.

The # flag means to use an alternate display form for %o, %x, %X, %e,
%f, and %g sequences: for %o, it ensures that the result begins with
"0"; for %x and %X, it prefixes nonzero results with "0x" or "0X";
for %e and %f, it causes a decimal point to be included even if the
precision is zero; for %g, it causes a decimal point to be
included even if the precision is zero, and also forces trailing
zeros after the decimal point to be left in place.

The width specifier supplies a lower limit for the length of the
produced representation.  The padding, if any, normally goes on the
left, but it goes on the right if the - flag is present.  The padding
character is normally a space, but it is 0 if the 0 flag is present.
The 0 flag is ignored if the - flag is present, or the format sequence
is something other than %d, %o, %x, %e, %f, and %g.

For %e and %f sequences, the number after the "." in the precision
specifier says how many decimal places to show; if zero, the decimal
point itself is omitted.  For %g, the precision specifies how many
significant digits to produce; zero or omitted are treated as 1.
For %s and %S, the precision specifier truncates the string to the
given width.

Text properties, if any, are copied from the format-string to the
produced text.

(fn STRING &rest OBJECTS)Fformat-message
Format a string out of a format-string and arguments.
The first argument is a format control string.
The other arguments are substituted into it to make the result, a string.

This acts like `format', except it also replaces each grave accent (\=`)
by a left quote, and each apostrophe (\=') by a right quote.  The left
and right quote replacement characters are specified by
`text-quoting-style'.

(fn STRING &rest OBJECTS)Fchar-equal
Return t if two characters match, optionally ignoring case.
Both arguments must be characters (i.e. integers).
Case is ignored if `case-fold-search' is non-nil in the current buffer.

(fn C1 C2)Ftranspose-regions
Transpose region STARTR1 to ENDR1 with STARTR2 to ENDR2.
The regions should not be overlapping, because the size of the buffer is
never changed in a transposition.

Optional fifth arg LEAVE-MARKERS, if non-nil, means don't update
any markers that happen to be located in the regions.

Transposing beyond buffer boundaries is an error.

Interactively, STARTR1 and ENDR1 are point and mark; STARTR2 and ENDR2
are the last two marks pushed to the mark ring; LEAVE-MARKERS is nil.
If a prefix argument N is given, STARTR2 and ENDR2 are the two
successive marks N entries back in the mark ring.  A negative prefix
argument instead counts forward from the oldest mark in the mark
ring.

(fn STARTR1 ENDR1 STARTR2 ENDR2 &optional LEAVE-MARKERS)Vinhibit-field-text-motion
Non-nil means text motion commands don't notice fields.Vbuffer-access-fontify-functions
List of functions called by `buffer-substring' to fontify if necessary.
Each function is called with two arguments which specify the range
of the buffer being accessed.Vbuffer-access-fontified-property
Property which (if non-nil) indicates text has been fontified.
`buffer-substring' need not call the `buffer-access-fontify-functions'
functions if all the text being accessed has this property.Vsystem-name
The host name of the machine Emacs is running on.Vuser-full-name
The full name of the user logged in.Vuser-login-name
The user's name, taken from environment variables if possible.Vuser-real-login-name
The user's name, based upon the real uid only.Voperating-system-release
The kernel version of the operating system on which Emacs is running.
The value is a string.  It can also be nil if Emacs doesn't
know how to get the kernel version on the underlying OS.Vbinary-as-unsigned
Non-nil means `format' %x and %o treat integers as unsigned.
This has machine-dependent results.  Nil means to treat integers as
signed, which is portable and is the default; for example, if N is a
negative integer, (read (format "#x%x" N)) returns N only when this
variable is nil.

This variable is experimental; email 32252@debbugs.gnu.org if you need
it to be non-nil.Scallint.o
Finteractive
Specify a way of parsing arguments for interactive use of a function.
For example, write
 (defun foo (arg buf) "Doc string" (interactive "P\nbbuffer: ") .... )
 to make ARG be the raw prefix argument, and set BUF to an existing buffer,
 when `foo' is called as a command.

The "call" to `interactive' is actually a declaration rather than a
 function; it tells `call-interactively' how to read arguments to pass
 to the function.  When actually called, `interactive' just returns
 nil.

Usually the argument of `interactive' is a string containing a code
 letter followed optionally by a prompt.  (Some code letters do not
 use I/O to get the argument and do not use prompts.)  To pass several
 arguments to the command, concatenate the individual strings,
 separating them by newline characters.

Prompts are passed to `format', and may use %s escapes to print the
 arguments that have already been read.

If the argument is not a string, it is evaluated to get a list of
 arguments to pass to the command.

Just `(interactive)' means pass no arguments to the command when
 calling interactively.

Code letters available are:
a -- Function name: symbol with a function definition.
b -- Name of existing buffer.
B -- Name of buffer, possibly nonexistent.
c -- Character (no input method is used).
C -- Command name: symbol with interactive function definition.
d -- Value of point as number.  Does not do I/O.
D -- Directory name.
e -- Parameterized event (i.e., one that's a list) that invoked this command.
     If used more than once, the Nth `e' returns the Nth parameterized event.
     This skips events that are integers or symbols.
f -- Existing file name.
F -- Possibly nonexistent file name.
G -- Possibly nonexistent file name, defaulting to just directory name.
i -- Ignored, i.e. always nil.  Does not do I/O.
k -- Key sequence (downcase the last event if needed to get a definition).
K -- Key sequence to be redefined (do not downcase the last event).
m -- Value of mark as number.  Does not do I/O.
M -- Any string.  Inherits the current input method.
n -- Number read using minibuffer.
N -- Numeric prefix arg, or if none, do like code `n'.
p -- Prefix arg converted to number.  Does not do I/O.
P -- Prefix arg in raw form.  Does not do I/O.
r -- Region: point and mark as 2 numeric args, smallest first.  Does no I/O.
s -- Any string.  Does not inherit the current input method.
S -- Any symbol.
U -- Mouse up event discarded by a previous k or K argument.
v -- Variable name: symbol that is `custom-variable-p'.
x -- Lisp expression read but not evaluated.
X -- Lisp expression read and evaluated.
z -- Coding system.
Z -- Coding system, nil if no prefix arg.

In addition, if the string begins with `*', an error is signaled if
  the buffer is read-only.
If `@' appears at the beginning of the string, and if the key sequence
 used to invoke the command includes any mouse events, then the window
 associated with the first of those events is selected before the
 command is run.
If the string begins with `^' and `shift-select-mode' is non-nil,
 Emacs first calls the function `handle-shift-selection'.
You may use `@', `*', and `^' together.  They are processed in the
 order that they appear, before reading any arguments.

If MODES is present, it should be one or more mode names (symbols)
for which this command is applicable.  This is so that `M-x TAB'
will be able to exclude this command from the list of completion
candidates if the current buffer's mode doesn't match the list.
Which commands are excluded from the list of completion
candidates based on this information is controlled by the value
of `read-extended-command-predicate', which see.

(fn &optional ARG-DESCRIPTOR &rest MODES)Ffuncall-interactively
Like `funcall' but marks the call as interactive.
I.e. arrange that within the called function `called-interactively-p' will
return non-nil.

(fn FUNCTION &rest ARGUMENTS)Fcall-interactively
Call FUNCTION, providing args according to its interactive calling specs.
Return the value FUNCTION returns.
The function contains a specification of how to do the argument reading.
In the case of user-defined functions, this is specified by placing a call
to the function `interactive' at the top level of the function body.
See `interactive'.

Optional second arg RECORD-FLAG non-nil
means unconditionally put this command in the variable `command-history'.
Otherwise, this is done only if an arg is read using the minibuffer.

Optional third arg KEYS, if given, specifies the sequence of events to
supply, as a vector, if FUNCTION inquires which events were used to
invoke it (via an `interactive' spec that contains, for instance, an
"e" code letter).  If KEYS is omitted or nil, the return value of
`this-command-keys-vector' is used.

(fn FUNCTION &optional RECORD-FLAG KEYS)Fprefix-numeric-value
Return numeric meaning of raw prefix argument RAW.
A raw prefix argument is what you get from `(interactive "P")'.
Its numeric meaning is what you would get from `(interactive "p")'.

(fn RAW)Vprefix-arg
The value of the prefix argument for the next editing command.
It may be a number, or the symbol `-' for just a minus sign as arg,
or a list whose car is a number for just one or more C-u's
or nil if no argument has been specified.

You cannot examine this variable to find the argument for this command
since it has been set to nil by the time you can look.
Instead, you should use the variable `current-prefix-arg', although
normally commands can get this prefix argument with (interactive "P").Vlast-prefix-arg
The value of the prefix argument for the previous editing command.
See `prefix-arg' for the meaning of the value.Vcurrent-prefix-arg
The value of the prefix argument for this editing command.
It may be a number, or the symbol `-' for just a minus sign as arg,
or a list whose car is a number for just one or more C-u's
or nil if no argument has been specified.
This is what `(interactive "P")' returns.Vcommand-history
List of recent commands that read arguments from terminal.
Each command is represented as a form to evaluate.

Maximum length of the history list is determined by the value
of `history-length', which see.Vcommand-debug-status
Debugging status of current interactive command.
Bound each time `call-interactively' is called;
may be set by the debugger as a reminder for itself.Vmark-even-if-inactive
Non-nil means you can use the mark even when inactive.
This option makes a difference in Transient Mark mode.
When the option is non-nil, deactivation of the mark
turns off region highlighting, but commands that use the mark
behave as if the mark were still active.Vmouse-leave-buffer-hook
Hook run when the user mouse-clicks in a window.
It can be run both before and after switching windows, or even when
not actually switching windows.

Its purpose is to give temporary modes such as Isearch mode
a way to turn themselves off when a mouse command switches windows.Vinhibit-mouse-event-check
Whether the interactive spec "e" requires a mouse gesture event.
If non-nil, `(interactive "e")' doesn't signal an error when the command
was invoked by an input event that is not a mouse gesture: a click, a drag,
etc.  To create the event data when the input was some other event,
use `event-start', `event-end', and `event-click-count'.Seval.o
For
Eval args until one of them yields non-nil, then return that value.
The remaining args are not evalled at all.
If all args return nil, return nil.

(fn CONDITIONS...)Fand
Eval args until one of them yields nil, then return nil.
The remaining args are not evalled at all.
If no arg yields nil, return the last arg's value.

(fn CONDITIONS...)Fif
If COND yields non-nil, do THEN, else do ELSE...
Returns the value of THEN or the value of the last of the ELSE's.
THEN must be one expression, but ELSE... can be zero or more expressions.
If COND yields nil, and there are no ELSE's, the value is nil.

(fn COND THEN ELSE...)Fcond
Try each clause until one succeeds.
Each clause looks like (CONDITION BODY...).  CONDITION is evaluated
and, if the value is non-nil, this clause succeeds:
then the expressions in BODY are evaluated and the last one's
value is the value of the cond-form.
If a clause has one element, as in (CONDITION), then the cond-form
returns CONDITION's value, if that is non-nil.
If no clause succeeds, cond returns nil.

(fn CLAUSES...)Fprogn
Eval BODY forms sequentially and return value of last one.

(fn BODY...)Fprog1
Eval FIRST and BODY sequentially; return value from FIRST.
The value of FIRST is saved during the evaluation of the remaining args,
whose values are discarded.

(fn FIRST BODY...)Fsetq
Set each SYM to the value of its VAL.
The symbols SYM are variables; they are literal (not evaluated).
The values VAL are expressions; they are evaluated.
Thus, (setq x (1+ y)) sets `x' to the value of `(1+ y)'.
The second VAL is not computed until after the first SYM is set, and so on;
each VAL can use the new value of variables set earlier in the `setq'.
The return value of the `setq' form is the value of the last VAL.

(fn [SYM VAL]...)Fquote
Return the argument, without evaluating it.  `(quote x)' yields `x'.
Warning: `quote' does not construct its return value, but just returns
the value that was pre-constructed by the Lisp reader (see info node
`(elisp)Printed Representation').
This means that \='(a . b) is not identical to (cons \='a \='b): the former
does not cons.  Quoting should be reserved for constants that will
never be modified by side-effects, unless you like self-modifying code.
See the common pitfall in info node `(elisp)Rearrangement' for an example
of unexpected results when a quoted object is modified.

(fn ARG)Fmake-interpreted-closure
Make an interpreted closure.
ARGS should be the list of formal arguments.
BODY should be a non-empty list of forms.
ENV should be a lexical environment, like the second argument of `eval'.
IFORM if non-nil should be of the form (interactive ...).

(fn ARGS BODY ENV &optional DOCSTRING IFORM)Ffunction
Like `quote', but preferred for objects which are functions.
In byte compilation, `function' causes its argument to be handled by
the byte compiler.  Similarly, when expanding macros and expressions,
ARG can be examined and possibly expanded.  If `quote' is used
instead, this doesn't happen.

(fn ARG)Fdefvaralias
Make NEW-ALIAS a variable alias for symbol BASE-VARIABLE.
Aliased variables always have the same value; setting one sets the other.
Third arg DOCSTRING, if non-nil, is documentation for NEW-ALIAS.  If it is
omitted or nil, NEW-ALIAS gets the documentation string of BASE-VARIABLE,
or of the variable at the end of the chain of aliases, if BASE-VARIABLE is
itself an alias.  If NEW-ALIAS is bound, and BASE-VARIABLE is not,
then the value of BASE-VARIABLE is set to that of NEW-ALIAS.
The return value is BASE-VARIABLE.

If the resulting chain of variable definitions would contain a loop,
signal a `cyclic-variable-indirection' error.

(fn NEW-ALIAS BASE-VARIABLE &optional DOCSTRING)Fdefault-toplevel-value
Return SYMBOL's toplevel default value.
"Toplevel" means outside of any let binding.

(fn SYMBOL)Fset-default-toplevel-value
Set SYMBOL's toplevel default value to VALUE.
"Toplevel" means outside of any let binding.

(fn SYMBOL VALUE)Finternal--define-uninitialized-variable
Define SYMBOL as a variable, with DOC as its docstring.
This is like `defvar' and `defconst' but without affecting the variable's
value.

(fn SYMBOL &optional DOC)Fdefvar
Define SYMBOL as a variable, and return SYMBOL.
You are not required to define a variable in order to use it, but
defining it lets you supply an initial value and documentation, which
can be referred to by the Emacs help facilities and other programming
tools.

If SYMBOL's value is void and the optional argument INITVALUE is
provided, INITVALUE is evaluated and the result used to set SYMBOL's
value.  If SYMBOL is buffer-local, its default value is what is set;
buffer-local values are not affected.  If INITVALUE is missing,
SYMBOL's value is not set.

If INITVALUE is provided, the `defvar' form also declares the variable
as "special", so that it is always dynamically bound even if
`lexical-binding' is t.  If INITVALUE is missing, the form marks the
variable "special" locally (i.e., within the current
lexical scope, or the current file, if the form is at top-level),
and does nothing if `lexical-binding' is nil.

If SYMBOL is let-bound, then this form does not affect the local let
binding but the toplevel default binding instead, like
`set-toplevel-default-binding`.
(`defcustom' behaves similarly in this respect.)

The optional argument DOCSTRING is a documentation string for the
variable.

To define a user option, use `defcustom' instead of `defvar'.

To define a buffer-local variable, use `defvar-local'.

(fn SYMBOL &optional INITVALUE DOCSTRING)Fdefvar-1
Like `defvar' but as a function.
More specifically behaves like (defvar SYM 'INITVALUE DOCSTRING).

(fn SYM INITVALUE &optional DOCSTRING)Fdefconst
Define SYMBOL as a constant variable.
This declares that neither programs nor users should ever change the
value.  This constancy is not actually enforced by Emacs Lisp, but
SYMBOL is marked as a special variable so that it is never lexically
bound.

The `defconst' form always sets the value of SYMBOL to the result of
evalling INITVALUE.  If SYMBOL is buffer-local, its default value is
what is set; buffer-local values are not affected.  If SYMBOL has a
local binding, then this form sets the local binding's value.
However, you should normally not make local bindings for variables
defined with this form.

The optional DOCSTRING specifies the variable's documentation string.

(fn SYMBOL INITVALUE [DOCSTRING])Fdefconst-1
Like `defconst' but as a function.
More specifically, behaves like (defconst SYM 'INITVALUE DOCSTRING).

(fn SYM INITVALUE &optional DOCSTRING)Finternal-make-var-non-special
Internal function.

(fn SYMBOL)Flet*
Bind variables according to VARLIST then eval BODY.
The value of the last form in BODY is returned.
Each element of VARLIST is a symbol (which is bound to nil)
or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM).
Each VALUEFORM can refer to the symbols already bound by this VARLIST.

(fn VARLIST BODY...)Flet
Bind variables according to VARLIST then eval BODY.
The value of the last form in BODY is returned.
Each element of VARLIST is a symbol (which is bound to nil)
or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM).
All the VALUEFORMs are evalled before any symbols are bound.

(fn VARLIST BODY...)Fwhile
If TEST yields non-nil, eval BODY... and repeat.
The order of execution is thus TEST, BODY, TEST, BODY and so on
until TEST returns nil.

The value of a `while' form is always nil.

(fn TEST BODY...)Ffuncall-with-delayed-message
Like `funcall', but display MESSAGE if FUNCTION takes longer than TIMEOUT.
TIMEOUT is a number of seconds, and can be an integer or a floating
point number.

If FUNCTION takes less time to execute than TIMEOUT seconds, MESSAGE
is not displayed.

(fn TIMEOUT MESSAGE FUNCTION)Fmacroexpand
Return result of expanding macros at top level of FORM.
If FORM is not a macro call, it is returned unchanged.
Otherwise, the macro is expanded and the expansion is considered
in place of FORM.  When a non-macro-call results, it is returned.

The second optional arg ENVIRONMENT specifies an environment of macro
definitions to shadow the loaded ones for use in file byte-compilation.

(fn FORM &optional ENVIRONMENT)Fcatch
Eval BODY allowing nonlocal exits using `throw'.
TAG is evalled to get the tag to use; it must not be nil.

Then the BODY is executed.
Within BODY, a call to `throw' with the same TAG exits BODY and this `catch'.
If no throw happens, `catch' returns the value of the last BODY form.
If a throw happens, it specifies the value to return from `catch'.

(fn TAG BODY...)Fthrow
Throw to the catch for TAG and return VALUE from it.
Both TAG and VALUE are evalled.

(fn TAG VALUE)Funwind-protect
Do BODYFORM, protecting with UNWINDFORMS.
If BODYFORM completes normally, its value is returned
after executing the UNWINDFORMS.
If BODYFORM exits nonlocally, the UNWINDFORMS are executed anyway.

(fn BODYFORM UNWINDFORMS...)Fcondition-case
Regain control when an error is signaled.
Executes BODYFORM and returns its value if no error happens.
Each element of HANDLERS looks like (CONDITION-NAME BODY...)
or (:success BODY...), where the BODY is made of Lisp expressions.

A handler is applicable to an error if CONDITION-NAME is one of the
error's condition names.  Handlers may also apply when non-error
symbols are signaled (e.g., `quit').  A CONDITION-NAME of t applies to
any symbol, including non-error symbols.  If multiple handlers are
applicable, only the first one runs.

The car of a handler may be a list of condition names instead of a
single condition name; then it handles all of them.  If the special
condition name `debug' is present in this list, it allows another
condition in the list to run the debugger if `debug-on-error' and the
other usual mechanisms say it should (otherwise, `condition-case'
suppresses the debugger).

When a handler handles an error, control returns to the `condition-case'
and it executes the handler's BODY...
with VAR bound to (ERROR-SYMBOL . SIGNAL-DATA) from the error.
(If VAR is nil, the handler can't access that information.)
Then the value of the last BODY form is returned from the `condition-case'
expression.

The special handler (:success BODY...) is invoked if BODYFORM terminated
without signaling an error.  BODY is then evaluated with VAR bound to
the value returned by BODYFORM.

See also the function `signal' for more info.

(fn VAR BODYFORM &rest HANDLERS)Fhandler-bind-1
Set up error handlers around execution of BODYFUN.
BODYFUN should be a function and it is called with no arguments.
CONDITIONS should be a list of condition names (symbols).
When an error is signaled during execution of BODYFUN, if that
error matches one of CONDITIONS, then the associated HANDLER is
called with the error as argument.
HANDLER should either transfer the control via a non-local exit,
or return normally.
If it returns normally, the search for an error handler continues
from where it left off.

(fn BODYFUN [CONDITIONS HANDLER]...)Fsignal
Signal an error.  Args are ERROR-SYMBOL and associated DATA.
This function does not return.

When `noninteractive' is non-nil (in particular, in batch mode), an
unhandled error calls `kill-emacs', which terminates the Emacs
session with a non-zero exit code.

An error symbol is a symbol with an `error-conditions' property
that is a list of condition names.  The symbol should be non-nil.
A handler for any of those names will get to handle this signal.
The symbol `error' should normally be one of them.

DATA should be a list.  Its elements are printed as part of the error message.
See Info anchor `(elisp)Definition of signal' for some details on how this
error message is constructed.
If the signal is handled, DATA is made available to the handler.
See also the function `condition-case'.

(fn ERROR-SYMBOL DATA)Fcommandp
Non-nil if FUNCTION makes provisions for interactive calling.
This means it contains a description for how to read arguments to give it.
The value is nil for an invalid function or a symbol with no function
definition.

Interactively callable functions include strings and vectors (treated
as keyboard macros), lambda-expressions that contain a top-level call
to `interactive', autoload definitions made by `autoload' with non-nil
fourth argument, and some of the built-in functions of Lisp.

Also, a symbol satisfies `commandp' if its function definition does so.

If the optional argument FOR-CALL-INTERACTIVELY is non-nil,
then strings and vectors are not accepted.

(fn FUNCTION &optional FOR-CALL-INTERACTIVELY)Fautoload
Define FUNCTION to autoload from FILE.
FUNCTION is a symbol; FILE is a file name string to pass to `load'.

Third arg DOCSTRING is documentation for the function.

Fourth arg INTERACTIVE if non-nil says function can be called
interactively.  If INTERACTIVE is a list, it is interpreted as a list
of modes the function is applicable for.

Fifth arg TYPE indicates the type of the object:
   nil or omitted says FUNCTION is a function,
   `keymap' says FUNCTION is really a keymap, and
   `macro' or t says FUNCTION is really a macro.

Third through fifth args give info about the real definition.
They default to nil.

If FUNCTION is already defined other than as an autoload,
this does nothing and returns nil.

(fn FUNCTION FILE &optional DOCSTRING INTERACTIVE TYPE)Fautoload-do-load
Load FUNDEF which should be an autoload.
If non-nil, FUNNAME should be the symbol whose function value is FUNDEF,
in which case the function returns the new autoloaded function value.
If equal to `macro', MACRO-ONLY specifies that FUNDEF should only be loaded if
it defines a macro.

(fn FUNDEF &optional FUNNAME MACRO-ONLY)Feval
Evaluate FORM and return its value.
If LEXICAL is `t', evaluate using lexical binding by default.
This is the recommended value.

If absent or `nil', use dynamic scoping only.

LEXICAL can also represent an actual lexical environment; see the Info
node `(elisp)Eval' for details.

(fn FORM &optional LEXICAL)Fapply
Call FUNCTION with our remaining args, using our last arg as list of args.
Then return the value FUNCTION returns.
With a single argument, call the argument's first element using the
other elements as args.
Thus, (apply \='+ 1 2 \='(3 4)) returns 10.

(fn FUNCTION &rest ARGUMENTS)Frun-hooks
Run each hook in HOOKS.
Each argument should be a symbol, a hook variable.
These symbols are processed in the order specified.
If a hook symbol has a non-nil value, that value may be a function
or a list of functions to be called to run the hook.
If the value is a function, it is called with no arguments.
If it is a list, the elements are called, in order, with no arguments.

Major modes should not use this function directly to run their mode
hook; they should use `run-mode-hooks' instead.

Do not use `make-local-variable' to make a hook variable buffer-local.
Instead, use `add-hook' and specify t for the LOCAL argument.

(fn &rest HOOKS)Frun-hook-with-args
Run HOOK with the specified arguments ARGS.
HOOK should be a symbol, a hook variable.  The value of HOOK
may be nil, a function, or a list of functions.  Call each
function in order with arguments ARGS.  The final return value
is unspecified.

Do not use `make-local-variable' to make a hook variable buffer-local.
Instead, use `add-hook' and specify t for the LOCAL argument.

(fn HOOK &rest ARGS)Frun-hook-with-args-until-success
Run HOOK with the specified arguments ARGS.
HOOK should be a symbol, a hook variable.  The value of HOOK
may be nil, a function, or a list of functions.  Call each
function in order with arguments ARGS, stopping at the first
one that returns non-nil, and return that value.  Otherwise (if
all functions return nil, or if there are no functions to call),
return nil.

Do not use `make-local-variable' to make a hook variable buffer-local.
Instead, use `add-hook' and specify t for the LOCAL argument.

(fn HOOK &rest ARGS)Frun-hook-with-args-until-failure
Run HOOK with the specified arguments ARGS.
HOOK should be a symbol, a hook variable.  The value of HOOK
may be nil, a function, or a list of functions.  Call each
function in order with arguments ARGS, stopping at the first
one that returns nil, and return nil.  Otherwise (if all functions
return non-nil, or if there are no functions to call), return non-nil
(do not rely on the precise return value in this case).

Do not use `make-local-variable' to make a hook variable buffer-local.
Instead, use `add-hook' and specify t for the LOCAL argument.

(fn HOOK &rest ARGS)Frun-hook-wrapped
Run HOOK, passing each function through WRAP-FUNCTION.
I.e. instead of calling each function FUN directly with arguments ARGS,
it calls WRAP-FUNCTION with arguments FUN and ARGS.
As soon as a call to WRAP-FUNCTION returns non-nil, `run-hook-wrapped'
aborts and returns that value.

(fn HOOK WRAP-FUNCTION &rest ARGS)Ffunctionp
Return t if OBJECT is a function.

An object is a function if it is callable via `funcall'; this includes
symbols with function bindings, but excludes macros and special forms.

Ordinarily return nil if OBJECT is not a function, although t might be
returned in rare cases.

(fn OBJECT)Ffuncall
Call first argument as a function, passing remaining arguments to it.
Return the value that function returns.
Thus, (funcall \='cons \='x \='y) returns (x . y).

(fn FUNCTION &rest ARGUMENTS)Ffunc-arity
Return minimum and maximum number of args allowed for FUNCTION.
FUNCTION must be a function of some kind.
The returned value is a cons cell (MIN . MAX).  MIN is the minimum number
of args.  MAX is the maximum number, or the symbol `many', for a
function with `&rest' args, or `unevalled' for a special form.

(fn FUNCTION)Fspecial-variable-p
Return non-nil if SYMBOL's global binding has been declared special.
A special variable is one that will be bound dynamically, even in a
context where binding is lexical by default.

(fn SYMBOL)Fbacktrace-debug
Set the debug-on-exit flag of eval frame LEVEL levels down to FLAG.
LEVEL and BASE specify the activation frame to use, as in `backtrace-frame'.
The debugger is entered when that frame exits, if the flag is non-nil.

(fn LEVEL FLAG &optional BASE)Fmapbacktrace
Call FUNCTION for each frame in backtrace.
If BASE is non-nil, it should be a function and iteration will start
from its nearest activation frame.
FUNCTION is called with 4 arguments: EVALD, FUNC, ARGS, and FLAGS.  If
a frame has not evaluated its arguments yet or is a special form,
EVALD is nil and ARGS is a list of forms.  If a frame has evaluated
its arguments and called its function already, EVALD is t and ARGS is
a list of values.
FLAGS is a plist of properties of the current frame: currently, the
only supported property is :debug-on-exit.  `mapbacktrace' always
returns nil.

(fn FUNCTION &optional BASE)Fbacktrace-frame--internal
Call FUNCTION on stack frame NFRAMES away from BASE.
Return the result of FUNCTION, or nil if no matching frame could be found.

(fn FUNCTION NFRAMES BASE)Fbacktrace--frames-from-thread
Return the list of backtrace frames from current execution point in THREAD.
If a frame has not evaluated the arguments yet (or is a special form),
the value of the list element is (nil FUNCTION ARG-FORMS...).
If a frame has evaluated its arguments and called its function already,
the value of the list element is (t FUNCTION ARG-VALUES...).
A &rest arg is represented as the tail of the list ARG-VALUES.
FUNCTION is whatever was supplied as car of evaluated list,
or a lambda expression for macro calls.

(fn THREAD)Fbacktrace-eval
Evaluate EXP in the context of some activation frame.
NFRAMES and BASE specify the activation frame to use, as in `backtrace-frame'.

(fn EXP NFRAMES &optional BASE)Fbacktrace--locals
Return names and values of local variables of a stack frame.
NFRAMES and BASE specify the activation frame to use, as in `backtrace-frame'.

(fn NFRAMES &optional BASE)Vmax-lisp-eval-depth
Limit on depth in `eval', `apply' and `funcall' before error.

This limit serves to catch infinite recursions for you before they cause
actual stack overflow in C, which would be fatal for Emacs.
You can safely make it considerably larger than its default value,
if that proves inconveniently small.  However, if you increase it too far,
Emacs could overflow the real C stack, and crash.Vlisp-eval-depth-reserve
Extra depth that can be allocated to handle errors.
This is the max depth that the system will add to `max-lisp-eval-depth'
when calling debuggers or `handler-bind' handlers.Vquit-flag
Non-nil causes `eval' to abort, unless `inhibit-quit' is non-nil.
If the value is t, that means do an ordinary quit.
If the value equals `throw-on-input', that means quit by throwing
to the tag specified in `throw-on-input'; it's for handling `while-no-input'.
Typing C-g sets `quit-flag' to t, regardless of `inhibit-quit',
but `inhibit-quit' non-nil prevents anything from taking notice of that.Vinhibit-quit
Non-nil inhibits C-g quitting from happening immediately.
Note that `quit-flag' will still be set by typing C-g,
so a quit will be signaled as soon as `inhibit-quit' is nil.
To prevent this happening, set `quit-flag' to nil
before making `inhibit-quit' nil.Vinhibit-debugger
Non-nil means never enter the debugger.
Normally set while the debugger is already active, to avoid recursive
invocations.Vdebug-on-error
Non-nil means enter debugger if an error is signaled.
Does not apply to errors handled by `condition-case' or those
matched by `debug-ignored-errors'.
If the value is a list, an error only means to enter the debugger
if one of its condition symbols appears in the list.
When you evaluate an expression interactively, this variable
is temporarily non-nil if `eval-expression-debug-on-error' is non-nil.
The command `toggle-debug-on-error' toggles this.
See also the variable `debug-on-quit' and `inhibit-debugger'.Vdebug-ignored-errors
List of errors for which the debugger should not be called.
Each element may be a condition-name or a regexp that matches error messages.
If any element applies to a given error, that error skips the debugger
and just returns to top level.
If you invoke Emacs with --debug-init, and want to remove some
elements from the default value of this variable, use `setq' to
change the value of the variable to a new list, rather than `delq'
to remove some errors from the list.
This overrides the variable `debug-on-error'.
It does not apply to errors handled by `condition-case'.Vdebug-on-quit
Non-nil means enter debugger if quit is signaled (C-g, for example).
Does not apply if quit is handled by a `condition-case'.Vdebug-on-next-call
Non-nil means enter debugger before next `eval', `apply' or `funcall'.Vbacktrace-on-redisplay-error
Non-nil means create a backtrace if a lisp error occurs in redisplay.
The backtrace is written to buffer *Redisplay-trace*.Vdebugger-may-continue
Non-nil means debugger may continue execution.
This is nil when the debugger is called under circumstances where it
might not be safe to continue.Vdebugger-stack-frame-as-list
Non-nil means display call stack frames as lists.Vdebugger
Function to call to invoke debugger.
If due to frame exit, arguments are `exit' and the value being returned;
 this function's value will be returned instead of that.
If due to error, arguments are `error' and a list of arguments to `signal'.
If due to `apply' or `funcall' entry, one argument, `lambda'.
If due to `eval' entry, one argument, t.
IF the desired entry point of the debugger is higher in the call stack,
it can be specified with the keyword argument `:backtrace-base', whose
format should be the same as the BASE argument of `backtrace-frame'.Vsignal-hook-function
If non-nil, this is a function for `signal' to call.
It receives the same arguments that `signal' was given.
The Edebug package uses this to regain control.Vdebug-on-signal
Non-nil means call the debugger regardless of condition handlers.
Note that `debug-on-error', `debug-on-quit' and friends
still determine whether to handle the particular condition.Vbacktrace-on-error-noninteractive
Non-nil means print backtrace on error in batch mode.
If this is nil, errors in batch mode will just print the error
message upon encountering an unhandled error, without showing
the Lisp backtrace.Vinternal-when-entered-debugger
The number of keyboard events as of last time `debugger' was called.
Used to avoid infinite loops if the debugger itself has an error.
Don't set this unless you're sure that can't happen.Vinternal-interpreter-environment
If non-nil, the current lexical environment of the lisp interpreter.
When lexical binding is not being used, this variable is nil.
A value of `(t)' indicates an empty environment, otherwise it is an
alist of active lexical bindings.Vinternal-make-interpreted-closure-function
Function to filter the env when constructing a closure.Sfloatfns.o
Facos
Return the inverse cosine of ARG.

(fn ARG)Fasin
Return the inverse sine of ARG.

(fn ARG)Fatan
Return the inverse tangent of the arguments.
If only one argument Y is given, return the inverse tangent of Y.
If two arguments Y and X are given, return the inverse tangent of Y
divided by X, i.e. the angle in radians between the vector (X, Y)
and the x-axis.

(fn Y &optional X)Fcos
Return the cosine of ARG.

(fn ARG)Fsin
Return the sine of ARG.

(fn ARG)Ftan
Return the tangent of ARG.

(fn ARG)Fisnan
Return non-nil if argument X is a NaN.

(fn X)Fcopysign
Copy sign of X2 to value of X1, and return the result.
Cause an error if X1 or X2 is not a float.

(fn X1 X2)Ffrexp
Get significand and exponent of a floating point number.
Breaks the floating point number X into its binary significand SGNFCAND
(a floating point value between 0.5 (included) and 1.0 (excluded))
and an integral exponent EXP for 2, such that:

  X = SGNFCAND * 2^EXP

The function returns the cons cell (SGNFCAND . EXP).
If X is zero, both parts (SGNFCAND and EXP) are zero.

(fn X)Fldexp
Return SGNFCAND * 2**EXPONENT, as a floating point number.
EXPONENT must be an integer.

(fn SGNFCAND EXPONENT)Fexp
Return the exponential base e of ARG.

(fn ARG)Fexpt
Return the exponential ARG1 ** ARG2.

(fn ARG1 ARG2)Flog
Return the natural logarithm of ARG.
If the optional argument BASE is given, return log ARG using that base.

(fn ARG &optional BASE)Fsqrt
Return the square root of ARG.

(fn ARG)Fabs
Return the absolute value of ARG.

(fn ARG)Ffloat
Return the floating point number equal to ARG.

(fn ARG)Flogb
Returns largest integer <= the base 2 log of the magnitude of ARG.
This is the same as the exponent of a float.

(fn ARG)Fceiling
Return the smallest integer no less than ARG.
This rounds the value towards +inf.
With optional DIVISOR, return the smallest integer no less than ARG/DIVISOR.

(fn ARG &optional DIVISOR)Ffloor
Return the largest integer no greater than ARG.
This rounds the value towards -inf.
With optional DIVISOR, return the largest integer no greater than ARG/DIVISOR.

(fn ARG &optional DIVISOR)Fround
Return the nearest integer to ARG.
With optional DIVISOR, return the nearest integer to ARG/DIVISOR.

Rounding a value equidistant between two integers may choose the
integer closer to zero, or it may prefer an even integer, depending on
your machine.  For example, (round 2.5) can return 3 on some
systems, but 2 on others.

(fn ARG &optional DIVISOR)Ftruncate
Truncate a floating point number to an int.
Rounds ARG toward zero.
With optional DIVISOR, truncate ARG/DIVISOR.

(fn ARG &optional DIVISOR)Ffceiling
Return the smallest integer no less than ARG, as a float.
(Round toward +inf.)

(fn ARG)Fffloor
Return the largest integer no greater than ARG, as a float.
(Round toward -inf.)

(fn ARG)Ffround
Return the nearest integer to ARG, as a float.

(fn ARG)Fftruncate
Truncate a floating point number to an integral float value.
(Round toward zero.)

(fn ARG)Sfns.o
Fidentity
Return the ARGUMENT unchanged.

(fn ARGUMENT)Frandom
Return a pseudo-random integer.
By default, return a fixnum; all fixnums are equally likely.
With positive integer LIMIT, return random integer in interval [0,LIMIT).
With argument t, set the random number seed from the system's entropy
pool if available, otherwise from less-random volatile data such as the time.
With a string argument, set the seed based on the string's contents.

See Info node `(elisp)Random Numbers' for more details.

(fn &optional LIMIT)Flength
Return the length of vector, list or string SEQUENCE.
A byte-code function object is also allowed.

If the string contains multibyte characters, this is not necessarily
the number of bytes in the string; it is the number of characters.
To get the number of bytes, use `string-bytes'.

If the length of a list is being computed to compare to a (small)
number, the `length<', `length>' and `length=' functions may be more
efficient.

(fn SEQUENCE)Fsafe-length
Return the length of a list, but avoid error or infinite loop.
This function never gets an error.  If LIST is not really a list,
it returns 0.  If LIST is circular, it returns an integer that is at
least the number of distinct elements.

(fn LIST)Flength<
Return non-nil if SEQUENCE is shorter than LENGTH.
See `length' for allowed values of SEQUENCE and how elements are
counted.

(fn SEQUENCE LENGTH)Flength>
Return non-nil if SEQUENCE is longer than LENGTH.
See `length' for allowed values of SEQUENCE and how elements are
counted.

(fn SEQUENCE LENGTH)Flength=
Return non-nil if SEQUENCE has length equal to LENGTH.
See `length' for allowed values of SEQUENCE and how elements are
counted.

(fn SEQUENCE LENGTH)Fproper-list-p
Return OBJECT's length if it is a proper list, nil otherwise.
A proper list is neither circular nor dotted (i.e., its last cdr is nil).

(fn OBJECT)Fstring-bytes
Return the number of bytes in STRING.
If STRING is multibyte, this may be greater than the length of STRING.

(fn STRING)Fstring-distance
Return Levenshtein distance between STRING1 and STRING2.
The distance is the number of deletions, insertions, and substitutions
required to transform STRING1 into STRING2.
If BYTECOMPARE is nil or omitted, compute distance in terms of characters.
If BYTECOMPARE is non-nil, compute distance in terms of bytes.
Letter-case is significant, but text properties are ignored.

(fn STRING1 STRING2 &optional BYTECOMPARE)Fstring-equal
Return t if two strings have identical contents.
Case is significant, but text properties are ignored.
Symbols are also allowed; their print names are used instead.

See also `string-equal-ignore-case'.

(fn S1 S2)Fcompare-strings
Compare the contents of two strings, converting to multibyte if needed.
The arguments START1, END1, START2, and END2, if non-nil, are
positions specifying which parts of STR1 or STR2 to compare.  In
string STR1, compare the part between START1 (inclusive) and END1
(exclusive).  If START1 is nil, it defaults to 0, the beginning of
the string; if END1 is nil, it defaults to the length of the string.
Likewise, in string STR2, compare the part between START2 and END2.
Like in `substring', negative values are counted from the end.

The strings are compared by the numeric values of their characters.
For instance, STR1 is "less than" STR2 if its first differing
character has a smaller numeric value.  If IGNORE-CASE is non-nil,
characters are converted to upper-case before comparing them.  Unibyte
strings are converted to multibyte for comparison.

The value is t if the strings (or specified portions) match.
If string STR1 is less, the value is a negative number N;
  - 1 - N is the number of characters that match at the beginning.
If string STR1 is greater, the value is a positive number N;
  N - 1 is the number of characters that match at the beginning.

(fn STR1 START1 END1 STR2 START2 END2 &optional IGNORE-CASE)Fstring-lessp
Return non-nil if STRING1 is less than STRING2 in lexicographic order.
Case is significant.
Symbols are also allowed; their print names are used instead.

(fn STRING1 STRING2)Fstring-version-lessp
Return non-nil if S1 is less than S2, as version strings.

This function compares version strings S1 and S2:
   1) By prefix lexicographically.
   2) Then by version (similarly to version comparison of Debian's dpkg).
      Leading zeros in version numbers are ignored.
   3) If both prefix and version are equal, compare as ordinary strings.

For example, "foo2.png" compares less than "foo12.png".
Case is significant.
Symbols are also allowed; their print names are used instead.

(fn STRING1 STRING2)Fstring-collate-lessp
Return t if first arg string is less than second in collation order.
Symbols are also allowed; their print names are used instead.

This function obeys the conventions for collation order in your
locale settings.  For example, punctuation and whitespace characters
might be considered less significant for sorting:

(sort \='("11" "12" "1 1" "1 2" "1.1" "1.2") \='string-collate-lessp)
  => ("11" "1 1" "1.1" "12" "1 2" "1.2")

The optional argument LOCALE, a string, overrides the setting of your
current locale identifier for collation.  The value is system
dependent; a LOCALE "en_US.UTF-8" is applicable on POSIX systems,
while it would be, e.g., "enu_USA.1252" on MS-Windows systems.

If IGNORE-CASE is non-nil, characters are converted to lower-case
before comparing them.

To emulate Unicode-compliant collation on MS-Windows systems,
bind `w32-collate-ignore-punctuation' to a non-nil value, since
the codeset part of the locale cannot be "UTF-8" on MS-Windows.

Some operating systems do not implement correct collation (in specific
locale environments or at all).  Then, this functions falls back to
case-sensitive `string-lessp' and IGNORE-CASE argument is ignored.

(fn S1 S2 &optional LOCALE IGNORE-CASE)Fstring-collate-equalp
Return t if two strings have identical contents.
Symbols are also allowed; their print names are used instead.

This function obeys the conventions for collation order in your locale
settings.  For example, characters with different coding points but
the same meaning might be considered as equal, like different grave
accent Unicode characters:

(string-collate-equalp (string ?\uFF40) (string ?\u1FEF))
  => t

The optional argument LOCALE, a string, overrides the setting of your
current locale identifier for collation.  The value is system
dependent; a LOCALE "en_US.UTF-8" is applicable on POSIX systems,
while it would be "enu_USA.1252" on MS Windows systems.

If IGNORE-CASE is non-nil, characters are converted to lower-case
before comparing them.

To emulate Unicode-compliant collation on MS-Windows systems,
bind `w32-collate-ignore-punctuation' to a non-nil value, since
the codeset part of the locale cannot be "UTF-8" on MS-Windows.

If your system does not support a locale environment, this function
behaves like `string-equal', and in that case the IGNORE-CASE argument
is ignored.

Do NOT use this function to compare file names for equality.

(fn S1 S2 &optional LOCALE IGNORE-CASE)Fappend
Concatenate all the arguments and make the result a list.
The result is a list whose elements are the elements of all the arguments.
Each argument may be a list, vector or string.

All arguments except the last argument are copied.  The last argument
is just used as the tail of the new list.  If the last argument is not
a list, this results in a dotted list.

As an exception, if all the arguments except the last are nil, and the
last argument is not a list, the return value is that last argument
unaltered, not a list.

(fn &rest SEQUENCES)Fconcat
Concatenate all the arguments and make the result a string.
The result is a string whose elements are the elements of all the arguments.
Each argument may be a string or a list or vector of characters (integers).

Values of the `composition' property of the result are not guaranteed
to be `eq'.

(fn &rest SEQUENCES)Fvconcat
Concatenate all the arguments and make the result a vector.
The result is a vector whose elements are the elements of all the arguments.
Each argument may be a list, vector or string.

(fn &rest SEQUENCES)Fcopy-sequence
Return a copy of a list, vector, string, char-table or record.
The elements of a list, vector or record are not copied; they are
shared with the original.  See Info node `(elisp) Sequence Functions'
for more details about this sharing and its effects.
If the original sequence is empty, this function may return
the same empty object instead of its copy.

(fn ARG)Fstring-make-multibyte
Return the multibyte equivalent of STRING.
If STRING is unibyte and contains non-ASCII characters, the function
`unibyte-char-to-multibyte' is used to convert each unibyte character
to a multibyte character.  In this case, the returned string is a
newly created string with no text properties.  If STRING is multibyte
or entirely ASCII, it is returned unchanged.  In particular, when
STRING is unibyte and entirely ASCII, the returned string is unibyte.
(When the characters are all ASCII, Emacs primitives will treat the
string the same way whether it is unibyte or multibyte.)

(fn STRING)Fstring-make-unibyte
Return the unibyte equivalent of STRING.
Multibyte character codes above 255 are converted to unibyte
by taking just the low 8 bits of each character's code.

(fn STRING)Fstring-as-unibyte
Return a unibyte string with the same individual bytes as STRING.
If STRING is unibyte, the result is STRING itself.
Otherwise it is a newly created string, with no text properties.
If STRING is multibyte and contains a character of charset
`eight-bit', it is converted to the corresponding single byte.

(fn STRING)Fstring-as-multibyte
Return a multibyte string with the same individual bytes as STRING.
If STRING is multibyte, the result is STRING itself.
Otherwise it is a newly created string, with no text properties.

If STRING is unibyte and contains an individual 8-bit byte (i.e. not
part of a correct utf-8 sequence), it is converted to the corresponding
multibyte character of charset `eight-bit'.
See also `string-to-multibyte'.

Beware, this often doesn't really do what you think it does.
It is similar to (decode-coding-string STRING \='utf-8-emacs).
If you're not sure, whether to use `string-as-multibyte' or
`string-to-multibyte', use `string-to-multibyte'.

(fn STRING)Fstring-to-multibyte
Return a multibyte string with the same individual chars as STRING.
If STRING is multibyte, the result is STRING itself.
Otherwise it is a newly created string, with no text properties.

If STRING is unibyte and contains an 8-bit byte, it is converted to
the corresponding multibyte character of charset `eight-bit'.

This differs from `string-as-multibyte' by converting each byte of a correct
utf-8 sequence to an eight-bit character, not just bytes that don't form a
correct sequence.

(fn STRING)Fstring-to-unibyte
Return a unibyte string with the same individual chars as STRING.
If STRING is unibyte, the result is STRING itself.
Otherwise it is a newly created string, with no text properties,
where each `eight-bit' character is converted to the corresponding byte.
If STRING contains a non-ASCII, non-`eight-bit' character,
an error is signaled.

(fn STRING)Fcopy-alist
Return a copy of ALIST.
This is an alist which represents the same mapping from objects to objects,
but does not share the alist structure with ALIST.
The objects mapped (cars and cdrs of elements of the alist)
are shared, however.
Elements of ALIST that are not conses are also shared.

(fn ALIST)Fsubstring
Return a new string whose contents are a substring of STRING.
The returned string consists of the characters between index FROM
(inclusive) and index TO (exclusive) of STRING.  FROM and TO are
zero-indexed: 0 means the first character of STRING.  Negative values
are counted from the end of STRING.  If TO is nil, the substring runs
to the end of STRING.

The STRING argument may also be a vector.  In that case, the return
value is a new vector that contains the elements between index FROM
(inclusive) and index TO (exclusive) of that vector argument.

With one argument, just copy STRING (with properties, if any).

(fn STRING &optional FROM TO)Fsubstring-no-properties
Return a substring of STRING, without text properties.
It starts at index FROM and ends before TO.
TO may be nil or omitted; then the substring runs to the end of STRING.
If FROM is nil or omitted, the substring starts at the beginning of STRING.
If FROM or TO is negative, it counts from the end.

With one argument, just copy STRING without its properties.

(fn STRING &optional FROM TO)Ftake
Return the first N elements of LIST.
If N is zero or negative, return nil.
If N is greater or equal to the length of LIST, return LIST (or a copy).

(fn N LIST)Fntake
Modify LIST to keep only the first N elements.
If N is zero or negative, return nil.
If N is greater or equal to the length of LIST, return LIST unmodified.
Otherwise, return LIST after truncating it.

(fn N LIST)Fnthcdr
Take cdr N times on LIST, return the result.

(fn N LIST)Fnth
Return the Nth element of LIST.
N counts from zero.  If LIST is not that long, nil is returned.

(fn N LIST)Felt
Return element of SEQUENCE at index N.

(fn SEQUENCE N)Fmember
Return non-nil if ELT is an element of LIST.  Comparison done with `equal'.
The value is actually the tail of LIST whose car is ELT.

(fn ELT LIST)Fmemq
Return non-nil if ELT is an element of LIST.  Comparison done with `eq'.
The value is actually the tail of LIST whose car is ELT.

(fn ELT LIST)Fmemql
Return non-nil if ELT is an element of LIST.  Comparison done with `eql'.
The value is actually the tail of LIST whose car is ELT.

(fn ELT LIST)Fassq
Return non-nil if KEY is `eq' to the car of an element of ALIST.
The value is actually the first element of ALIST whose car is KEY.
Elements of ALIST that are not conses are ignored.

(fn KEY ALIST)Fassoc
Return non-nil if KEY is equal to the car of an element of ALIST.
The value is actually the first element of ALIST whose car equals KEY.

Equality is defined by the function TESTFN, defaulting to `equal'.
TESTFN is called with 2 arguments: a car of an alist element and KEY.

(fn KEY ALIST &optional TESTFN)Frassq
Return non-nil if KEY is `eq' to the cdr of an element of ALIST.
The value is actually the first element of ALIST whose cdr is KEY.

(fn KEY ALIST)Frassoc
Return non-nil if KEY is `equal' to the cdr of an element of ALIST.
The value is actually the first element of ALIST whose cdr equals KEY.

(fn KEY ALIST)Fdelq
Delete members of LIST which are `eq' to ELT, and return the result.
More precisely, this function skips any members `eq' to ELT at the
front of LIST, then removes members `eq' to ELT from the remaining
sublist by modifying its list structure, then returns the resulting
list.

Write `(setq foo (delq element foo))' to be sure of correctly changing
the value of a list `foo'.  See also `remq', which does not modify the
argument.

(fn ELT LIST)Fdelete
Delete members of SEQ which are `equal' to ELT, and return the result.
SEQ must be a sequence (i.e. a list, a vector, or a string).
The return value is a sequence of the same type.

If SEQ is a list, this behaves like `delq', except that it compares
with `equal' instead of `eq'.  In particular, it may remove elements
by altering the list structure.

If SEQ is not a list, deletion is never performed destructively;
instead this function creates and returns a new vector or string.

Write `(setq foo (delete element foo))' to be sure of correctly
changing the value of a sequence `foo'.  See also `remove', which
does not modify the argument.

(fn ELT SEQ)Fnreverse
Reverse order of items in a list, vector or string SEQ.
If SEQ is a list, it should be nil-terminated.
This function may destructively modify SEQ to produce the value.

(fn SEQ)Freverse
Return the reversed copy of list, vector, or string SEQ.
See also the function `nreverse', which is used more often.

(fn SEQ)Fsort
Sort SEQ, stably, and return the sorted sequence.
SEQ should be a list or vector.
Optional arguments are specified as keyword/argument pairs.  The following
arguments are defined:

:key FUNC -- FUNC is a function that takes a single element from SEQ and
  returns the key value to be used in comparison.  If absent or nil,
  `identity' is used.

:lessp FUNC -- FUNC is a function that takes two arguments and returns
  non-nil if the first element should come before the second.
  If absent or nil, `value<' is used.

:reverse BOOL -- if BOOL is non-nil, the sorting order implied by FUNC is
  reversed.  This does not affect stability: equal elements still retain
  their order in the input sequence.

:in-place BOOL -- if BOOL is non-nil, SEQ is sorted in-place and returned.
  Otherwise, a sorted copy of SEQ is returned and SEQ remains unmodified;
  this is the default.

For compatibility, the calling convention (sort SEQ LESSP) can also be used;
in this case, sorting is always done in-place.

(fn SEQ &key KEY LESSP REVERSE IN-PLACE)Fplist-get
Extract a value from a property list.
PLIST is a property list, which is a list of the form
(PROP1 VALUE1 PROP2 VALUE2...).

This function returns the value corresponding to the given PROP, or
nil if PROP is not one of the properties on the list.  The comparison
with PROP is done using PREDICATE, which defaults to `eq'.

This function doesn't signal an error if PLIST is invalid.

(fn PLIST PROP &optional PREDICATE)Fget
Return the value of SYMBOL's PROPNAME property.
This is the last value stored with `(put SYMBOL PROPNAME VALUE)'.

(fn SYMBOL PROPNAME)Fplist-put
Change value in PLIST of PROP to VAL.
PLIST is a property list, which is a list of the form
(PROP1 VALUE1 PROP2 VALUE2 ...).

The comparison with PROP is done using PREDICATE, which defaults to `eq'.

If PROP is already a property on the list, its value is set to VAL,
otherwise the new PROP VAL pair is added.  The new plist is returned;
use `(setq x (plist-put x prop val))' to be sure to use the new value.
The PLIST is modified by side effects.

(fn PLIST PROP VAL &optional PREDICATE)Fput
Store SYMBOL's PROPNAME property with value VALUE.
It can be retrieved with `(get SYMBOL PROPNAME)'.

(fn SYMBOL PROPNAME VALUE)Fplist-member
Return non-nil if PLIST has the property PROP.
PLIST is a property list, which is a list of the form
(PROP1 VALUE1 PROP2 VALUE2 ...).

The comparison with PROP is done using PREDICATE, which defaults to
`eq'.

Unlike `plist-get', this allows you to distinguish between a missing
property and a property with the value nil.
The value is actually the tail of PLIST whose car is PROP.

(fn PLIST PROP &optional PREDICATE)Feql
Return t if the two args are `eq' or are indistinguishable numbers.
Integers with the same value are `eql'.
Floating-point values with the same sign, exponent and fraction are `eql'.
This differs from numeric comparison: (eql 0.0 -0.0) returns nil and
(eql 0.0e+NaN 0.0e+NaN) returns t, whereas `=' does the opposite.

(fn OBJ1 OBJ2)Fequal
Return t if two Lisp objects have similar structure and contents.
They must have the same data type.
Conses are compared by comparing the cars and the cdrs.
Vectors and strings are compared element by element.
Numbers are compared via `eql', so integers do not equal floats.
(Use `=' if you want integers and floats to be able to be equal.)
Symbols must match exactly.

(fn O1 O2)Fequal-including-properties
Return t if two Lisp objects have similar structure and contents.
This is like `equal' except that it compares the text properties
of strings.  (`equal' ignores text properties.)

(fn O1 O2)Fvalue<
Return non-nil if A precedes B in standard value order.
A and B must have the same basic type.
Numbers are compared with `<'.
Strings and symbols are compared with `string-lessp'.
Lists, vectors, bool-vectors and records are compared lexicographically.
Markers are compared lexicographically by buffer and position.
Buffers and processes are compared by name.
Other types are considered unordered and the return value will be `nil'.

(fn A B)Ffillarray
Store each element of ARRAY with ITEM.
ARRAY is a vector, string, char-table, or bool-vector.

(fn ARRAY ITEM)Fclear-string
Clear the contents of STRING.
This makes STRING unibyte and may change its length.

(fn STRING)Fnconc
Concatenate any number of lists by altering them.
Only the last argument is not altered, and need not be a list.

(fn &rest LISTS)Fmapconcat
Apply FUNCTION to each element of SEQUENCE, and concat the results as strings.
In between each pair of results, stick in SEPARATOR.  Thus, " " as
  SEPARATOR results in spaces between the values returned by FUNCTION.

SEQUENCE may be a list, a vector, a bool-vector, or a string.

Optional argument SEPARATOR must be a string, a vector, or a list of
characters; nil stands for the empty string.

FUNCTION must be a function of one argument, and must return a value
  that is a sequence of characters: either a string, or a vector or
  list of numbers that are valid character codepoints; nil is treated
  as an empty string.

(fn FUNCTION SEQUENCE &optional SEPARATOR)Fmapcar
Apply FUNCTION to each element of SEQUENCE, and make a list of the results.
The result is a list just as long as SEQUENCE.
SEQUENCE may be a list, a vector, a bool-vector, or a string.

(fn FUNCTION SEQUENCE)Fmapc
Apply FUNCTION to each element of SEQUENCE for side effects only.
Unlike `mapcar', don't accumulate the results.  Return SEQUENCE.
SEQUENCE may be a list, a vector, a bool-vector, or a string.

(fn FUNCTION SEQUENCE)Fmapcan
Apply FUNCTION to each element of SEQUENCE, and concatenate
the results by altering them (using `nconc').
SEQUENCE may be a list, a vector, a bool-vector, or a string.

(fn FUNCTION SEQUENCE)Fyes-or-no-p
Ask user a yes-or-no question.
Return t if answer is yes, and nil if the answer is no.

PROMPT is the string to display to ask the question; `yes-or-no-p'
appends `yes-or-no-prompt' (default "(yes or no) ") to it.  If
PROMPT is a non-empty string, and it ends with a non-space character,
a space character will be appended to it.

The user must confirm the answer with RET, and can edit it until it
has been confirmed.

If the `use-short-answers' variable is non-nil, instead of asking for
"yes" or "no", this function will ask for "y" or "n" (and
ignore the value of `yes-or-no-prompt').

If dialog boxes are supported, this function will use a dialog box
if `use-dialog-box' is non-nil and the last input event was produced
by a mouse, or by some window-system gesture, or via a menu.

(fn PROMPT)Fload-average
Return list of 1 minute, 5 minute and 15 minute load averages.

Each of the three load averages is multiplied by 100, then converted
to integer.

When USE-FLOATS is non-nil, floats will be used instead of integers.
These floats are not multiplied by 100.

If the 5-minute or 15-minute load averages are not available, return a
shortened list, containing only those averages which are available.

An error is thrown if the load average can't be obtained.  In some
cases making it work would require Emacs being installed setuid or
setgid so that it can read kernel information, and that usually isn't
advisable.

(fn &optional USE-FLOATS)Ffeaturep
Return t if FEATURE is present in this Emacs.

Use this to conditionalize execution of lisp code based on the
presence or absence of Emacs or environment extensions.
Use `provide' to declare that a feature is available.  This function
looks at the value of the variable `features'.  The optional argument
SUBFEATURE can be used to check a specific subfeature of FEATURE.

(fn FEATURE &optional SUBFEATURE)Fprovide
Announce that FEATURE is a feature of the current Emacs.
The optional argument SUBFEATURES should be a list of symbols listing
particular subfeatures supported in this version of FEATURE.

(fn FEATURE &optional SUBFEATURES)Frequire
If FEATURE is not already loaded, load it from FILENAME.
If FEATURE is not a member of the list `features', then the feature was
not yet loaded; so load it from file FILENAME.

If FILENAME is omitted, the printname of FEATURE is used as the file
name, and `load' is called to try to load the file by that name, after
appending the suffix `.elc', `.el', or the system-dependent suffix for
dynamic module files, in that order; but the function will not try to
load the file without any suffix.  See `get-load-suffixes' for the
complete list of suffixes.

To find the file, this function searches the directories in `load-path'.

If the optional third argument NOERROR is non-nil, then, if
the file is not found, the function returns nil instead of signaling
an error.  Normally the return value is FEATURE.

The normal messages issued by `load' at start and end of loading
FILENAME are suppressed.

(fn FEATURE &optional FILENAME NOERROR)Fwidget-put
In WIDGET, set PROPERTY to VALUE.
The value can later be retrieved with `widget-get'.

(fn WIDGET PROPERTY VALUE)Fwidget-get
In WIDGET, get the value of PROPERTY.
The value could either be specified when the widget was created, or
later with `widget-put'.

(fn WIDGET PROPERTY)Fwidget-apply
Apply the value of WIDGET's PROPERTY to the widget itself.
Return the result of applying the value of PROPERTY to WIDGET.
ARGS are passed as extra arguments to the function.

(fn WIDGET PROPERTY &rest ARGS)Flocale-info
Access locale data ITEM for the current C locale, if available.
ITEM should be one of the following:

`codeset', returning the character set as a string (locale item CODESET);

`days', returning a 7-element vector of day names (locale items DAY_n);

`months', returning a 12-element vector of month names (locale items MON_n);

`paper', returning a list of 2 integers (WIDTH HEIGHT) for the default
  paper size, both measured in millimeters (locale items _NL_PAPER_WIDTH,
  _NL_PAPER_HEIGHT).

If the system can't provide such information through a call to
`nl_langinfo', or if ITEM isn't from the list above, return nil.

See also Info node `(libc)Locales'.

The data read from the system are decoded using `locale-coding-system'.

(fn ITEM)Fbase64-encode-region
Base64-encode the region between BEG and END.
The data in the region is assumed to represent bytes, not text.  If
you want to base64-encode text, the text has to be converted into data
first by using `encode-coding-region' with the appropriate coding
system first.

Return the length of the encoded data.

Optional third argument NO-LINE-BREAK means do not break long lines
into shorter lines.

(fn BEG END &optional NO-LINE-BREAK)Fbase64url-encode-region
Base64url-encode the region between BEG and END.
Return the length of the encoded text.
Optional second argument NO-PAD means do not add padding char =.

This produces the URL variant of base 64 encoding defined in RFC 4648.

(fn BEG END &optional NO-PAD)Fbase64-encode-string
Base64-encode STRING and return the result.
Optional second argument NO-LINE-BREAK means do not break long lines
into shorter lines.

(fn STRING &optional NO-LINE-BREAK)Fbase64url-encode-string
Base64url-encode STRING and return the result.
Optional second argument NO-PAD means do not add padding char =.

This produces the URL variant of base 64 encoding defined in RFC 4648.

(fn STRING &optional NO-PAD)Fbase64-decode-region
Base64-decode the region between BEG and END.
Return the length of the decoded data.

Note that after calling this function, the data in the region will
represent bytes, not text.  If you want to end up with text, you have
to call `decode-coding-region' afterwards with an appropriate coding
system.

If the region can't be decoded, signal an error and don't modify the buffer.
Optional third argument BASE64URL determines whether to use the URL variant
of the base 64 encoding, as defined in RFC 4648.
If optional fourth argument IGNORE-INVALID is non-nil invalid characters
are ignored instead of signaling an error.

(fn BEG END &optional BASE64URL IGNORE-INVALID)Fbase64-decode-string
Base64-decode STRING and return the result as a string.
Optional argument BASE64URL determines whether to use the URL variant of
the base 64 encoding, as defined in RFC 4648.
If optional third argument IGNORE-INVALID is non-nil invalid characters are
ignored instead of signaling an error.

(fn STRING &optional BASE64URL IGNORE-INVALID)Fsxhash-eq
Return an integer hash code for OBJ suitable for `eq'.
If (eq A B), then (= (sxhash-eq A) (sxhash-eq B)).

Hash codes are not guaranteed to be preserved across Emacs sessions.

(fn OBJ)Fsxhash-eql
Return an integer hash code for OBJ suitable for `eql'.
If (eql A B), then (= (sxhash-eql A) (sxhash-eql B)), but the opposite
isn't necessarily true.

Hash codes are not guaranteed to be preserved across Emacs sessions.

(fn OBJ)Fsxhash-equal
Return an integer hash code for OBJ suitable for `equal'.
If (equal A B), then (= (sxhash-equal A) (sxhash-equal B)), but the
opposite isn't necessarily true.

Hash codes are not guaranteed to be preserved across Emacs sessions.

(fn OBJ)Fsxhash-equal-including-properties
Return an integer hash code for OBJ suitable for
`equal-including-properties'.
If (sxhash-equal-including-properties A B), then
(= (sxhash-equal-including-properties A) (sxhash-equal-including-properties B)).

Hash codes are not guaranteed to be preserved across Emacs sessions.

(fn OBJ)Fmake-hash-table
Create and return a new hash table.

Arguments are specified as keyword/argument pairs.  The following
arguments are defined:

:test TEST -- TEST must be a symbol that specifies how to compare
keys.  Default is `eql'.  Predefined are the tests `eq', `eql', and
`equal'.  User-supplied test and hash functions can be specified via
`define-hash-table-test'.

:size SIZE -- A hint as to how many elements will be put in the table.
The table will always grow as needed; this argument may help performance
slightly if the size is known in advance but is never required.

:weakness WEAK -- WEAK must be one of nil, t, `key', `value',
`key-or-value', or `key-and-value'.  If WEAK is not nil, the table
returned is a weak table.  Key/value pairs are removed from a weak
hash table when there are no non-weak references pointing to their
key, value, one of key or value, or both key and value, depending on
WEAK.  WEAK t is equivalent to `key-and-value'.  Default value of WEAK
is nil.

:purecopy PURECOPY -- If PURECOPY is non-nil, the table can be copied
to pure storage when Emacs is being dumped, making the contents of the
table read only. Any further changes to purified tables will result
in an error.

The keywords arguments :rehash-threshold and :rehash-size are obsolete
and ignored.

(fn &rest KEYWORD-ARGS)Fcopy-hash-table
Return a copy of hash table TABLE.

(fn TABLE)Fhash-table-count
Return the number of elements in TABLE.

(fn TABLE)Fhash-table-rehash-size
Return the rehash size of TABLE.
This function is for compatibility only; it returns a nominal value
without current significance.

(fn TABLE)Fhash-table-rehash-threshold
Return the rehash threshold of TABLE.
This function is for compatibility only; it returns a nominal value
without current significance.

(fn TABLE)Fhash-table-size
Return the current allocation size of TABLE.

This is probably not the function that you are looking for.  To get the
number of entries in a table, use `hash-table-count' instead.

The returned value is the number of entries that TABLE can currently
hold without growing, but since hash tables grow automatically, this
number is rarely of interest.

(fn TABLE)Fhash-table-test
Return the test TABLE uses.

(fn TABLE)Fhash-table-weakness
Return the weakness of TABLE.

(fn TABLE)Fhash-table-p
Return t if OBJ is a Lisp hash table object.

(fn OBJ)Fclrhash
Clear hash table TABLE and return it.

(fn TABLE)Fgethash
Look up KEY in TABLE and return its associated value.
If KEY is not found, return DFLT which defaults to nil.

(fn KEY TABLE &optional DFLT)Fputhash
Associate KEY with VALUE in hash table TABLE.
If KEY is already present in table, replace its current value with
VALUE.  In any case, return VALUE.

(fn KEY VALUE TABLE)Fremhash
Remove KEY from TABLE.

(fn KEY TABLE)Fmaphash
Call FUNCTION for all entries in hash table TABLE.
FUNCTION is called with two arguments, KEY and VALUE.
It should not alter TABLE in any way other than using `puthash' to
set a new value for KEY, or `remhash' to remove KEY.
`maphash' always returns nil.

(fn FUNCTION TABLE)Fdefine-hash-table-test
Define a new hash table test with name NAME, a symbol.

In hash tables created with NAME specified as test, use TEST to
compare keys, and HASH for computing hash codes of keys.

TEST must be a function taking two arguments and returning non-nil if
both arguments are the same.  HASH must be a function taking one
argument and returning an object that is the hash code of the argument.
It should be the case that if (eq (funcall HASH x1) (funcall HASH x2))
returns nil, then (funcall TEST x1 x2) also returns nil.

(fn NAME TEST HASH)Finternal--hash-table-histogram
Bucket size histogram of HASH-TABLE.  Internal use only.

(fn HASH-TABLE)Finternal--hash-table-buckets
(KEY . HASH) in HASH-TABLE, grouped by bucket.
Internal use only.

(fn HASH-TABLE)Finternal--hash-table-index-size
Index size of HASH-TABLE.  Internal use only.

(fn HASH-TABLE)Fsecure-hash-algorithms
Return a list of all the supported `secure-hash' algorithms.

(fn)Fmd5
Return MD5 message digest of OBJECT, a buffer or string.

A message digest is the string representation of the cryptographic checksum
of a document, and the algorithm to calculate it is defined in RFC 1321.
The MD5 digest is 32-character long.

The two optional arguments START and END are character positions
specifying for which part of OBJECT the message digest should be
computed.  If nil or omitted, the digest is computed for the whole
OBJECT.

The MD5 message digest is computed from the result of encoding the
text in a coding system, not directly from the internal Emacs form of
the text.  The optional fourth argument CODING-SYSTEM specifies which
coding system to encode the text with.  It should be the same coding
system that you used or will use when actually writing the text into a
file.

If CODING-SYSTEM is nil or omitted, the default depends on OBJECT.  If
OBJECT is a buffer, the default for CODING-SYSTEM is whatever coding
system would be chosen by default for writing this text into a file.

If OBJECT is a string, the most preferred coding system (see the
command `prefer-coding-system') is used.

If NOERROR is non-nil, silently assume the `raw-text' coding if the
guesswork fails.  Normally, an error is signaled in such case.

This function is semi-obsolete, since for most purposes it is equivalent
to calling `secure-hash` with the symbol `md5' as the ALGORITHM
argument.  The OBJECT, START and END arguments have the same meanings as
in `secure-hash'.

Note that MD5 is not collision resistant and should not be used for
anything security-related.  See `secure-hash' for alternatives.

(fn OBJECT &optional START END CODING-SYSTEM NOERROR)Fsecure-hash
Return the secure hash of OBJECT, a buffer or string.
ALGORITHM is a symbol specifying the hash to use:
- md5    corresponds to MD5, produces a 32-character signature
- sha1   corresponds to SHA-1, produces a 40-character signature
- sha224 corresponds to SHA-2 (SHA-224), produces a 56-character signature
- sha256 corresponds to SHA-2 (SHA-256), produces a 64-character signature
- sha384 corresponds to SHA-2 (SHA-384), produces a 96-character signature
- sha512 corresponds to SHA-2 (SHA-512), produces a 128-character signature

The two optional arguments START and END are positions specifying for
which part of OBJECT to compute the hash.  If nil or omitted, uses the
whole OBJECT.

The full list of algorithms can be obtained with `secure-hash-algorithms'.

If BINARY is non-nil, returns a string in binary form.  In this case,
the function returns a unibyte string whose length is half the number
of characters it returns when BINARY is nil.

Note that MD5 and SHA-1 are not collision resistant and should not be
used for anything security-related.  For these applications, use one
of the other hash types instead, e.g. sha256 or sha512.

(fn ALGORITHM OBJECT &optional START END BINARY)Fbuffer-hash
Return a hash of the contents of BUFFER-OR-NAME.
This hash is performed on the raw internal format of the buffer,
disregarding any coding systems.  If nil, use the current buffer.

This function is useful for comparing two buffers running in the same
Emacs, but is not guaranteed to return the same hash between different
Emacs versions.  It should be somewhat more efficient on larger
buffers than `secure-hash' is, and should not allocate more memory.

It should not be used for anything security-related.  See
`secure-hash' for these applications.

(fn &optional BUFFER-OR-NAME)Fbuffer-line-statistics
Return data about lines in BUFFER.
The data is returned as a list, and the first element is the number of
lines in the buffer, the second is the length of the longest line, and
the third is the mean line length.  The lengths returned are in bytes, not
characters.

(fn &optional BUFFER-OR-NAME)Fstring-search
Search for the string NEEDLE in the string HAYSTACK.
The return value is the position of the first occurrence of NEEDLE in
HAYSTACK, or nil if no match was found.

The optional START-POS argument says where to start searching in
HAYSTACK and defaults to zero (start at the beginning).
It must be between zero and the length of HAYSTACK, inclusive.

Case is always significant and text properties are ignored.

(fn NEEDLE HAYSTACK &optional START-POS)Fobject-intervals
Return a copy of the text properties of OBJECT.
OBJECT must be a buffer or a string.

Altering this copy does not change the layout of the text properties
in OBJECT.

(fn OBJECT)Fline-number-at-pos
Return the line number at POSITION in the current buffer.
If POSITION is nil or omitted, it defaults to point's position in the
current buffer.

If the buffer is narrowed, the return value by default counts the lines
from the beginning of the accessible portion of the buffer.  But if the
second optional argument ABSOLUTE is non-nil, the value counts the lines
from the absolute start of the buffer, disregarding the narrowing.

(fn &optional POSITION ABSOLUTE)Voverriding-plist-environment
An alist that overrides the plists of the symbols which it lists.
Used by the byte-compiler to apply `define-symbol-prop' during
compilation.Vfeatures
A list of symbols which are the features of the executing Emacs.
Used by `featurep' and `require', and altered by `provide'.Vuse-dialog-box
Non-nil means mouse commands use dialog boxes to ask questions.
This applies to `y-or-n-p' and `yes-or-no-p' questions asked by commands
invoked by mouse clicks and mouse menu items.

On some platforms, file selection dialogs are also enabled if this is
non-nil.Vuse-file-dialog
Non-nil means mouse commands use a file dialog to ask for files.
This applies to commands from menus and tool bar buttons even when
they are initiated from the keyboard.  If `use-dialog-box' is nil,
that disables the use of a file dialog, regardless of the value of
this variable.Vuse-short-answers
Non-nil means `yes-or-no-p' uses shorter answers "y" or "n".
When non-nil, `yes-or-no-p' will use `y-or-n-p' to read the answer.
We recommend against setting this variable non-nil, because `yes-or-no-p'
is intended to be used when users are expected not to respond too
quickly, but to take their time and perhaps think about the answer.
The same variable also affects the function `read-answer'.  See also
`yes-or-no-prompt'.Vyes-or-no-prompt
String to append when `yes-or-no-p' asks a question.
For best results this should end in a space.Ssort.o
Sfont.o
Ffontp
Return t if OBJECT is a font-spec, font-entity, or font-object.
Return nil otherwise.
Optional 2nd argument EXTRA-TYPE, if non-nil, specifies to check
which kind of font it is.  It must be one of `font-spec', `font-entity',
`font-object'.

(fn OBJECT &optional EXTRA-TYPE)Ffont-spec
Return a newly created font-spec with arguments as properties.

ARGS must come in pairs KEY VALUE of font properties.  KEY must be a
valid font property name listed below:

`:family', `:weight', `:slant', `:width'

They are the same as face attributes of the same name.  See
`set-face-attribute'.

`:foundry'

VALUE must be a string or a symbol specifying the font foundry, e.g. `misc'.

`:adstyle'

VALUE must be a string or a symbol specifying the additional
typographic style information of a font, e.g. `sans'.

`:registry'

VALUE must be a string or a symbol specifying the charset registry and
encoding of a font, e.g. `iso8859-1'.

`:size'

VALUE must be a non-negative integer or a floating point number
specifying the font size.  It specifies the font size in pixels (if
VALUE is an integer), or in points (if VALUE is a float).

`:dpi'

VALUE must be a non-negative number that specifies the resolution
(dot per inch) for which the font is designed.

`:spacing'

VALUE specifies the spacing of the font: mono, proportional, charcell,
or dual.  It can be either a number (0 for proportional, 90 for dual,
100 for mono, 110 for charcell) or a 1-letter symbol: `P', `D', `M',
or `C' (lower-case variants are also accepted).

`:avgwidth'

VALUE must be a non-negative integer specifying the average width of
the font in 1/10 pixel units.

`:name'

VALUE must be a string of XLFD-style or fontconfig-style font name.

`:script'

VALUE must be a symbol representing a script that the font must
support.  It may be a symbol representing a subgroup of a script
listed in the variable `script-representative-chars'.

`:lang'

VALUE must be a symbol whose name is a two-letter ISO-639 language
name, e.g. `ja'.  The value is matched against the "Additional Style"
field of the XLFD spec of a font, if it's non-empty, on X, and
against the codepages supported by the font on w32.

`:otf'

VALUE must be a list (SCRIPT-TAG LANGSYS-TAG GSUB [ GPOS ]) to specify
required OpenType features.

  SCRIPT-TAG: OpenType script tag symbol (e.g. `deva').
  LANGSYS-TAG: OpenType language system tag symbol,
     or nil for the default language system.
  GSUB: List of OpenType GSUB feature tag symbols, or nil if none required.
  GPOS: List of OpenType GPOS feature tag symbols, or nil if none required.

GSUB and GPOS may contain nil elements.  In such a case, the font
must not have any of the remaining elements.

For instance, if the VALUE is `(thai nil nil (mark))', the font must
be an OpenType font whose GPOS table of `thai' script's default
language system must contain `mark' feature.

(fn ARGS...)Ffont-get
Return the value of FONT's property KEY.
FONT is a font-spec, a font-entity, or a font-object.
KEY can be any symbol, but these are reserved for specific meanings:
  :foundry, :family, :adstyle, :registry, :weight, :slant, :width,
  :size, :dpi, :spacing, :avgwidth, :script, :lang, :otf
See the documentation of `font-spec' for their meanings.

If FONT is a font-entity or a font-object, then values of
:script and :otf properties are different from those of a font-spec
as below:

  The value of :script may be a list of scripts that are supported by
  the font.

  The value of :otf is a cons (GSUB . GPOS) where GSUB and GPOS are
  lists representing the OpenType features supported by the font, of
  this form: ((SCRIPT (LANGSYS FEATURE ...) ...) ...), where
  SCRIPT, LANGSYS, and FEATURE are all symbols representing OpenType
  Layout tags.  See `otf-script-alist' for the OpenType script tags.

In addition to the keys listed above, the following keys are reserved
for the specific meanings as below:

  The value of :type is a symbol that identifies the font backend to be
  used, such as `ftcrhb' or `xfthb' on X , `harfbuzz' or `uniscribe' on
  MS-Windows, `ns' on Cocoa/GNUstep, etc.

  The value of :combining-capability is non-nil if the font-backend of
  FONT supports rendering of combining characters for non-OTF fonts.

(fn FONT KEY)Ffont-face-attributes
Return a plist of face attributes generated by FONT.
FONT is a font name, a font-spec, a font-entity, or a font-object.
The return value is a list of the form

(:family FAMILY :height HEIGHT :weight WEIGHT :slant SLANT :width WIDTH)

where FAMILY, HEIGHT, WEIGHT, SLANT, and WIDTH are face attribute values
compatible with `set-face-attribute'.  Some of these key-attribute pairs
may be omitted from the list if they are not specified by FONT.

The optional argument FRAME specifies the frame that the face attributes
are to be displayed on.  If omitted, the selected frame is used.

(fn FONT &optional FRAME)Ffont-put
Set one property of FONT: give property KEY value VAL.
FONT is a font-spec, a font-entity, or a font-object.

If FONT is a font-spec, KEY can be any symbol.  But if KEY is the one
accepted by the function `font-spec' (which see), VAL must be what
allowed in `font-spec'.

If FONT is a font-entity or a font-object, KEY must not be the one
accepted by `font-spec'.

See also `font-get' for KEYs that have special meanings.

(fn FONT PROP VAL)Flist-fonts
List available fonts matching FONT-SPEC on the current frame.
Optional 2nd argument FRAME specifies the target frame.
Optional 3rd argument NUM, if non-nil, limits the number of returned fonts.
Optional 4th argument PREFER, if non-nil, is a font-spec to
control the order of the returned list.  Fonts are sorted by
how close they are to PREFER.

(fn FONT-SPEC &optional FRAME NUM PREFER)Ffont-family-list
List available font families on the current frame.
If FRAME is omitted or nil, the selected frame is used.

(fn &optional FRAME)Ffind-font
Return a font-entity matching with FONT-SPEC on the current frame.
Optional 2nd argument FRAME, if non-nil, specifies the target frame.

(fn FONT-SPEC &optional FRAME)Ffont-xlfd-name
Return XLFD name of FONT.
FONT is a font-spec, font-entity, or font-object.

If the name is too long to be represented as an XLFD (maximum 255
chars) and LONG_XLFDS is nil, return nil.

If the 2nd optional arg FOLD-WILDCARDS is non-nil,
the consecutive wildcards are folded into one.

(fn FONT &optional FOLD-WILDCARDS LONG-XLFDS)Fclear-font-cache
Clear font cache of each frame.

(fn)Ffont-shape-gstring
Shape the glyph-string GSTRING subject to bidi DIRECTION.
Shaping means substituting glyphs and/or adjusting positions of glyphs
to get the correct visual image of character sequences set in the
header of the glyph-string.

DIRECTION should be produced by the UBA, the Unicode Bidirectional
Algorithm, and should be a symbol, either L2R or R2L.  It can also
be nil if the bidi context is unknown.

If the shaping was successful, the value is GSTRING itself or a newly
created glyph-string.  Otherwise, the value is nil.

See the documentation of `composition-get-gstring' for the format of
GSTRING.

(fn GSTRING DIRECTION)Ffont-variation-glyphs
Return a list of variation glyphs for CHARACTER in FONT-OBJECT.
Each element of the value is a cons (VARIATION-SELECTOR . GLYPH-ID),
where
  VARIATION-SELECTOR is a character code of variation selector
    (#xFE00..#xFE0F or #xE0100..#xE01EF).
  GLYPH-ID is a glyph code of the corresponding variation glyph, an integer.

(fn FONT-OBJECT CHARACTER)Finternal-char-font
For internal use only.

(fn POSITION &optional CH)Ffont-drive-otf
Apply OpenType features on glyph-string GSTRING-IN.
OTF-FEATURES specifies which features to apply in this format:
  (SCRIPT LANGSYS GSUB GPOS)
where
  SCRIPT is a symbol specifying a script tag of OpenType,
  LANGSYS is a symbol specifying a langsys tag of OpenType,
  GSUB and GPOS, if non-nil, are lists of symbols specifying feature tags.

If LANGSYS is nil, the default langsys is selected.

The features are applied in the order they appear in the list.  The
symbol `*' means to apply all available features not present in this
list, and the remaining features are ignored.  For instance, (vatu
pstf * haln) is to apply vatu and pstf in this order, then to apply
all available features other than vatu, pstf, and haln.

The features are applied to the glyphs in the range FROM and TO of
the glyph-string GSTRING-IN.

If some feature is actually applicable, the resulting glyphs are
produced in the glyph-string GSTRING-OUT from the index INDEX.  In
this case, the value is the number of produced glyphs.

If no feature is applicable, no glyph is produced in GSTRING-OUT, and
the value is 0.

If GSTRING-OUT is too short to hold produced glyphs, no glyphs are
produced in GSTRING-OUT, and the value is nil.

See the documentation of `composition-get-gstring' for the format of
glyph-string.

(fn OTF-FEATURES GSTRING-IN FROM TO GSTRING-OUT INDEX)Ffont-otf-alternates
Return a list of alternate glyphs of CHARACTER in FONT-OBJECT.
OTF-FEATURES specifies which features of the font FONT-OBJECT to apply
in this format:
  (SCRIPT LANGSYS FEATURE ...)
See the documentation of `font-drive-otf' for more detail.

The value is a list of cons cells of the format (GLYPH-ID . CHARACTER),
where GLYPH-ID is a glyph index of the font, and CHARACTER is a
character code corresponding to the glyph or nil if there's no
corresponding character.

(fn FONT-OBJECT CHARACTER OTF-FEATURES)Fopen-font
Open FONT-ENTITY.

(fn FONT-ENTITY &optional SIZE FRAME)Fclose-font
Close FONT-OBJECT.

(fn FONT-OBJECT &optional FRAME)Fquery-font
Return information about FONT-OBJECT.
The value is a vector:
  [ NAME FILENAME PIXEL-SIZE SIZE ASCENT DESCENT SPACE-WIDTH AVERAGE-WIDTH
    CAPABILITY ]

NAME is the font name, a string (or nil if the font backend doesn't
provide a name).

FILENAME is the font file name, a string (or nil if the font backend
doesn't provide a file name).

PIXEL-SIZE is a pixel size by which the font is opened.

SIZE is a maximum advance width of the font in pixels.

ASCENT, DESCENT, SPACE-WIDTH, AVERAGE-WIDTH are metrics of the font in
pixels.

CAPABILITY is a list whose first element is a symbol representing the
font format (x, opentype, truetype, type1, pcf, or bdf) and the
remaining elements describe the details of the font capability.

If the font is OpenType font, the form of the list is
  (opentype GSUB GPOS)
where GSUB shows which "GSUB" features the font supports, and GPOS
shows which "GPOS" features the font supports.  Both GSUB and GPOS are
lists of the format:
  ((SCRIPT (LANGSYS FEATURE ...) ...) ...)

If the font is not OpenType font, currently the length of the form is
one.

SCRIPT is a symbol representing OpenType script tag.

LANGSYS is a symbol representing OpenType langsys tag, or nil
representing the default langsys.

FEATURE is a symbol representing OpenType feature tag.

If the font is not OpenType font, CAPABILITY is nil.

(fn FONT-OBJECT)Ffont-has-char-p
Return non-nil if FONT on FRAME has a glyph for character CH.
FONT can be either a font-entity or a font-object.  If it is
a font-entity and the result is nil, it means the font needs to be
opened (with `open-font') to check.
FRAME defaults to the selected frame if it is nil or omitted.

(fn FONT CH &optional FRAME)Ffont-get-glyphs
Return a vector of FONT-OBJECT's glyphs for the specified characters.
FROM and TO are positions (integers or markers) specifying a region
of the current buffer, and can be in either order.  If the optional
fourth arg OBJECT is not nil, it is a string or a vector containing
the target characters between indices FROM and TO, which are treated
as in `substring'.

Each element is a vector containing information of a glyph in this format:
  [FROM-IDX TO-IDX C CODE WIDTH LBEARING RBEARING ASCENT DESCENT ADJUSTMENT]
where
  FROM is an index numbers of a character the glyph corresponds to.
  TO is the same as FROM.
  C is the character of the glyph.
  CODE is the glyph-code of C in FONT-OBJECT.
  WIDTH thru DESCENT are the metrics (in pixels) of the glyph.
  ADJUSTMENT is always nil.

If FONT-OBJECT doesn't have a glyph for a character, the corresponding
element is nil.

Also see `font-has-char-p', which is more efficient than this function
if you just want to check whether FONT-OBJECT has a glyph for a
character.

(fn FONT-OBJECT FROM TO &optional OBJECT)Ffont-match-p
Return t if and only if font-spec SPEC matches with FONT.
FONT is a font-spec, font-entity, or font-object.

(fn SPEC FONT)Ffont-at
Return a font-object for displaying a character at POSITION.
Optional second arg WINDOW, if non-nil, is a window displaying
the current buffer.  It defaults to the currently selected window.
Optional third arg STRING, if non-nil, is a string containing the target
character at index specified by POSITION.

(fn POSITION &optional WINDOW STRING)Fdraw-string
Draw STRING by FONT-OBJECT on the top left corner of the current frame.
The value is a number of glyphs drawn.
Type C-l to recover what previously shown.

(fn FONT-OBJECT STRING)Fframe-font-cache
Return FRAME's font cache.  Mainly used for debugging.
If FRAME is omitted or nil, use the selected frame.

(fn &optional FRAME)Ffont-info
Return information about a font named NAME on frame FRAME.
If FRAME is omitted or nil, use the selected frame.

The returned value is a vector of 14 elements:
  [ OPENED-NAME FULL-NAME SIZE HEIGHT BASELINE-OFFSET RELATIVE-COMPOSE
    DEFAULT-ASCENT MAX-WIDTH ASCENT DESCENT SPACE-WIDTH AVERAGE-WIDTH
    FILENAME CAPABILITY ]
where
  OPENED-NAME is the name used for opening the font,
  FULL-NAME is the full name of the font,
  SIZE is the pixelsize of the font,
  HEIGHT is the pixel-height of the font (i.e., ascent + descent),
  BASELINE-OFFSET is the upward offset pixels from ASCII baseline,
  RELATIVE-COMPOSE and DEFAULT-ASCENT are the numbers controlling
    how to compose characters,
  MAX-WIDTH is the maximum advance width of the font,
  ASCENT, DESCENT, SPACE-WIDTH, and AVERAGE-WIDTH are metrics of
    the font in pixels,
  FILENAME is the font file name, a string (or nil if the font backend
    doesn't provide a file name).
  CAPABILITY is a list whose first element is a symbol representing the
    font format, one of `x', `opentype', `truetype', `type1', `pcf', or `bdf'.
    The remaining elements describe the details of the font capabilities,
    as follows:

      If the font is OpenType font, the form of the list is
        (opentype GSUB GPOS)
      where GSUB shows which "GSUB" features the font supports, and GPOS
      shows which "GPOS" features the font supports.  Both GSUB and GPOS are
      lists of the form:
	((SCRIPT (LANGSYS FEATURE ...) ...) ...)

      where
        SCRIPT is a symbol representing OpenType script tag.
        LANGSYS is a symbol representing OpenType langsys tag, or nil
         representing the default langsys.
        FEATURE is a symbol representing OpenType feature tag.

      If the font is not an OpenType font, there are no elements
      in CAPABILITY except the font format symbol.

If the named font cannot be opened and loaded, return nil.

(fn NAME &optional FRAME)Vfont-encoding-alist
Alist of fontname patterns vs the corresponding encoding and repertory info.
Each element looks like (REGEXP . (ENCODING . REPERTORY)),
where ENCODING is a charset or a char-table,
and REPERTORY is a charset, a char-table, or nil.

If ENCODING and REPERTORY are the same, the element can have the form
(REGEXP . ENCODING).

ENCODING is for converting a character to a glyph code of the font.
If ENCODING is a charset, encoding a character by the charset gives
the corresponding glyph code.  If ENCODING is a char-table, looking up
the table by a character gives the corresponding glyph code.

REPERTORY specifies a repertory of characters supported by the font.
If REPERTORY is a charset, all characters belonging to the charset are
supported.  If REPERTORY is a char-table, all characters who have a
non-nil value in the table are supported.  If REPERTORY is nil, Emacs
gets the repertory information by an opened font and ENCODING.Vfont-weight-table
Vector of valid font weight values.
Each element has the form:
    [NUMERIC-VALUE SYMBOLIC-NAME ALIAS-NAME ...]
NUMERIC-VALUE is an integer, and SYMBOLIC-NAME and ALIAS-NAME are symbols.
This variable cannot be set; trying to do so will signal an error.Vfont-slant-table
Vector of font slant symbols vs the corresponding numeric values.
See `font-weight-table' for the format of the vector.
This variable cannot be set; trying to do so will signal an error.Vfont-width-table
Alist of font width symbols vs the corresponding numeric values.
See `font-weight-table' for the format of the vector.
This variable cannot be set; trying to do so will signal an error.Vfont-log
A list that logs font-related actions and results, for debugging.
The default value is t, which means to suppress logging.
Set it to nil to enable logging.  If the environment variable
EMACS_FONT_LOG is set at startup, it defaults to nil.Vinhibit-compacting-font-caches
If non-nil, don't compact font caches during GC.
Some large fonts cause lots of consing and trigger GC.  If they
are removed from the font caches, they will need to be opened
again during redisplay, which slows down redisplay.  If you
see font-related delays in displaying some special characters,
and cannot switch to a smaller font for those characters, set
this variable non-nil.
Disabling compaction of font caches might enlarge the Emacs memory
footprint in sessions that use lots of different fonts.Vxft-ignore-color-fonts
Non-nil means don't query fontconfig for color fonts, since they often
cause Xft crashes.  Only has an effect in Xft builds.Vquery-all-font-backends
If non-nil, attempt to query all available font backends.
By default Emacs will stop searching for a matching font at the first
match.Sprint.o
Fwrite-char
Output character CHARACTER to stream PRINTCHARFUN.
PRINTCHARFUN defaults to the value of `standard-output' (which see).

(fn CHARACTER &optional PRINTCHARFUN)Fterpri
Output a newline to stream PRINTCHARFUN.
If ENSURE is non-nil only output a newline if not already at the
beginning of a line.  Value is non-nil if a newline is printed.
If PRINTCHARFUN is omitted or nil, the value of `standard-output' is used.

(fn &optional PRINTCHARFUN ENSURE)Fprin1
Output the printed representation of OBJECT, any Lisp object.
Quoting characters are printed when needed to make output that `read'
can handle, whenever this is possible.  For complex objects, the behavior
is controlled by `print-level' and `print-length', which see.

OBJECT is any of the Lisp data types: a number, a string, a symbol,
a list, a buffer, a window, a frame, etc.

A printed representation of an object is text which describes that object.

Optional argument PRINTCHARFUN is the output stream, which can be one
of these:

   - a buffer, in which case output is inserted into that buffer at point;
   - a marker, in which case output is inserted at marker's position;
   - a function, in which case that function is called once for each
     character of OBJECT's printed representation;
   - a symbol, in which case that symbol's function definition is called; or
   - t, in which case the output is displayed in the echo area.

If PRINTCHARFUN is omitted, the value of `standard-output' (which see)
is used instead.

Optional argument OVERRIDES should be a list of settings for print-related
variables.  An element in this list can be the symbol t, which means "reset
all the values to their defaults".  Otherwise, an element should be a pair,
where the `car' or the pair is the setting symbol, and the `cdr' is the
value of the setting to use for this `prin1' call.

For instance:

  (prin1 object nil \='((length . 100) (circle . t))).

See Info node `(elisp)Output Overrides' for a list of possible values.

As a special case, OVERRIDES can also simply be the symbol t, which
means "use default values for all the print-related settings".

(fn OBJECT &optional PRINTCHARFUN OVERRIDES)Fprin1-to-string
Return a string containing the printed representation of OBJECT.
OBJECT can be any Lisp object.  This function outputs quoting characters
when necessary to make output that `read' can handle, whenever possible,
unless the optional second argument NOESCAPE is non-nil.  For complex objects,
the behavior is controlled by `print-level' and `print-length', which see.

OBJECT is any of the Lisp data types: a number, a string, a symbol,
a list, a buffer, a window, a frame, etc.

See `prin1' for the meaning of OVERRIDES.

A printed representation of an object is text which describes that object.

(fn OBJECT &optional NOESCAPE OVERRIDES)Fprinc
Output the printed representation of OBJECT, any Lisp object.
No quoting characters are used; no delimiters are printed around
the contents of strings.

OBJECT is any of the Lisp data types: a number, a string, a symbol,
a list, a buffer, a window, a frame, etc.

A printed representation of an object is text which describes that object.

Optional argument PRINTCHARFUN is the output stream, which can be one
of these:

   - a buffer, in which case output is inserted into that buffer at point;
   - a marker, in which case output is inserted at marker's position;
   - a function, in which case that function is called once for each
     character of OBJECT's printed representation;
   - a symbol, in which case that symbol's function definition is called; or
   - t, in which case the output is displayed in the echo area.

If PRINTCHARFUN is omitted, the value of `standard-output' (which see)
is used instead.

(fn OBJECT &optional PRINTCHARFUN)Fprint
Output the printed representation of OBJECT, with newlines around it.
Quoting characters are printed when needed to make output that `read'
can handle, whenever this is possible.  For complex objects, the behavior
is controlled by `print-level' and `print-length', which see.

OBJECT is any of the Lisp data types: a number, a string, a symbol,
a list, a buffer, a window, a frame, etc.

A printed representation of an object is text which describes that object.

Optional argument PRINTCHARFUN is the output stream, which can be one
of these:

   - a buffer, in which case output is inserted into that buffer at point;
   - a marker, in which case output is inserted at marker's position;
   - a function, in which case that function is called once for each
     character of OBJECT's printed representation;
   - a symbol, in which case that symbol's function definition is called; or
   - t, in which case the output is displayed in the echo area.

If PRINTCHARFUN is omitted, the value of `standard-output' (which see)
is used instead.

(fn OBJECT &optional PRINTCHARFUN)Fflush-standard-output
Flush standard-output.
This can be useful after using `princ' and the like in scripts.

(fn)Fexternal-debugging-output
Write CHARACTER to stderr.
You can call `print' while debugging emacs, and pass it this function
to make it write to the debugging output.

(fn CHARACTER)Fredirect-debugging-output
Redirect debugging output (stderr stream) to file FILE.
If FILE is nil, reset target to the initial stderr stream.
Optional arg APPEND non-nil (interactively, with prefix arg) means
append to existing target file.

(fn FILE &optional APPEND)Ferror-message-string
Convert an error value (ERROR-SYMBOL . DATA) to an error message.
See Info anchor `(elisp)Definition of signal' for some details on how this
error message is constructed.

(fn OBJ)Fprint--preprocess
Extract sharing info from OBJECT needed to print it.
Fills `print-number-table' if `print-circle' is non-nil.  Does nothing
if `print-circle' is nil.

(fn OBJECT)Vstandard-output
Output stream `print' uses by default for outputting a character.
This may be any function of one argument.
It may also be a buffer (output is inserted before point)
or a marker (output is inserted and the marker is advanced)
or the symbol t (output appears in the echo area).Vfloat-output-format
The format descriptor string used to print floats.
This is a %-spec like those accepted by `printf' in C,
but with some restrictions.  It must start with the two characters `%.'.
After that comes an integer precision specification,
and then a letter which controls the format.
The letters allowed are `e', `f' and `g'.
Use `e' for exponential notation "DIG.DIGITSeEXPT"
Use `f' for decimal point notation "DIGITS.DIGITS".
Use `g' to choose the shorter of those two formats for the number at hand.
The precision in any of these cases is the number of digits following
the decimal point.  With `f', a precision of 0 means to omit the
decimal point.  0 is not allowed with `e' or `g'.

A value of nil means to use the shortest notation
that represents the number without losing information.Vprint-integers-as-characters
Non-nil means integers are printed using characters syntax.
Only independent graphic characters, and control characters with named
escape sequences such as newline, are printed this way.  Other
integers, including those corresponding to raw bytes, are printed
as numbers the usual way.Vprint-length
Maximum length of list to print before abbreviating.
A value of nil means no limit.  See also `eval-expression-print-length'.Vprint-level
Maximum depth of list nesting to print before abbreviating.
A value of nil means no limit.  See also `eval-expression-print-level'.Vprint-escape-newlines
Non-nil means print newlines in strings as `\n'.
Also print formfeeds as `\f'.Vprint-escape-control-characters
Non-nil means print control characters in strings as `\OOO'.
(OOO is the octal representation of the character code.)Vprint-escape-nonascii
Non-nil means print unibyte non-ASCII chars in strings as \OOO.
(OOO is the octal representation of the character code.)
Only single-byte characters are affected, and only in `prin1'.
When the output goes in a multibyte buffer, this feature is
enabled regardless of the value of the variable.Vprint-escape-multibyte
Non-nil means print multibyte characters in strings as \xXXXX.
(XXXX is the hex representation of the character code.)
This affects only `prin1'.Vprint-quoted
Non-nil means print quoted forms with reader syntax.
I.e., (quote foo) prints as \='foo, (function foo) as #\='foo.Vprint-gensym
Non-nil means print uninterned symbols so they will read as uninterned.
I.e., the value of (make-symbol "foobar") prints as #:foobar.
When the uninterned symbol appears multiple times within the printed
expression, and `print-circle' is non-nil, in addition use the #N#
and #N= constructs as needed, so that multiple references to the same
symbol are shared once again when the text is read back.Vprint-circle
Non-nil means print recursive structures using #N= and #N# syntax.
If nil, printing proceeds recursively and may lead to
`max-lisp-eval-depth' being exceeded or an error may occur:
"Apparently circular structure being printed."  Also see
`print-length' and `print-level'.
If non-nil, shared substructures anywhere in the structure are printed
with `#N=' before the first occurrence (in the order of the print
representation) and `#N#' in place of each subsequent occurrence,
where N is a positive decimal integer.Vprint-continuous-numbering
Non-nil means number continuously across print calls.
This affects the numbers printed for #N= labels and #M# references.
See also `print-circle', `print-gensym', and `print-number-table'.
This variable should not be set with `setq'; bind it with a `let' instead.Vprint-number-table
A vector used internally to produce `#N=' labels and `#N#' references.
The Lisp printer uses this vector to detect Lisp objects referenced more
than once.  If an entry contains a number, then the corresponding key is
referenced more than once: a positive sign indicates that it's already been
printed, and the absolute value indicates the number to use when printing.
If an entry contains a string, that string is printed instead.

When you bind `print-continuous-numbering' to t, you should probably
also bind `print-number-table' to nil.  This ensures that the value of
`print-number-table' can be garbage-collected once the printing is
done.  If all elements of `print-number-table' are nil, it means that
the printing done so far has not found any shared structure or objects
that need to be recorded in the table.Vprint-charset-text-property
A flag to control printing of `charset' text property on printing a string.
The value should be nil, t, or `default'.

If the value is nil, don't print the text property `charset'.

If the value is t, always print the text property `charset'.

If the value is `default', print the text property `charset' only when
the value is different from what is guessed in the current charset
priorities.  Values other than nil or t are also treated as
`default'.Vprint-symbols-bare
A flag to control printing of symbols with position.
If the value is nil, print these objects complete with position.
Otherwise print just the bare symbol.Vprint-unreadable-function
If non-nil, a function to call when printing unreadable objects.
By default, Emacs printing functions (like `prin1') print unreadable
objects as "#<...>", where "..." describes the object (for
instance, "#<marker in no buffer>").

If non-nil, it should be a function that will be called with two
arguments: the object to be printed, and the NOESCAPE flag (see
`prin1-to-string').  If this function returns nil, the object will be
printed as usual.  If it returns a string, that string will then be
printed.  If the function returns anything else, the object will not
be printed.Vprint--unreadable-callback-buffer
Dynamically bound to indicate current buffer.Slread.o
Fread-char
Read a character event from the command input (keyboard or macro).
Return the character as a number.
If the event has modifiers, they are resolved and reflected in the
returned character code if possible (e.g. C-SPC yields 0 and C-a yields 97).
If some of the modifiers cannot be reflected in the character code, the
returned value will include those modifiers, and will not be a valid
character code: it will fail the `characterp' test.  Use `event-basic-type'
to recover the character code with the modifiers removed.

If the user generates an event which is not a character (i.e. a mouse
click or function key event), `read-char' signals an error.  As an
exception, switch-frame events are put off until non-character events
can be read.
If you want to read non-character events, or ignore them, call
`read-event' or `read-char-exclusive' instead.

If the optional argument PROMPT is non-nil, display that as a prompt.
If PROMPT is nil or the string "", the key sequence/events that led
to the current command is used as the prompt.

If the optional argument INHERIT-INPUT-METHOD is non-nil and some
input method is turned on in the current buffer, that input method
is used for reading a character.

If the optional argument SECONDS is non-nil, it should be a number
specifying the maximum number of seconds to wait for input.  If no
input arrives in that time, return nil.  SECONDS may be a
floating-point value.

If `inhibit-interaction' is non-nil, this function will signal an
`inhibited-interaction' error.

(fn &optional PROMPT INHERIT-INPUT-METHOD SECONDS)Fread-event
Read and return an event object from the input stream.

If you want to read non-character events, consider calling `read-key'
instead.  `read-key' will decode events via `input-decode-map' that
`read-event' will not.  On a terminal this includes function keys such
as <F7> and <RIGHT>, or mouse events generated by `xterm-mouse-mode'.

If the optional argument PROMPT is non-nil, display that as a prompt.
If PROMPT is nil or the string "", the key sequence/events that led
to the current command is used as the prompt.

If the optional argument INHERIT-INPUT-METHOD is non-nil and some
input method is turned on in the current buffer, that input method
is used for reading a character.

If the optional argument SECONDS is non-nil, it should be a number
specifying the maximum number of seconds to wait for input.  If no
input arrives in that time, return nil.  SECONDS may be a
floating-point value.

If `inhibit-interaction' is non-nil, this function will signal an
`inhibited-interaction' error.

(fn &optional PROMPT INHERIT-INPUT-METHOD SECONDS)Fread-char-exclusive
Read a character event from the command input (keyboard or macro).
Return the character as a number.  Non-character events are ignored.
If the event has modifiers, they are resolved and reflected in the
returned character code if possible (e.g. C-SPC yields 0 and C-a yields 97).
If some of the modifiers cannot be reflected in the character code, the
returned value will include those modifiers, and will not be a valid
character code: it will fail the `characterp' test.  Use `event-basic-type'
to recover the character code with the modifiers removed.

If the optional argument PROMPT is non-nil, display that as a prompt.
If PROMPT is nil or the string "", the key sequence/events that led
to the current command is used as the prompt.

If the optional argument INHERIT-INPUT-METHOD is non-nil and some
input method is turned on in the current buffer, that input method
is used for reading a character.

If the optional argument SECONDS is non-nil, it should be a number
specifying the maximum number of seconds to wait for input.  If no
input arrives in that time, return nil.  SECONDS may be a
floating-point value.

If `inhibit-interaction' is non-nil, this function will signal an
`inhibited-interaction' error.

(fn &optional PROMPT INHERIT-INPUT-METHOD SECONDS)Fget-load-suffixes
Return the suffixes that `load' should try if a suffix is required.
This uses the variables `load-suffixes' and `load-file-rep-suffixes'.

(fn)Fload
Execute a file of Lisp code named FILE.
First try FILE with `.elc' appended, then try with `.el', then try
with a system-dependent suffix of dynamic modules (see `load-suffixes'),
then try FILE unmodified (the exact suffixes in the exact order are
determined by `load-suffixes').  Environment variable references in
FILE are replaced with their values by calling `substitute-in-file-name'.
This function searches the directories in `load-path'.

If optional second arg NOERROR is non-nil,
report no error if FILE doesn't exist.
Print messages at start and end of loading unless
optional third arg NOMESSAGE is non-nil (but `force-load-messages'
overrides that).
If optional fourth arg NOSUFFIX is non-nil, don't try adding
suffixes to the specified name FILE.
If optional fifth arg MUST-SUFFIX is non-nil, insist on
the suffix `.elc' or `.el' or the module suffix; don't accept just
FILE unless it ends in one of those suffixes or includes a directory name.

If NOSUFFIX is nil, then if a file could not be found, try looking for
a different representation of the file by adding non-empty suffixes to
its name, before trying another file.  Emacs uses this feature to find
compressed versions of files when Auto Compression mode is enabled.
If NOSUFFIX is non-nil, disable this feature.

The suffixes that this function tries out, when NOSUFFIX is nil, are
given by the return value of `get-load-suffixes' and the values listed
in `load-file-rep-suffixes'.  If MUST-SUFFIX is non-nil, only the
return value of `get-load-suffixes' is used, i.e. the file name is
required to have a non-empty suffix.

When searching suffixes, this function normally stops at the first
one that exists.  If the option `load-prefer-newer' is non-nil,
however, it tries all suffixes, and uses whichever file is the newest.

Loading a file records its definitions, and its `provide' and
`require' calls, in an element of `load-history' whose
car is the file name loaded.  See `load-history'.

While the file is in the process of being loaded, the variable
`load-in-progress' is non-nil and the variable `load-file-name'
is bound to the file's name.

Return t if the file exists and loads successfully.

(fn FILE &optional NOERROR NOMESSAGE NOSUFFIX MUST-SUFFIX)Flocate-file-internal
Search for FILENAME through PATH.
Returns the file's name in absolute form, or nil if not found.
If SUFFIXES is non-nil, it should be a list of suffixes to append to
file name when searching.
If non-nil, PREDICATE is used instead of `file-readable-p'.
PREDICATE can also be an integer to pass to the faccessat(2) function,
in which case file-name-handlers are ignored.
This function will normally skip directories, so if you want it to find
directories, make sure the PREDICATE function returns `dir-ok' for them.

(fn FILENAME PATH &optional SUFFIXES PREDICATE)Feval-buffer
Execute the accessible portion of current buffer as Lisp code.
You can use \[narrow-to-region] to limit the part of buffer to be evaluated.
When called from a Lisp program (i.e., not interactively), this
function accepts up to five optional arguments:
BUFFER is the buffer to evaluate (nil means use current buffer),
 or a name of a buffer (a string).
PRINTFLAG controls printing of output by any output functions in the
 evaluated code, such as `print', `princ', and `prin1':
  a value of nil means discard it; anything else is the stream to print to.
  See Info node `(elisp)Output Streams' for details on streams.
FILENAME specifies the file name to use for `load-history'.
UNIBYTE, if non-nil, specifies `load-convert-to-unibyte' for this
 invocation.
DO-ALLOW-PRINT, if non-nil, specifies that output functions in the
 evaluated code should work normally even if PRINTFLAG is nil, in
 which case the output is displayed in the echo area.

This function ignores the current value of the `lexical-binding'
variable.  Instead it will heed any
  -*- lexical-binding: t -*-
settings in the buffer, and if there is no such setting, the buffer
will be evaluated without lexical binding.

This function preserves the position of point.

(fn &optional BUFFER PRINTFLAG FILENAME UNIBYTE DO-ALLOW-PRINT)Feval-region
Execute the region as Lisp code.
When called from programs, expects two arguments,
giving starting and ending indices in the current buffer
of the text to be executed.
Programs can pass third argument PRINTFLAG which controls output:
 a value of nil means discard it; anything else is stream for printing it.
 See Info node `(elisp)Output Streams' for details on streams.
Also the fourth argument READ-FUNCTION, if non-nil, is used
instead of `read' to read each expression.  It gets one argument
which is the input stream for reading characters.

This function does not move point.

(fn START END &optional PRINTFLAG READ-FUNCTION)Fread
Read one Lisp expression as text from STREAM, return as Lisp object.
If STREAM is nil, use the value of `standard-input' (which see).
STREAM or the value of `standard-input' may be:
 a buffer (read from point and advance it)
 a marker (read from where it points and advance it)
 a function (call it with no arguments for each character,
     call it with a char as argument to push a char back)
 a string (takes text from string, starting at the beginning)
 t (read text line using minibuffer and use it, or read from
    standard input in batch mode).

(fn &optional STREAM)Fread-positioning-symbols
Read one Lisp expression as text from STREAM, return as Lisp object.
Convert each occurrence of a symbol into a "symbol with pos" object.

If STREAM is nil, use the value of `standard-input' (which see).
STREAM or the value of `standard-input' may be:
 a buffer (read from point and advance it)
 a marker (read from where it points and advance it)
 a function (call it with no arguments for each character,
     call it with a char as argument to push a char back)
 a string (takes text from string, starting at the beginning)
 t (read text line using minibuffer and use it, or read from
    standard input in batch mode).

(fn &optional STREAM)Fread-from-string
Read one Lisp expression which is represented as text by STRING.
Returns a cons: (OBJECT-READ . FINAL-STRING-INDEX).
FINAL-STRING-INDEX is an integer giving the position of the next
remaining character in STRING.  START and END optionally delimit
a substring of STRING from which to read;  they default to 0 and
(length STRING) respectively.  Negative values are counted from
the end of STRING.

(fn STRING &optional START END)Flread--substitute-object-in-subtree
In OBJECT, replace every occurrence of PLACEHOLDER with OBJECT.
COMPLETED is a hash table of objects that might be circular, or is t
if any object might be circular.

(fn OBJECT PLACEHOLDER COMPLETED)Fintern
Return the canonical symbol whose name is STRING.
If there is none, one is created by this function and returned.
A second optional argument specifies the obarray to use;
it defaults to the value of `obarray'.

(fn STRING &optional OBARRAY)Fintern-soft
Return the canonical symbol named NAME, or nil if none exists.
NAME may be a string or a symbol.  If it is a symbol, that exact
symbol is searched for.
A second optional argument specifies the obarray to use;
it defaults to the value of `obarray'.

(fn NAME &optional OBARRAY)Funintern
Delete the symbol named NAME, if any, from OBARRAY.
The value is t if a symbol was found and deleted, nil otherwise.
NAME may be a string or a symbol.  If it is a symbol, that symbol
is deleted, if it belongs to OBARRAY--no other symbol is deleted.
OBARRAY, if nil, defaults to the value of the variable `obarray'.

(fn NAME OBARRAY)Fobarray-make
Return a new obarray of size SIZE.
The obarray will grow to accommodate any number of symbols; the size, if
given, is only a hint for the expected number.

(fn &optional SIZE)Fobarrayp
Return t iff OBJECT is an obarray.

(fn OBJECT)Fobarray-clear
Remove all symbols from OBARRAY.

(fn OBARRAY)Fmapatoms
Call FUNCTION on every symbol in OBARRAY.
OBARRAY defaults to the value of `obarray'.

(fn FUNCTION &optional OBARRAY)Finternal--obarray-buckets
Symbols in each bucket of OBARRAY.  Internal use only.

(fn OBARRAY)Vobarray
Symbol table for use by `intern' and `read'.
It is a vector whose length ought to be prime for best results.
The vector's contents don't make sense if examined from Lisp programs;
to find all the symbols in an obarray, use `mapatoms'.Vvalues
List of values of all expressions which were read, evaluated and printed.
Order is reverse chronological.
This variable is obsolete as of Emacs 28.1 and should not be used.Vstandard-input
Stream for read to get input from.
See documentation of `read' for possible values.Vread-circle
Non-nil means read recursive structures using #N= and #N# syntax.Vload-path
List of directories to search for files to load.
Each element is a string (directory file name) or nil (meaning
`default-directory').
This list is consulted by the `require' function.
Initialized during startup as described in Info node `(elisp)Library Search'.
Use `directory-file-name' when adding items to this path.  However, Lisp
programs that process this list should tolerate directories both with
and without trailing slashes.Vload-suffixes
List of suffixes for Emacs Lisp files and dynamic modules.
This list includes suffixes for both compiled and source Emacs Lisp files.
This list should not include the empty string.
`load' and related functions try to append these suffixes, in order,
to the specified file name if a suffix is allowed or required.Vmodule-file-suffix
Suffix of loadable module file, or nil if modules are not supported.Vdynamic-library-suffixes
A list of suffixes for loadable dynamic libraries.Vload-file-rep-suffixes
List of suffixes that indicate representations of the same file.
This list should normally start with the empty string.

Enabling Auto Compression mode appends the suffixes in
`jka-compr-load-suffixes' to this list and disabling Auto Compression
mode removes them again.  `load' and related functions use this list to
determine whether they should look for compressed versions of a file
and, if so, which suffixes they should try to append to the file name
in order to do so.  However, if you want to customize which suffixes
the loading functions recognize as compression suffixes, you should
customize `jka-compr-load-suffixes' rather than the present variable.Vload-in-progress
Non-nil if inside of `load'.Vafter-load-alist
An alist of functions to be evalled when particular files are loaded.
Each element looks like (REGEXP-OR-FEATURE FUNCS...).

REGEXP-OR-FEATURE is either a regular expression to match file names, or
a symbol (a feature name).

When `load' is run and the file-name argument matches an element's
REGEXP-OR-FEATURE, or when `provide' is run and provides the symbol
REGEXP-OR-FEATURE, the FUNCS in the element are called.

An error in FUNCS does not undo the load, but does prevent calling
the rest of the FUNCS.Vload-history
Alist mapping loaded file names to symbols and features.
Each alist element should be a list (FILE-NAME ENTRIES...), where
FILE-NAME is the name of a file that has been loaded into Emacs.
The file name is absolute and true (i.e. it doesn't contain symlinks).
As an exception, one of the alist elements may have FILE-NAME nil,
for symbols and features not associated with any file.

The remaining ENTRIES in the alist element describe the functions and
variables defined in that file, the features provided, and the
features required.  Each entry has the form `(provide . FEATURE)',
`(require . FEATURE)', `(defun . FUNCTION)', `(defface . SYMBOL)',
 `(define-type . SYMBOL)', or `(cl-defmethod METHOD SPECIALIZERS)'.
In addition, entries may also be single symbols,
which means that symbol was defined by `defvar' or `defconst'.

During preloading, the file name recorded is relative to the main Lisp
directory.  These file names are converted to absolute at startup.Vload-file-name
Full name of file being loaded by `load'.

In case of native code being loaded this is indicating the
corresponding bytecode filename.  Use `load-true-file-name' to obtain
the .eln filename.Vload-true-file-name
Full name of file being loaded by `load'.Vuser-init-file
File name, including directory, of user's initialization file.
If the file loaded had extension `.elc', and the corresponding source file
exists, this variable contains the name of source file, suitable for use
by functions like `custom-save-all' which edit the init file.
While Emacs loads and evaluates any init file, value is the real name
of the file, regardless of whether or not it has the `.elc' extension.Vcurrent-load-list
Used for internal purposes by `load'.Vload-read-function
Function used for reading expressions.
It is used by `load' and `eval-region'.

Called with a single argument (the stream from which to read).
The default is to use the function `read'.Vload-source-file-function
Function called in `load' to load an Emacs Lisp source file.
The value should be a function for doing code conversion before
reading a source file.  It can also be nil, in which case loading is
done without any code conversion.

If the value is a function, it is called with four arguments,
FULLNAME, FILE, NOERROR, NOMESSAGE.  FULLNAME is the absolute name of
the file to load, FILE is the non-absolute name (for messages etc.),
and NOERROR and NOMESSAGE are the corresponding arguments passed to
`load'.  The function should return t if the file was loaded.Vload-force-doc-strings
Non-nil means `load' should force-load all dynamic doc strings.
This is useful when the file being loaded is a temporary copy.Vload-convert-to-unibyte
Non-nil means `read' converts strings to unibyte whenever possible.
This is normally bound by `load' and `eval-buffer' to control `read',
and is not meant for users to change.Vsource-directory
Directory in which Emacs sources were found when Emacs was built.
You cannot count on them to still be there!Vpreloaded-file-list
List of files that were preloaded (when dumping Emacs).Vbyte-boolean-vars
List of all DEFVAR_BOOL variables, used by the byte code optimizer.Vload-dangerous-libraries
Non-nil means load dangerous compiled Lisp files.
Some versions of XEmacs use different byte codes than Emacs.  These
incompatible byte codes can make Emacs crash when it tries to execute
them.Vforce-load-messages
Non-nil means force printing messages when loading Lisp files.
This overrides the value of the NOMESSAGE argument to `load'.Vbytecomp-version-regexp
Regular expression matching safe to load compiled Lisp files.
When Emacs loads a compiled Lisp file, it reads the first 512 bytes
from the file, and matches them against this regular expression.
When the regular expression matches, the file is considered to be safe
to load.Vlexical-binding
Whether to use lexical binding when evaluating code.
Non-nil means that the code in the current buffer should be evaluated
with lexical binding.
This variable is automatically set from the file variables of an
interpreted Lisp file read using `load'.  Unlike other file local
variables, this must be set in the first line of a file.Veval-buffer-list
List of buffers being read from by calls to `eval-buffer' and `eval-region'.Vlread--unescaped-character-literals
List of deprecated unescaped character literals encountered by `read'.
For internal use only.Vload-prefer-newer
Non-nil means `load' prefers the newest version of a file.
This applies when a filename suffix is not explicitly specified and
`load' is trying various possible suffixes (see `load-suffixes' and
`load-file-rep-suffixes').  Normally, it stops at the first file
that exists unless you explicitly specify one or the other.  If this
option is non-nil, it checks all suffixes and uses whichever file is
newest.
Note that if you customize this, obviously it will not affect files
that are loaded before your customizations are read!Vload-no-native
Non-nil means not to load native code unless explicitly requested.

To load a `.eln' file when this variable is non-nil, use `(load FILE)'
where FILE is the filename of the eln file, including the .eln extension.
`load-no-native' non-nil will also make Emacs not load native code
through `require'.Vread-symbol-shorthands
Alist of known symbol-name shorthands.
This variable's value can only be set via file-local variables.
See Info node `(elisp)Shorthands' for more details.Vmacroexp--dynvars
List of variables declared dynamic in the current scope.
Only valid during macro-expansion.  Internal use only.Semacs-module.o
Fmodule-load
Load module FILE.

(fn FILE)Ssyntax.o
Fsyntax-table-p
Return t if OBJECT is a syntax table.
Currently, any char-table counts as a syntax table.

(fn OBJECT)Fsyntax-table
Return the current syntax table.
This is the one specified by the current buffer.

(fn)Fstandard-syntax-table
Return the standard syntax table.
This is the one used for new buffers.

(fn)Fcopy-syntax-table
Construct a new syntax table and return it.
It is a copy of the TABLE, which defaults to the standard syntax table.

(fn &optional TABLE)Fset-syntax-table
Select a new syntax table for the current buffer.
One argument, a syntax table.

(fn TABLE)Fchar-syntax
Return the syntax code of CHARACTER, described by a character.
For example, if CHARACTER is a word constituent, the
character `w' (119) is returned.
The characters that correspond to various syntax codes
are listed in the documentation of `modify-syntax-entry'.

If you're trying to determine the syntax of characters in the buffer,
this is probably the wrong function to use, because it can't take
`syntax-table' text properties into account.  Consider using
`syntax-after' instead.

(fn CHARACTER)Fsyntax-class-to-char
Return the syntax char of CLASS, described by an integer.
For example, if SYNTAX is word constituent (the integer 2), the
character `w' (119) is returned.

(fn SYNTAX)Fmatching-paren
Return the matching parenthesis of CHARACTER, or nil if none.

(fn CHARACTER)Fstring-to-syntax
Convert a syntax descriptor STRING into a raw syntax descriptor.
STRING should be a string of the form allowed as argument of
`modify-syntax-entry'.  The return value is a raw syntax descriptor: a
cons cell (CODE . MATCHING-CHAR) which can be used, for example, as
the value of a `syntax-table' text property.

(fn STRING)Fmodify-syntax-entry
Set syntax for character CHAR according to string NEWENTRY.
The syntax is changed only for table SYNTAX-TABLE, which defaults to
 the current buffer's syntax table.
CHAR may be a cons (MIN . MAX), in which case, syntaxes of all characters
in the range MIN to MAX are changed.
The first character of NEWENTRY should be one of the following:
  Space or -  whitespace syntax.    w   word constituent.
  _           symbol constituent.   .   punctuation.
  (           open-parenthesis.     )   close-parenthesis.
  "           string quote.         \   escape.
  $           paired delimiter.     \='   expression quote or prefix operator.
  <           comment starter.      >   comment ender.
  /           character-quote.      @   inherit from parent table.
  |           generic string fence. !   generic comment fence.

Only single-character comment start and end sequences are represented thus.
Two-character sequences are represented as described below.
The second character of NEWENTRY is the matching parenthesis,
 used only if the first character is `(' or `)'.
Any additional characters are flags.
Defined flags are the characters 1, 2, 3, 4, b, p, and n.
 1 means CHAR is the start of a two-char comment start sequence.
 2 means CHAR is the second character of such a sequence.
 3 means CHAR is the start of a two-char comment end sequence.
 4 means CHAR is the second character of such a sequence.

There can be several orthogonal comment sequences.  This is to support
language modes such as C++.  By default, all comment sequences are of style
a, but you can set the comment sequence style to b (on the second character
of a comment-start, and the first character of a comment-end sequence) and/or
c (on any of its chars) using this flag:
 b means CHAR is part of comment sequence b.
 c means CHAR is part of comment sequence c.
 n means CHAR is part of a nestable comment sequence.

 p means CHAR is a prefix character for `backward-prefix-chars';
   such characters are treated as whitespace when they occur
   between expressions.

(fn CHAR NEWENTRY &optional SYNTAX-TABLE)Finternal-describe-syntax-value
Insert a description of the internal syntax description SYNTAX at point.

(fn SYNTAX)Fforward-word
Move point forward ARG words (backward if ARG is negative).
If ARG is omitted or nil, move point forward one word.
Normally returns t.
If an edge of the buffer or a field boundary is reached, point is
left there and the function returns nil.  Field boundaries are not
noticed if `inhibit-field-text-motion' is non-nil.

The word boundaries are normally determined by the buffer's syntax
table and character script (according to `char-script-table'), but
`find-word-boundary-function-table', such as set up by `subword-mode',
can change that.  If a Lisp program needs to move by words determined
strictly by the syntax table, it should use `forward-word-strictly'
instead.  See Info node `(elisp) Word Motion' for details.

(fn &optional ARG)Fskip-chars-forward
Move point forward, stopping before a char not in STRING, or at pos LIM.
STRING is like the inside of a `[...]' in a regular expression
except that `]' is never special and `\' quotes `^', `-' or `\'
 (but not at the end of a range; quoting is never needed there).
Thus, with arg "a-zA-Z", this skips letters stopping before first nonletter.
With arg "^a-zA-Z", skips nonletters stopping before first letter.
Char classes, e.g. `[:alpha:]', are supported.

Returns the distance traveled, either zero or positive.

(fn STRING &optional LIM)Fskip-chars-backward
Move point backward, stopping after a char not in STRING, or at pos LIM.
See `skip-chars-forward' for details.
Returns the distance traveled, either zero or negative.

(fn STRING &optional LIM)Fskip-syntax-forward
Move point forward across chars in specified syntax classes.
SYNTAX is a string of syntax code characters.
Stop before a char whose syntax is not in SYNTAX, or at position LIM.
If SYNTAX starts with ^, skip characters whose syntax is NOT in SYNTAX.
This function returns the distance traveled, either zero or positive.

(fn SYNTAX &optional LIM)Fskip-syntax-backward
Move point backward across chars in specified syntax classes.
SYNTAX is a string of syntax code characters.
Stop on reaching a char whose syntax is not in SYNTAX, or at position LIM.
If SYNTAX starts with ^, skip characters whose syntax is NOT in SYNTAX.
This function returns either zero or a negative number, and the absolute value
of this is the distance traveled.

(fn SYNTAX &optional LIM)Fforward-comment
Move forward across up to COUNT comments.  If COUNT is negative, move backward.
Stop scanning if we find something other than a comment or whitespace.
Set point to where scanning stops.
If COUNT comments are found as expected, with nothing except whitespace
between them, return t; otherwise return nil.

(fn COUNT)Fscan-lists
Scan from character number FROM by COUNT lists.
Scan forward if COUNT is positive, backward if COUNT is negative.
Return the character number of the position thus found.

A "list", in this context, refers to a balanced parenthetical
grouping, as determined by the syntax table.

If DEPTH is nonzero, treat that as the nesting depth of the starting
point (i.e. the starting point is DEPTH parentheses deep).  This
function scans over parentheses until the depth goes to zero COUNT
times.  Hence, positive DEPTH moves out that number of levels of
parentheses, while negative DEPTH moves to a deeper level.

Comments are ignored if `parse-sexp-ignore-comments' is non-nil.

If we reach the beginning or end of the accessible part of the buffer
before we have scanned over COUNT lists, return nil if the depth at
that point is zero, and signal an error if the depth is nonzero.

(fn FROM COUNT DEPTH)Fscan-sexps
Scan from character number FROM by COUNT balanced expressions.
If COUNT is negative, scan backwards.
Returns the character number of the position thus found.

Comments are ignored if `parse-sexp-ignore-comments' is non-nil.

If the beginning or end of (the accessible part of) the buffer is reached
in the middle of a parenthetical grouping, an error is signaled.
If the beginning or end is reached between groupings
but before count is used up, nil is returned.

(fn FROM COUNT)Fbackward-prefix-chars
Move point backward over any number of chars with prefix syntax.
This includes chars with expression prefix syntax class (\=') and those with
the prefix syntax flag (p).

(fn)Fparse-partial-sexp
Parse Lisp syntax starting at FROM until TO; return status of parse at TO.
Parsing stops at TO or when certain criteria are met;
 point is set to where parsing stops.

If OLDSTATE is omitted or nil, parsing assumes that FROM is the
 beginning of a function.  If not, OLDSTATE should be the state at
 FROM.

Value is a list of elements describing final state of parsing:
 0. depth in parens.
 1. character address of start of innermost containing list; nil if none.
 2. character address of start of last complete sexp terminated.
 3. non-nil if inside a string.
    (it is the character that will terminate the string,
     or t if the string should be terminated by a generic string delimiter.)
 4. nil if outside a comment, t if inside a non-nestable comment,
    else an integer (the current comment nesting).
 5. t if following a quote character.
 6. the minimum paren-depth encountered during this scan.
 7. style of comment, if any.
 8. character address of start of comment or string; nil if not in one.
 9. List of positions of currently open parens, outermost first.
10. When the last position scanned holds the first character of a
    (potential) two character construct, the syntax of that position,
    otherwise nil.  That construct can be a two character comment
    delimiter or an Escaped or Char-quoted character.
11..... Possible further internal information used by `parse-partial-sexp'.

If third arg TARGETDEPTH is non-nil, parsing stops if the depth
in parentheses becomes equal to TARGETDEPTH.
Fourth arg STOPBEFORE non-nil means stop when we come to
 any character that starts a sexp.
Fifth arg OLDSTATE is a list like what this function returns.
 It is used to initialize the state of the parse.  Elements number 1, 2, 6
 are ignored.
Sixth arg COMMENTSTOP non-nil means stop after the start of a comment.
 If it is the symbol `syntax-table', stop after the start of a comment or a
 string, or after end of a comment or a string.

(fn FROM TO &optional TARGETDEPTH STOPBEFORE OLDSTATE COMMENTSTOP)Vcomment-use-syntax-ppss
Non-nil means `forward-comment' can use `syntax-ppss' internally.Vparse-sexp-ignore-comments
Non-nil means `forward-sexp', etc., should treat comments as whitespace.Vparse-sexp-lookup-properties
Non-nil means `forward-sexp', etc., obey `syntax-table' property.
Otherwise, that text property is simply ignored.
See the info node `(elisp)Syntax Properties' for a description of the
`syntax-table' property.Vsyntax-propertize--done
Position up to which syntax-table properties have been set.Vwords-include-escapes
Non-nil means `forward-word', etc., should treat escape chars part of words.Vmultibyte-syntax-as-symbol
Non-nil means `scan-sexps' treats all multibyte characters as symbol.Vopen-paren-in-column-0-is-defun-start
Non-nil means an open paren in column 0 denotes the start of a defun.Vfind-word-boundary-function-table
Char table of functions to search for the word boundary.
Each function is called with two arguments; POS and LIMIT.
POS and LIMIT are character positions in the current buffer.

If POS is less than LIMIT, POS is at the first character of a word,
and the return value of a function should be a position after the
last character of that word.

If POS is not less than LIMIT, POS is at the last character of a word,
and the return value of a function should be a position at the first
character of that word.

In both cases, LIMIT bounds the search.Vcomment-end-can-be-escaped
Non-nil means an escaped ender inside a comment doesn't end the comment.Sbytecode.o
Fbyte-code
Function used internally in byte-compiled code.
The first argument, BYTESTR, is a string of byte code;
the second, VECTOR, a vector of constants;
the third, MAXDEPTH, the maximum stack depth used in this function.
If the third argument is incorrect, Emacs may crash.

(fn BYTESTR VECTOR MAXDEPTH)Finternal-stack-stats
internal

(fn)Vbyte-code-meter
A vector of vectors which holds a histogram of byte-code usage.
(aref (aref byte-code-meter 0) CODE) indicates how many times the byte
opcode CODE has been executed.
(aref (aref byte-code-meter CODE1) CODE2), where CODE1 is not 0,
indicates how many times the byte opcodes CODE1 and CODE2 have been
executed in succession.Vbyte-metering-on
If non-nil, keep profiling information on byte code usage.
The variable byte-code-meter indicates how often each byte opcode is used.
If a symbol has a property named `byte-code-meter' whose value is an
integer, it is incremented each time that symbol's function is called.Scomp.o
Fcomp--subr-signature
Support function to hash_native_abi.
For internal use.

(fn SUBR)Fcomp-el-to-eln-rel-filename
Return the relative name of the .eln file for FILENAME.
FILENAME must exist, and if it's a symlink, the target must exist.
If FILENAME is compressed, it must have the ".gz" extension,
and Emacs must have been compiled with zlib; the file will be
uncompressed on the fly to hash its contents.
Value includes the original base name, followed by 2 hash values,
one for the file name and another for its contents, followed by .eln.

(fn FILENAME)Fcomp-el-to-eln-filename
Return the absolute .eln file name for source FILENAME.
The resulting .eln file name is intended to be used for natively
compiling FILENAME.  FILENAME must exist and be readable, but other
than that, its leading directories are ignored when constructing
the name of the .eln file.
If BASE-DIR is non-nil, use it as the directory for the .eln file;
non-absolute BASE-DIR is interpreted as relative to `invocation-directory'.
If BASE-DIR is omitted or nil, look for the first writable directory
in `native-comp-eln-load-path', and use as BASE-DIR its subdirectory
whose name is given by `comp-native-version-dir'.
If FILENAME specifies a preloaded file, the directory for the .eln
file is the "preloaded/" subdirectory of the directory determined
as described above.  FILENAME is considered to be a preloaded file if
the value of `comp-file-preloaded-p' is non-nil, or if FILENAME
appears in the value of the environment variable LISP_PRELOADED;
the latter is supposed to be used by the Emacs build procedure.

(fn FILENAME &optional BASE-DIR)Fcomp--install-trampoline
Install a TRAMPOLINE for primitive SUBR-NAME.

(fn SUBR-NAME TRAMPOLINE)Fcomp--init-ctxt
Initialize the native compiler context.
Return t on success.

(fn)Fcomp--release-ctxt
Release the native compiler context.

(fn)Fcomp-native-driver-options-effective-p
Return t if `comp-native-driver-options' is effective.

(fn)Fcomp-native-compiler-options-effective-p
Return t if `comp-native-compiler-options' is effective.

(fn)Fcomp--compile-ctxt-to-file0
Compile the current context as native code to file FILENAME.

(fn FILENAME)Fcomp-libgccjit-version
Return libgccjit version in use.

The return value has the form (MAJOR MINOR PATCHLEVEL) or nil if
unknown (before GCC version 10).

(fn)Fcomp--register-lambda
Register anonymous lambda.
This gets called by top_level_run during the load phase.

(fn RELOC-IDX C-NAME MINARG MAXARG TYPE REST COMP-U)Fcomp--register-subr
Register exported subr.
This gets called by top_level_run during the load phase.

(fn NAME C-NAME MINARG MAXARG TYPE REST COMP-U)Fcomp--late-register-subr
Register exported subr.
This gets called by late_top_level_run during the load phase.

(fn NAME C-NAME MINARG MAXARG TYPE REST COMP-U)Fnative-elisp-load
Load native elisp code FILENAME.
LATE-LOAD has to be non-nil when loading for deferred compilation.

(fn FILENAME &optional LATE-LOAD)Fnative-comp-available-p
Return non-nil if native compilation support is built-in.

(fn)Vnative-comp-jit-compilation
If non-nil, compile loaded .elc files asynchronously.

After compilation, each function definition is updated to use the
natively-compiled one.Vcomp-ctxt
The compiler context.Vcomp-subr-list
List of all defined subrs.Vcomp-abi-hash
String signing the .eln files ABI.Vcomp-native-version-dir
Directory in use to disambiguate eln compatibility.Vcomp-deferred-pending-h
Hash table symbol-name -> function-value.
For internal use.Vcomp-eln-to-el-h
Hash table eln-filename -> el-filename.Vnative-comp-eln-load-path
List of directories to look for natively-compiled *.eln files.

The *.eln files are actually looked for in a version-specific
subdirectory of each directory in this list.  That subdirectory
is determined by the value of `comp-native-version-dir'.
If the name of a directory in this list is not absolute, it is
assumed to be relative to `invocation-directory'.
The last directory of this list is assumed to be the one holding
the system *.eln files, which are the files produced when building
Emacs.Vnative-comp-enable-subr-trampolines
If non-nil, enable generation of trampolines for calling primitives.
Trampolines are needed so that Emacs respects redefinition or advice of
primitive functions when they are called from Lisp code natively-compiled
at `native-comp-speed' of 2.

By default, the value is t, and when Emacs sees a redefined or advised
primitive called from natively-compiled Lisp, it generates a trampoline
for it on-the-fly.

If the value is a file name (a string), it specifies the directory in
which to deposit the generated trampolines, overriding the directories
in `native-comp-eln-load-path'.

When this variable is nil, generation of trampolines is disabled.

Disabling the generation of trampolines, when a trampoline for a redefined
or advised primitive is not already available from previous compilations,
means that such redefinition or advice will not have effect when calling
primitives from natively-compiled Lisp code.  That is, calls to primitives
without existing trampolines from natively-compiled Lisp will behave as if
the primitive was called directly from C, and will ignore its redefinition
and advice.Vcomp-installed-trampolines-h
Hash table subr-name -> installed trampoline.
This is used to prevent double trampoline instantiation, and also to
protect the trampolines against GC.Vcomp-no-native-file-h
Files for which no deferred compilation should be performed.
These files' compilation should not be deferred because the bytecode
version was explicitly requested by the user during load.
For internal use.Vcomp-file-preloaded-p
When non-nil, assume the file being compiled to be preloaded.Vcomp-loaded-comp-units-h
Hash table recording all loaded compilation units, file -> CU.Vcomp-subr-arities-h
Hash table recording the arity of Lisp primitives.
This is in case they are redefined so the compiler still knows how to
compile calls to them.
subr-name -> arity
For internal use.Vcomp-sanitizer-active
If non-nil, enable runtime execution of native-compiler sanitizer.
For this to be effective, Lisp code must be compiled
with `comp-sanitizer-emit' non-nil.
This is intended to be used only for development and
verification of the native compiler.Sdynlib.o
Sprocess.o
Fprocessp
Return t if OBJECT is a process.

(fn OBJECT)Fget-process
Return the process named NAME, or nil if there is none.

(fn NAME)Fdelete-process
Delete PROCESS: kill it and forget about it immediately.
PROCESS may be a process, a buffer, the name of a process or buffer, or
nil, indicating the current buffer's process.

Interactively, it will kill the current buffer's process.

(fn &optional PROCESS)Fprocess-status
Return the status of PROCESS.
The returned value is one of the following symbols:
run  -- for a process that is running.
stop -- for a process stopped but continuable.
exit -- for a process that has exited.
signal -- for a process that has got a fatal signal.
open -- for a network stream connection that is open.
listen -- for a network stream server that is listening.
closed -- for a network stream connection that is closed.
connect -- when waiting for a non-blocking connection to complete.
failed -- when a non-blocking connection has failed.
nil -- if arg is a process name and no such process exists.
PROCESS may be a process, a buffer, the name of a process, or
nil, indicating the current buffer's process.

(fn PROCESS)Fprocess-exit-status
Return the exit status of PROCESS or the signal number that killed it.
If PROCESS has not yet exited or died, return 0.

(fn PROCESS)Fprocess-id
Return the process id of PROCESS.
This is the pid of the external process which PROCESS uses or talks to,
an integer.
For a network, serial, and pipe connections, this value is nil.

(fn PROCESS)Fprocess-name
Return the name of PROCESS, as a string.
This is the name of the program invoked in PROCESS,
possibly modified to make it unique among process names.

(fn PROCESS)Fprocess-command
Return the command that was executed to start PROCESS.
This is a list of strings, the first string being the program executed
and the rest of the strings being the arguments given to it.
For a network or serial or pipe connection, this is nil (process is running)
or t (process is stopped).

(fn PROCESS)Fprocess-tty-name
Return the name of the terminal PROCESS uses, or nil if none.
This is the terminal that the process itself reads and writes on,
not the name of the pty that Emacs uses to talk with that terminal.

If STREAM is nil, return the terminal name if any of PROCESS's
standard streams use a terminal for communication.  If STREAM is one
of `stdin', `stdout', or `stderr', return the name of the terminal
PROCESS uses for that stream specifically, or nil if that stream
communicates via a pipe.

(fn PROCESS &optional STREAM)Fset-process-buffer
Set buffer associated with PROCESS to BUFFER (a buffer, or nil).
Return BUFFER.

(fn PROCESS BUFFER)Fprocess-buffer
Return the buffer PROCESS is associated with.
The default process filter inserts output from PROCESS into this buffer.

(fn PROCESS)Fprocess-mark
Return the marker for the end of the last output from PROCESS.

(fn PROCESS)Fset-process-filter
Give PROCESS the filter function FILTER; nil means default.
A value of t means stop accepting output from the process.

When a process has a non-default filter, its buffer is not used for output.
Instead, each time it does output, the entire string of output is
passed to the filter.

The filter gets two arguments: the process and the string of output.
The string argument is normally a multibyte string, except:
- if the process's input coding system is no-conversion or raw-text,
  it is a unibyte string (the non-converted input).

(fn PROCESS FILTER)Fprocess-filter
Return the filter function of PROCESS.
See `set-process-filter' for more info on filter functions.

(fn PROCESS)Fset-process-sentinel
Give PROCESS the sentinel SENTINEL; nil for default.
The sentinel is called as a function when the process changes state.
It gets two arguments: the process, and a string describing the change.

(fn PROCESS SENTINEL)Fprocess-sentinel
Return the sentinel of PROCESS.
See `set-process-sentinel' for more info on sentinels.

(fn PROCESS)Fset-process-thread
Set the locking thread of PROCESS to be THREAD.
If THREAD is nil, the process is unlocked.

(fn PROCESS THREAD)Fprocess-thread
Return the locking thread of PROCESS.
If PROCESS is unlocked, this function returns nil.

(fn PROCESS)Fset-process-window-size
Tell PROCESS that it has logical window size WIDTH by HEIGHT.
Value is t if PROCESS was successfully told about the window size,
nil otherwise.

(fn PROCESS HEIGHT WIDTH)Fset-process-inherit-coding-system-flag
Determine whether buffer of PROCESS will inherit coding-system.
If the second argument FLAG is non-nil, then the variable
`buffer-file-coding-system' of the buffer associated with PROCESS
will be bound to the value of the coding system used to decode
the process output.

This is useful when the coding system specified for the process buffer
leaves either the character code conversion or the end-of-line conversion
unspecified, or if the coding system used to decode the process output
is more appropriate for saving the process buffer.

Binding the variable `inherit-process-coding-system' to non-nil before
starting the process is an alternative way of setting the inherit flag
for the process which will run.

This function returns FLAG.

(fn PROCESS FLAG)Fset-process-query-on-exit-flag
Specify if query is needed for PROCESS when Emacs is exited.
If the second argument FLAG is non-nil, Emacs will query the user before
exiting or killing a buffer if PROCESS is running.  This function
returns FLAG.

(fn PROCESS FLAG)Fprocess-query-on-exit-flag
Return the current value of query-on-exit flag for PROCESS.

(fn PROCESS)Fprocess-contact
Return the contact info of PROCESS; t for a real child.
For a network or serial or pipe connection, the value depends on the
optional KEY arg.  If KEY is nil, value is a cons cell of the form
(HOST SERVICE) for a network connection or (PORT SPEED) for a serial
connection; it is t for a pipe connection.  If KEY is t, the complete
contact information for the connection is returned, else the specific
value for the keyword KEY is returned.  See `make-network-process',
`make-serial-process', or `make-pipe-process' for the list of keywords.

If PROCESS is a non-blocking network process that hasn't been fully
set up yet, this function will block until socket setup has completed.
If the optional NO-BLOCK parameter is specified, return nil instead of
waiting for the process to be fully set up.

(fn PROCESS &optional KEY NO-BLOCK)Fprocess-plist
Return the plist of PROCESS.

(fn PROCESS)Fset-process-plist
Replace the plist of PROCESS with PLIST.  Return PLIST.

(fn PROCESS PLIST)Fprocess-connection
Return the connection type of PROCESS.
The value is nil for a pipe, t or `pty' for a pty, or `stream' for
a socket connection.

(fn PROCESS)Fprocess-type
Return the connection type of PROCESS.
The value is either the symbol `real', `network', `serial', or `pipe'.
PROCESS may be a process, a buffer, the name of a process or buffer, or
nil, indicating the current buffer's process.

(fn PROCESS)Fformat-network-address
Convert network ADDRESS from internal format to a string.
A 4 or 5 element vector represents an IPv4 address (with port number).
An 8 or 9 element vector represents an IPv6 address (with port number).
If optional second argument OMIT-PORT is non-nil, don't include a port
number in the string, even when present in ADDRESS.
Return nil if format of ADDRESS is invalid.

(fn ADDRESS &optional OMIT-PORT)Fprocess-list
Return a list of all processes that are Emacs sub-processes.

(fn)Fmake-process
Start a program in a subprocess.  Return the process object for it.

This is similar to `start-process', but arguments are specified as
keyword/argument pairs.  The following arguments are defined:

:name NAME -- NAME is name for process.  It is modified if necessary
to make it unique.

:buffer BUFFER -- BUFFER is the buffer (or buffer-name) to associate
with the process.  Process output goes at end of that buffer, unless
you specify a filter function to handle the output.  BUFFER may be
also nil, meaning that this process is not associated with any buffer.

:command COMMAND -- COMMAND is a list starting with the program file
name, followed by strings to give to the program as arguments.  If the
program file name is not an absolute file name, `make-process' will
look for the program file name in `exec-path' (which is a list of
directories).

:coding CODING -- If CODING is a symbol, it specifies the coding
system used for both reading and writing for this process.  If CODING
is a cons (DECODING . ENCODING), DECODING is used for reading, and
ENCODING is used for writing.

:noquery BOOL -- When exiting Emacs, query the user if BOOL is nil and
the process is running.  If BOOL is not given, query before exiting.

:stop BOOL -- BOOL must be nil.  The `:stop' key is ignored otherwise
and is retained for compatibility with other process types such as
pipe processes.  Asynchronous subprocesses never start in the
`stopped' state.  Use `stop-process' and `continue-process' to send
signals to stop and continue a process.

:connection-type TYPE -- TYPE is control type of device used to
communicate with subprocesses.  Values are `pipe' to use a pipe, `pty'
to use a pty, or nil to use the default specified through
`process-connection-type'.  If TYPE is a cons (INPUT . OUTPUT), then
INPUT will be used for standard input and OUTPUT for standard output
(and standard error if `:stderr' is nil).

:filter FILTER -- Install FILTER as the process filter.

:sentinel SENTINEL -- Install SENTINEL as the process sentinel.

:stderr STDERR -- STDERR is either a buffer or a pipe process attached
to the standard error of subprocess.  When specifying this, the
subprocess's standard error will always communicate via a pipe, no
matter the value of `:connection-type'.  If STDERR is nil, standard error
is mixed with standard output and sent to BUFFER or FILTER.  (Note
that specifying :stderr will create a new, separate (but associated)
process, with its own filter and sentinel.  See
Info node `(elisp) Asynchronous Processes' for more details.)

:file-handler FILE-HANDLER -- If FILE-HANDLER is non-nil, then look
for a file name handler for the current buffer's `default-directory'
and invoke that file name handler to make the process.  If there is no
such handler, proceed as if FILE-HANDLER were nil.

(fn &rest ARGS)Fmake-pipe-process
Create and return a bidirectional pipe process.

In Emacs, pipes are represented by process objects, so input and
output work as for subprocesses, and `delete-process' closes a pipe.
However, a pipe process has no process id, it cannot be signaled,
and the status codes are different from normal processes.

Arguments are specified as keyword/argument pairs.  The following
arguments are defined:

:name NAME -- NAME is the name of the process.  It is modified if necessary to make it unique.

:buffer BUFFER -- BUFFER is the buffer (or buffer-name) to associate
with the process.  Process output goes at the end of that buffer,
unless you specify a filter function to handle the output.  If BUFFER
is not given, the value of NAME is used.

:coding CODING -- If CODING is a symbol, it specifies the coding
system used for both reading and writing for this process.  If CODING
is a cons (DECODING . ENCODING), DECODING is used for reading, and
ENCODING is used for writing.

:noquery BOOL -- When exiting Emacs, query the user if BOOL is nil and
the process is running.  If BOOL is not given, query before exiting.

:stop BOOL -- Start process in the `stopped' state if BOOL non-nil.
In the stopped state, a pipe process does not accept incoming data,
but you can send outgoing data.  The stopped state is cleared by
`continue-process' and set by `stop-process'.

:filter FILTER -- Install FILTER as the process filter.

:sentinel SENTINEL -- Install SENTINEL as the process sentinel.

(fn &rest ARGS)Fprocess-datagram-address
Get the current datagram address associated with PROCESS.
If PROCESS is a non-blocking network process that hasn't been fully
set up yet, this function will block until socket setup has completed.

(fn PROCESS)Fset-process-datagram-address
Set the datagram address for PROCESS to ADDRESS.
Return nil upon error setting address, ADDRESS otherwise.

If PROCESS is a non-blocking network process that hasn't been fully
set up yet, this function will block until socket setup has completed.

(fn PROCESS ADDRESS)Fset-network-process-option
For network process PROCESS set option OPTION to value VALUE.
See `make-network-process' for a list of options and values.
If optional fourth arg NO-ERROR is non-nil, don't signal an error if
OPTION is not a supported option, return nil instead; otherwise return t.

If PROCESS is a non-blocking network process that hasn't been fully
set up yet, this function will block until socket setup has completed.

(fn PROCESS OPTION VALUE &optional NO-ERROR)Fserial-process-configure
Configure speed, bytesize, etc. of a serial process.

Arguments are specified as keyword/argument pairs.  Attributes that
are not given are re-initialized from the process's current
configuration (available via the function `process-contact') or set to
reasonable default values.  The following arguments are defined:

:process PROCESS
:name NAME
:buffer BUFFER
:port PORT
-- Any of these arguments can be given to identify the process that is
to be configured.  If none of these arguments is given, the current
buffer's process is used.

:speed SPEED -- SPEED is the speed of the serial port in bits per
second, also called baud rate.  Any value can be given for SPEED, but
most serial ports work only at a few defined values between 1200 and
115200, with 9600 being the most common value.  If SPEED is nil, the
serial port is not configured any further, i.e., all other arguments
are ignored.  This may be useful for special serial ports such as
Bluetooth-to-serial converters which can only be configured through AT
commands.  A value of nil for SPEED can be used only when passed
through `make-serial-process' or `serial-term'.

:bytesize BYTESIZE -- BYTESIZE is the number of bits per byte, which
can be 7 or 8.  If BYTESIZE is not given or nil, a value of 8 is used.

:parity PARITY -- PARITY can be nil (don't use parity), the symbol
`odd' (use odd parity), or the symbol `even' (use even parity).  If
PARITY is not given, no parity is used.

:stopbits STOPBITS -- STOPBITS is the number of stopbits used to
terminate a byte transmission.  STOPBITS can be 1 or 2.  If STOPBITS
is not given or nil, 1 stopbit is used.

:flowcontrol FLOWCONTROL -- FLOWCONTROL determines the type of
flowcontrol to be used, which is either nil (don't use flowcontrol),
the symbol `hw' (use RTS/CTS hardware flowcontrol), or the symbol `sw'
(use XON/XOFF software flowcontrol).  If FLOWCONTROL is not given, no
flowcontrol is used.

`serial-process-configure' is called by `make-serial-process' for the
initial configuration of the serial port.

Examples:

(serial-process-configure :process "/dev/ttyS0" :speed 1200)

(serial-process-configure
    :buffer "COM1" :stopbits 1 :parity \='odd :flowcontrol \='hw)

(serial-process-configure :port "\\.\COM13" :bytesize 7)

(fn &rest ARGS)Fmake-serial-process
Create and return a serial port process.

In Emacs, serial port connections are represented by process objects,
so input and output work as for subprocesses, and `delete-process'
closes a serial port connection.  However, a serial process has no
process id, it cannot be signaled, and the status codes are different
from normal processes.

`make-serial-process' creates a process and a buffer, on which you
probably want to use `process-send-string'.  Try \[serial-term] for
an interactive terminal.  See below for examples.

Arguments are specified as keyword/argument pairs.  The following
arguments are defined:

:port PORT -- (mandatory) PORT is the path or name of the serial port.
For example, this could be "/dev/ttyS0" on Unix.  On Windows, this
could be "COM1", or "\\.\COM10" for ports higher than COM9 (double
the backslashes in strings).

:speed SPEED -- (mandatory) is handled by `serial-process-configure',
which this function calls.

:name NAME -- NAME is the name of the process.  If NAME is not given,
the value of PORT is used.

:buffer BUFFER -- BUFFER is the buffer (or buffer-name) to associate
with the process.  Process output goes at the end of that buffer,
unless you specify a filter function to handle the output.  If BUFFER
is not given, the value of NAME is used.

:coding CODING -- If CODING is a symbol, it specifies the coding
system used for both reading and writing for this process.  If CODING
is a cons (DECODING . ENCODING), DECODING is used for reading, and
ENCODING is used for writing.

:noquery BOOL -- When exiting Emacs, query the user if BOOL is nil and
the process is running.  If BOOL is not given, query before exiting.

:stop BOOL -- Start process in the `stopped' state if BOOL is non-nil.
In the stopped state, a serial process does not accept incoming data,
but you can send outgoing data.  The stopped state is cleared by
`continue-process' and set by `stop-process'.

:filter FILTER -- Install FILTER as the process filter.

:sentinel SENTINEL -- Install SENTINEL as the process sentinel.

:plist PLIST -- Install PLIST as the initial plist of the process.

:bytesize
:parity
:stopbits
:flowcontrol
-- This function calls `serial-process-configure' to handle these
arguments.

The original argument list, possibly modified by later configuration,
is available via the function `process-contact'.

Examples:

(make-serial-process :port "/dev/ttyS0" :speed 9600)

(make-serial-process :port "COM1" :speed 115200 :stopbits 2)

(make-serial-process :port "\\.\COM13" :speed 1200 :bytesize 7 :parity \='odd)

(make-serial-process :port "/dev/tty.BlueConsole-SPP-1" :speed nil)

(fn &rest ARGS)Fmake-network-process
Create and return a network server or client process.

In Emacs, network connections are represented by process objects, so
input and output work as for subprocesses and `delete-process' closes
a network connection.  However, a network process has no process id,
it cannot be signaled, and the status codes are different from normal
processes.

Arguments are specified as keyword/argument pairs.  The following
arguments are defined:

:name NAME -- NAME is name for process.  It is modified if necessary
to make it unique.

:buffer BUFFER -- BUFFER is the buffer (or buffer-name) to associate
with the process.  Process output goes at end of that buffer, unless
you specify a filter function to handle the output.  BUFFER may be
also nil, meaning that this process is not associated with any buffer.

:host HOST -- HOST is name of the host to connect to, or its IP
address.  The symbol `local' specifies the local host.  If specified
for a server process, it must be a valid name or address for the local
host, and only clients connecting to that address will be accepted.
If all interfaces should be bound, an address of "0.0.0.0" (for
IPv4) or "::" (for IPv6) can be used.  (On some operating systems,
using "::" listens on both IPv4 and IPv6.)  `local' will use IPv4 by
default, use a FAMILY of `ipv6' to override this.

:service SERVICE -- SERVICE is name of the service desired, or an
integer specifying a port number to connect to.  If SERVICE is t,
a random port number is selected for the server.  A port number can
be specified as an integer string, e.g., "80", as well as an integer.

:type TYPE -- TYPE is the type of connection.  The default (nil) is a
stream type connection, `datagram' creates a datagram type connection,
`seqpacket' creates a reliable datagram connection.

:family FAMILY -- FAMILY is the address (and protocol) family for the
service specified by HOST and SERVICE.  The default (nil) is to use
whatever address family (IPv4 or IPv6) that is defined for the host
and port number specified by HOST and SERVICE.  Other address families
supported are:
  local -- for a local (i.e. UNIX) address specified by SERVICE.
  ipv4  -- use IPv4 address family only.
  ipv6  -- use IPv6 address family only.

:local ADDRESS -- ADDRESS is the local address used for the connection.
This parameter is ignored when opening a client process. When specified
for a server process, the FAMILY, HOST and SERVICE args are ignored.

:remote ADDRESS -- ADDRESS is the remote partner's address for the
connection.  This parameter is ignored when opening a stream server
process.  For a datagram server process, it specifies the initial
setting of the remote datagram address.  When specified for a client
process, the FAMILY, HOST, and SERVICE args are ignored.

The format of ADDRESS depends on the address family:
- An IPv4 address is represented as a vector of integers [A B C D P]
corresponding to numeric IP address A.B.C.D and port number P.
- An IPv6 address has the same format as an IPv4 address but with 9
elements rather than 5.
- A local address is represented as a string with the address in the
local address space.
- An "unsupported family" address is represented by a cons (F . AV)
where F is the family number and AV is a vector containing the socket
address data with one element per address data byte.  Do not rely on
this format in portable code, as it may depend on implementation
defined constants, data sizes, and data structure alignment.

:coding CODING -- If CODING is a symbol, it specifies the coding
system used for both reading and writing for this process.  If CODING
is a cons (DECODING . ENCODING), DECODING is used for reading, and
ENCODING is used for writing.

:nowait BOOL -- If NOWAIT is non-nil for a stream type client
process, return without waiting for the connection to complete;
instead, the sentinel function will be called with second arg matching
"open" (if successful) or "failed" when the connect completes.
Default is to use a blocking connect (i.e. wait) for stream type
connections.

:noquery BOOL -- Query the user unless BOOL is non-nil, and process is
running when Emacs is exited.

:stop BOOL -- Start process in the `stopped' state if BOOL non-nil.
In the stopped state, a server process does not accept new
connections, and a client process does not handle incoming traffic.
The stopped state is cleared by `continue-process' and set by
`stop-process'.

:filter FILTER -- Install FILTER as the process filter.

:filter-multibyte BOOL -- If BOOL is non-nil, strings given to the
process filter are multibyte, otherwise they are unibyte.
If this keyword is not specified, the strings are multibyte.

:sentinel SENTINEL -- Install SENTINEL as the process sentinel.

:log LOG -- Install LOG as the server process log function.  This
function is called when the server accepts a network connection from a
client.  The arguments are SERVER, CLIENT, and MESSAGE, where SERVER
is the server process, CLIENT is the new process for the connection,
and MESSAGE is a string.

:plist PLIST -- Install PLIST as the new process's initial plist.

:tls-parameters LIST -- is a list that should be supplied if you're
opening a TLS connection.  The first element is the TLS type (either
`gnutls-x509pki' or `gnutls-anon'), and the remaining elements should
be a keyword list accepted by gnutls-boot (as returned by
`gnutls-boot-parameters').

:server QLEN -- if QLEN is non-nil, create a server process for the
specified FAMILY, SERVICE, and connection type (stream or datagram).
If QLEN is an integer, it is used as the max. length of the server's
pending connection queue (also known as the backlog); the default
queue length is 5.  Default is to create a client process.

The following network options can be specified for this connection:

:broadcast BOOL    -- Allow send and receive of datagram broadcasts.
:dontroute BOOL    -- Only send to directly connected hosts.
:keepalive BOOL    -- Send keep-alive messages on network stream.
:linger BOOL or TIMEOUT -- Send queued messages before closing.
:oobinline BOOL    -- Place out-of-band data in receive data stream.
:priority INT      -- Set protocol defined priority for sent packets.
:reuseaddr BOOL    -- Allow reusing a recently used local address
                      (this is allowed by default for a server process).
:bindtodevice NAME -- bind to interface NAME.  Using this may require
                      special privileges on some systems.
:use-external-socket BOOL -- Use any pre-allocated sockets that have
                             been passed to Emacs.  If Emacs wasn't
                             passed a socket, this option is silently
                             ignored.


Consult the relevant system programmer's manual pages for more
information on using these options.


A server process will listen for and accept connections from clients.
When a client connection is accepted, a new network process is created
for the connection with the following parameters:

- The client's process name is constructed by concatenating the server
process's NAME and a client identification string.
- If the FILTER argument is non-nil, the client process will not get a
separate process buffer; otherwise, the client's process buffer is a newly
created buffer named after the server process's BUFFER name or process
NAME concatenated with the client identification string.
- The connection type and the process filter and sentinel parameters are
inherited from the server process's TYPE, FILTER and SENTINEL.
- The client process's contact info is set according to the client's
addressing information (typically an IP address and a port number).
- The client process's plist is initialized from the server's plist.

Notice that the FILTER and SENTINEL args are never used directly by
the server process.  Also, the BUFFER argument is not used directly by
the server process, but via the optional :log function, accepted (and
failed) connections may be logged in the server process's buffer.

The original argument list, modified with the actual connection
information, is available via the `process-contact' function.

(fn &rest ARGS)Fnetwork-interface-list
Return an alist of all network interfaces and their network address.
Each element is a cons of the form (IFNAME . IP) where IFNAME is a
string containing the interface name, and IP is the network address in
internal format; see the description of ADDRESS in
`make-network-process'.  The interface name is not guaranteed to be
unique.

Optional parameter FULL non-nil means return all IP address info for
each interface.  Each element is then a list of the form
    (IFNAME IP BCAST MASK)
where IFNAME is the interface name, IP the IP address,
BCAST the broadcast address, and MASK the network mask.

Optional parameter FAMILY controls the type of addresses to return.
The default of nil means both IPv4 and IPv6, symbol `ipv4' means IPv4
only, symbol `ipv6' means IPv6 only.

See also `network-interface-info', which is limited to IPv4 only.

If the information is not available, return nil.

(fn &optional FULL FAMILY)Fnetwork-interface-info
Return information about network interface named IFNAME.
The return value is a list (ADDR BCAST NETMASK HWADDR FLAGS),
where ADDR is the layer 3 address, BCAST is the layer 3 broadcast address,
NETMASK is the layer 3 network mask, HWADDR is the layer 2 address, and
FLAGS is the current flags of the interface.

Data that is unavailable is returned as nil.  Only returns IPv4 layer 3
addresses, for IPv6 use `network-interface-list'.

(fn IFNAME)Fnetwork-lookup-address-info
Look up Internet Protocol (IP) address info of NAME.
NAME must be an ASCII-only string.  For looking up internationalized
hostnames, use `puny-encode-domain' on the string first.

Optional argument FAMILY controls whether to look up IPv4 or IPv6
addresses.  The default of nil means both, symbol `ipv4' means IPv4
only, symbol `ipv6' means IPv6 only.
Optional argument HINTS allows specifying the hints passed to the
underlying library call.  The only supported value is `numeric', which
means treat NAME as a numeric IP address.  This also suppresses DNS
traffic.
Return a list of addresses, or nil if none were found.  Each address
is a vector of integers, as per the description of ADDRESS in
`make-network-process'.  In case of error log the error message
returned from the lookup.

(fn NAME &optional FAMILY HINT)Faccept-process-output
Allow any pending output from subprocesses to be read by Emacs.
It is given to their filter functions.
Optional argument PROCESS means to return only after output is
received from PROCESS or PROCESS closes the connection.

Optional second argument SECONDS and third argument MILLISEC
specify a timeout; return after that much time even if there is
no subprocess output.  If SECONDS is a floating point number,
it specifies a fractional number of seconds to wait.
The MILLISEC argument is obsolete and should be avoided.

If optional fourth argument JUST-THIS-ONE is non-nil, accept output
from PROCESS only, suspending reading output from other processes.
If JUST-THIS-ONE is an integer, don't run any timers either.
Return non-nil if we received any output from PROCESS (or, if PROCESS
is nil, from any process) before the timeout expired or the
corresponding connection was closed.

(fn &optional PROCESS SECONDS MILLISEC JUST-THIS-ONE)Finternal-default-process-filter
Function used as default process filter.
This inserts the process's output into its buffer, if there is one.
Otherwise it discards the output.

(fn PROC TEXT)Fprocess-send-region
Send current contents of region as input to PROCESS.
PROCESS may be a process, a buffer, the name of a process or buffer, or
nil, indicating the current buffer's process.
Called from program, takes three arguments, PROCESS, START and END.
If the region is larger than the input buffer of the process (the
length of which depends on the process connection type and the
operating system), it is sent in several bunches.  This may happen
even for shorter regions.  Output from processes can arrive in between
bunches.

If PROCESS is a non-blocking network process that hasn't been fully
set up yet, this function will block until socket setup has completed.

(fn PROCESS START END)Fprocess-send-string
Send PROCESS the contents of STRING as input.
PROCESS may be a process, a buffer, the name of a process or buffer, or
nil, indicating the current buffer's process.
If STRING is larger than the input buffer of the process (the length
of which depends on the process connection type and the operating
system), it is sent in several bunches.  This may happen even for
shorter strings.  Output from processes can arrive in between bunches.

If PROCESS is a non-blocking network process that hasn't been fully
set up yet, this function will block until socket setup has completed.

(fn PROCESS STRING)Fprocess-running-child-p
Return non-nil if PROCESS has given control of its terminal to a child.
If the operating system does not make it possible to find out, return t.
If it's possible to find out, return the numeric ID of the foreground
process group if PROCESS did give control of its terminal to a
child process, and return nil if it didn't.

PROCESS must be a real subprocess, not a connection.

(fn &optional PROCESS)Finternal-default-interrupt-process
Default function to interrupt process PROCESS.
It shall be the last element in list `interrupt-process-functions'.
See function `interrupt-process' for more details on usage.

(fn &optional PROCESS CURRENT-GROUP)Finterrupt-process
Interrupt process PROCESS.
PROCESS may be a process, a buffer, or the name of a process or buffer.
No arg or nil means current buffer's process.
Second arg CURRENT-GROUP non-nil means send signal to
the current process-group of the process's controlling terminal
rather than to the process's own process group.
If the process is a shell, this means interrupt current subjob
rather than the shell.

If CURRENT-GROUP is `lambda', and if the shell owns the terminal,
don't send the signal.

This function calls the functions of `interrupt-process-functions' in
the order of the list, until one of them returns non-nil.

(fn &optional PROCESS CURRENT-GROUP)Fkill-process
Kill process PROCESS.  May be process or name of one.
See function `interrupt-process' for more details on usage.

(fn &optional PROCESS CURRENT-GROUP)Fquit-process
Send QUIT signal to process PROCESS.  May be process or name of one.
See function `interrupt-process' for more details on usage.

(fn &optional PROCESS CURRENT-GROUP)Fstop-process
Stop process PROCESS.  May be process or name of one.
See function `interrupt-process' for more details on usage.
If PROCESS is a network or serial or pipe connection, inhibit handling
of incoming traffic.

(fn &optional PROCESS CURRENT-GROUP)Fcontinue-process
Continue process PROCESS.  May be process or name of one.
See function `interrupt-process' for more details on usage.
If PROCESS is a network or serial process, resume handling of incoming
traffic.

(fn &optional PROCESS CURRENT-GROUP)Finternal-default-signal-process
Default function to send PROCESS the signal with code SIGCODE.
It shall be the last element in list `signal-process-functions'.
See function `signal-process' for more details on usage.

(fn PROCESS SIGCODE &optional REMOTE)Fsignal-process
Send PROCESS the signal with code SIGCODE.
PROCESS may also be a number specifying the process id of the
process to signal; in this case, the process need not be a child of
this Emacs.
If PROCESS is a process object which contains the property
`remote-pid', or PROCESS is a number and REMOTE is a remote file name,
PROCESS is interpreted as process on the respective remote host, which
will be the process to signal.
If PROCESS is a string, it is interpreted as process object with the
respective process name, or as a number.
SIGCODE may be an integer, or a symbol whose name is a signal name.

(fn PROCESS SIGCODE &optional REMOTE)Fprocess-send-eof
Make PROCESS see end-of-file in its input.
EOF comes after any text already sent to it.
PROCESS may be a process, a buffer, the name of a process or buffer, or
nil, indicating the current buffer's process.
If PROCESS is a network connection, or is a process communicating
through a pipe (as opposed to a pty), then you cannot send any more
text to PROCESS after you call this function.
If PROCESS is a serial process, wait until all output written to the
process has been transmitted to the serial port.

(fn &optional PROCESS)Finternal-default-process-sentinel
Function used as default sentinel for processes.
This inserts a status message into the process's buffer, if there is one.

(fn PROC MSG)Fset-process-coding-system
Set coding systems of PROCESS to DECODING and ENCODING.
DECODING will be used to decode subprocess output and ENCODING to
encode subprocess input.

(fn PROCESS &optional DECODING ENCODING)Fprocess-coding-system
Return a cons of coding systems for decoding and encoding of PROCESS.

(fn PROCESS)Fget-buffer-process
Return the (or a) live process associated with BUFFER.
BUFFER may be a buffer or the name of one.
Return nil if all processes associated with BUFFER have been
deleted or killed.

(fn BUFFER)Fprocess-inherit-coding-system-flag
Return the value of inherit-coding-system flag for PROCESS.
If this flag is t, `buffer-file-coding-system' of the buffer
associated with PROCESS will inherit the coding system used to decode
the process output.

(fn PROCESS)Fwaiting-for-user-input-p
Return non-nil if Emacs is waiting for input from the user.
This is intended for use by asynchronous process output filters and sentinels.

(fn)Flist-system-processes
Return a list of numerical process IDs of all running processes.
If this functionality is unsupported, return nil.
If `default-directory' is remote, return process IDs of the respective remote host.

See `process-attributes' for getting attributes of a process given its ID.

(fn)Fprocess-attributes
Return attributes of the process given by its PID, a number.
If `default-directory' is remote, PID is regarded as process
identifier on the respective remote host.

Value is an alist where each element is a cons cell of the form

    (KEY . VALUE)

If this functionality is unsupported, the value is nil.

See `list-system-processes' for getting a list of all process IDs.

The KEYs of the attributes that this function may return are listed
below, together with the type of the associated VALUE (in parentheses).
Not all platforms support all of these attributes; unsupported
attributes will not appear in the returned alist.
Unless explicitly indicated otherwise, numbers can have either
integer or floating point values.

 euid    -- Effective user User ID of the process (number)
 user    -- User name corresponding to euid (string)
 egid    -- Effective user Group ID of the process (number)
 group   -- Group name corresponding to egid (string)
 comm    -- Command name (executable name only) (string)
 state   -- Process state code, such as "S", "R", or "T" (string)
 ppid    -- Parent process ID (number)
 pgrp    -- Process group ID (number)
 sess    -- Session ID, i.e. process ID of session leader (number)
 ttname  -- Controlling tty name (string)
 tpgid   -- ID of foreground process group on the process's tty (number)
 minflt  -- number of minor page faults (number)
 majflt  -- number of major page faults (number)
 cminflt -- cumulative number of minor page faults (number)
 cmajflt -- cumulative number of major page faults (number)
 utime   -- user time used by the process, in `current-time' format
 stime   -- system time used by the process (current-time)
 time    -- sum of utime and stime (current-time)
 cutime  -- user time used by the process and its children (current-time)
 cstime  -- system time used by the process and its children (current-time)
 ctime   -- sum of cutime and cstime (current-time)
 pri     -- priority of the process (number)
 nice    -- nice value of the process (number)
 thcount -- process thread count (number)
 start   -- time the process started (current-time)
 vsize   -- virtual memory size of the process in KB's (number)
 rss     -- resident set size of the process in KB's (number)
 etime   -- elapsed time the process is running (current-time)
 pcpu    -- percents of CPU time used by the process (floating-point number)
 pmem    -- percents of total physical memory used by process's resident set
              (floating-point number)
 args    -- command line which invoked the process (string).

(fn PID)Fnum-processors
Return the number of processors, a positive integer.
Each usable thread execution unit counts as a processor.
By default, count the number of available processors,
overridable via the OMP_NUM_THREADS environment variable.
If optional argument QUERY is `current', ignore OMP_NUM_THREADS.
If QUERY is `all', also count processors not available.

(fn &optional QUERY)Fsignal-names
Return a list of known signal names on this system.

(fn)Vdelete-exited-processes
Non-nil means delete processes immediately when they exit.
A value of nil means don't delete them until `list-processes' is run.Vprocess-connection-type
Control type of device used to communicate with subprocesses.
Values are nil to use a pipe, or t or `pty' to use a pty.
The value has no effect if the system has no ptys or if all ptys are busy:
then a pipe is used in any case.
The value takes effect when `start-process' is called.Vprocess-adaptive-read-buffering
If non-nil, improve receive buffering by delaying after short reads.
On some systems, when Emacs reads the output from a subprocess, the output data
is read in very small blocks, potentially resulting in very poor performance.
This behavior can be remedied to some extent by setting this variable to a
non-nil value, as it will automatically delay reading from such processes, to
allow them to produce more output before Emacs tries to read it.
If the value is t, the delay is reset after each write to the process; any other
non-nil value means that the delay is not reset on write.
The variable takes effect when `start-process' is called.Vprocess-prioritize-lower-fds
Whether to start checking for subprocess output from first file descriptor.
Emacs loops through file descriptors to check for output from subprocesses.
If this variable is nil, the default, then after accepting output from a
subprocess, Emacs will continue checking the rest of descriptors, starting
from the one following the descriptor it just read.  If this variable is
non-nil, Emacs will always restart the loop from the first file descriptor,
thus favoring processes with lower descriptors.Vinterrupt-process-functions
List of functions to be called for `interrupt-process'.
The arguments of the functions are the same as for `interrupt-process'.
These functions are called in the order of the list, until one of them
returns non-nil.Vsignal-process-functions
List of functions to be called for `signal-process'.
The arguments of the functions are the same as for `signal-process'.
These functions are called in the order of the list, until one of them
returns non-nil.Vinternal--daemon-sockname
Name of external socket passed to Emacs, or nil if none.Vread-process-output-max
Maximum number of bytes to read from subprocess in a single chunk.
Enlarge the value only if the subprocess generates very large (megabytes)
amounts of data in one go.

On GNU/Linux systems, the value should not exceed
/proc/sys/fs/pipe-max-size.  See pipe(7) manpage for details.Vfast-read-process-output
Non-nil to optimize the insertion of process output.
We skip calling `internal-default-process-filter' and don't allocate
the Lisp string that would be used as its argument.  Only affects the
case of asynchronous process with the default filter.Vprocess-error-pause-time
The number of seconds to pause after handling process errors.
This isn't used for all process-related errors, but is used when a
sentinel or a process filter function has an error.Sgnutls.o
Fgnutls-asynchronous-parameters
Mark this process as being a pre-init GnuTLS process.
The second parameter is the list of parameters to feed to gnutls-boot
to finish setting up the connection.

(fn PROC PARAMS)Fgnutls-get-initstage
Return the GnuTLS init stage of process PROC.
See also `gnutls-boot'.

(fn PROC)Fgnutls-errorp
Return t if ERROR indicates a GnuTLS problem.
ERROR is an integer or a symbol with an integer `gnutls-code' property.

(fn ERROR)Fgnutls-error-fatalp
Return non-nil if ERROR is fatal.
ERROR is an integer or a symbol with an integer `gnutls-code' property.
Usage: (gnutls-error-fatalp ERROR)

(fn ERR)Fgnutls-error-string
Return a description of ERROR.
ERROR is an integer or a symbol with an integer `gnutls-code' property.

(fn ERROR)Fgnutls-deinit
Deallocate GnuTLS resources associated with process PROC.
See also `gnutls-boot'.

(fn PROC)Fgnutls-peer-status-warning-describe
Describe the warning of a GnuTLS peer status from `gnutls-peer-status'.

(fn STATUS-SYMBOL)Fgnutls-peer-status
Describe a GnuTLS PROC peer certificate and any warnings about it.

The return value is a property list with top-level keys :warnings and
:certificates.

The :warnings entry is a list of symbols you can get a description of
with `gnutls-peer-status-warning-describe', and :certificates is the
certificate chain for the connection, with the host certificate
first, and intermediary certificates (if any) following it.

In addition, for backwards compatibility, the host certificate is also
returned as the :certificate entry.

(fn PROC)Fgnutls-format-certificate
Format a X.509 certificate to a string.

Given a PEM-encoded X.509 certificate CERT, returns a human-readable
string representation.

(fn CERT)Fgnutls-boot
Initialize GnuTLS client for process PROC with TYPE+PROPLIST.
Currently only client mode is supported.  Return a success/failure
value you can check with `gnutls-errorp'.

TYPE is a symbol, either `gnutls-anon' or `gnutls-x509pki'.
PROPLIST is a property list with the following keys:

:hostname is a string naming the remote host.

:priority is a GnuTLS priority string, defaults to "NORMAL".

:trustfiles is a list of PEM-encoded trust files for `gnutls-x509pki'.

:crlfiles is a list of PEM-encoded CRL lists for `gnutls-x509pki'.

:keylist is an alist of PEM-encoded key files and PEM-encoded
certificates for `gnutls-x509pki'.

:callbacks is an alist of callback functions, see below.

:loglevel is the debug level requested from GnuTLS, try 4.

:verify-flags is a bitset as per GnuTLS'
gnutls_certificate_set_verify_flags.

:verify-hostname-error is ignored.  Pass :hostname in :verify-error
instead.

:verify-error is a list of symbols to express verification checks or
t to do all checks.  Currently it can contain `:trustfiles' and
`:hostname' to verify the certificate or the hostname respectively.

:min-prime-bits is the minimum accepted number of bits the client will
accept in Diffie-Hellman key exchange.

:complete-negotiation, if non-nil, will make negotiation complete
before returning even on non-blocking sockets.

:pass, the password of the private key as per GnuTLS'
gnutls_certificate_set_x509_key_file2.  Specify as nil to have a NULL
password.

:flags, a list of symbols relating to :pass, each specifying a flag:
GNUTLS_PKCS_PLAIN, GNUTLS_PKCS_PKCS12_3DES,
GNUTLS_PKCS_PKCS12_ARCFOUR, GNUTLS_PKCS_PKCS12_RC2_40,
GNUTLS_PKCS_PBES2_3DES, GNUTLS_PKCS_PBES2_AES_128,
GNUTLS_PKCS_PBES2_AES_192, GNUTLS_PKCS_PBES2_AES_256,
GNUTLS_PKCS_NULL_PASSWORD, GNUTLS_PKCS_PBES2_DES,
GNUTLS_PKCS_PBES2_DES_MD5, GNUTLS_PKCS_PBES2_GOST_TC26Z,
GNUTLS_PKCS_PBES2_GOST_CPA, GNUTLS_PKCS_PBES2_GOST_CPB,
GNUTLS_PKCS_PBES2_GOST_CPC, GNUTLS_PKCS_PBES2_GOST_CPD.  If not
specified, or if nil, the bitflag with value 0 is used.
Note that some of these are only supported since GnuTLS 3.6.3.

The debug level will be set for this process AND globally for GnuTLS.
So if you set it higher or lower at any point, it affects global
debugging.

Note that the priority is set on the client.  The server does not use
the protocols's priority except for disabling protocols that were not
specified.

Processes must be initialized with this function before other GnuTLS
functions are used.  This function allocates resources which can only
be deallocated by calling `gnutls-deinit' or by calling it again.

The :pass and :flags keys are ignored with old versions of GnuTLS, and
:flags is ignored if :pass is not specified.

The callbacks alist can have a `verify' key, associated with a
verification function (UNUSED).

Each authentication type may need additional information in order to
work.  For X.509 PKI (`gnutls-x509pki'), you probably need at least
one trustfile (usually a CA bundle).

(fn PROC TYPE PROPLIST)Fgnutls-bye
Terminate current GnuTLS connection for process PROC.
The connection should have been initiated using `gnutls-handshake'.

If CONT is not nil the TLS connection gets terminated and further
receives and sends will be disallowed.  If the return value is zero you
may continue using the connection.  If CONT is nil, GnuTLS actually
sends an alert containing a close request and waits for the peer to
reply with the same message.  In order to reuse the connection you
should wait for an EOF from the peer.

This function may also return `gnutls-e-again', or
`gnutls-e-interrupted'.

(fn PROC CONT)Fgnutls-ciphers
Return alist of GnuTLS symmetric cipher descriptions as plists.
The alist key is the cipher name.

(fn)Fgnutls-symmetric-encrypt
Encrypt INPUT with symmetric CIPHER, KEY+AEAD_AUTH, and IV to a unibyte string.

Return nil on error.

The KEY can be specified as a buffer or string or in other ways (see
Info node `(elisp)Format of GnuTLS Cryptography Inputs').  The KEY
will be wiped after use if it's a string.

The IV and INPUT and the optional AEAD_AUTH can also be specified as a
buffer or string or in other ways.

The alist of symmetric ciphers can be obtained with `gnutls-ciphers'.
The CIPHER may be a string or symbol matching a key in that alist, or
a plist with the :cipher-id numeric property, or the number itself.

AEAD ciphers: these ciphers will have a `gnutls-ciphers' entry with
:cipher-aead-capable set to t.  AEAD_AUTH can be supplied for
these AEAD ciphers, but it may still be omitted (nil) as well.

(fn CIPHER KEY IV INPUT &optional AEAD-AUTH)Fgnutls-symmetric-decrypt
Decrypt INPUT with symmetric CIPHER, KEY+AEAD_AUTH, and IV to a unibyte string.

Return nil on error.

The KEY can be specified as a buffer or string or in other ways (see
Info node `(elisp)Format of GnuTLS Cryptography Inputs').  The KEY
will be wiped after use if it's a string.

The IV and INPUT and the optional AEAD_AUTH can also be specified as a
buffer or string or in other ways.

The alist of symmetric ciphers can be obtained with `gnutls-ciphers'.
The CIPHER may be a string or symbol matching a key in that alist, or
a plist with the `:cipher-id' numeric property, or the number itself.

AEAD ciphers: these ciphers will have a `gnutls-ciphers' entry with
:cipher-aead-capable set to t.  AEAD_AUTH can be supplied for
these AEAD ciphers, but it may still be omitted (nil) as well.

(fn CIPHER KEY IV INPUT &optional AEAD-AUTH)Fgnutls-macs
Return alist of GnuTLS mac-algorithm method descriptions as plists.

Use the value of the alist (extract it with `alist-get' for instance)
with `gnutls-hash-mac'.  The alist key is the mac-algorithm method
name.

(fn)Fgnutls-digests
Return alist of GnuTLS digest-algorithm method descriptions as plists.

Use the value of the alist (extract it with `alist-get' for instance)
with `gnutls-hash-digest'.  The alist key is the digest-algorithm
method name.

(fn)Fgnutls-hash-mac
Hash INPUT with HASH-METHOD and KEY into a unibyte string.

Return nil on error.

The KEY can be specified as a buffer or string or in other ways (see
Info node `(elisp)Format of GnuTLS Cryptography Inputs').  The KEY
will be wiped after use if it's a string.

The INPUT can also be specified as a buffer or string or in other
ways.

The alist of MAC algorithms can be obtained with `gnutls-macs'.  The
HASH-METHOD may be a string or symbol matching a key in that alist, or
a plist with the `:mac-algorithm-id' numeric property, or the number
itself.

(fn HASH-METHOD KEY INPUT)Fgnutls-hash-digest
Digest INPUT with DIGEST-METHOD into a unibyte string.

Return nil on error.

The INPUT can be specified as a buffer or string or in other
ways (see Info node `(elisp)Format of GnuTLS Cryptography Inputs').

The alist of digest algorithms can be obtained with `gnutls-digests'.
The DIGEST-METHOD may be a string or symbol matching a key in that
alist, or a plist with the `:digest-algorithm-id' numeric property, or
the number itself.

(fn DIGEST-METHOD INPUT)Fgnutls-available-p
Return list of capabilities if GnuTLS is available in this instance of Emacs.

...if supported         : then...
GnuTLS 3 or higher      : the list will contain `gnutls3'.
GnuTLS MACs             : the list will contain `macs'.
GnuTLS digests          : the list will contain `digests'.
GnuTLS symmetric ciphers: the list will contain `ciphers'.
GnuTLS AEAD ciphers     : the list will contain `AEAD-ciphers'.
%DUMBFW                 : the list will contain `ClientHello\ Padding'.
Any GnuTLS extension with ID up to 100
                        : the list will contain its name.

(fn)Vlibgnutls-version
The version of libgnutls that Emacs was compiled with.
The version number is encoded as an integer with the major version in
the ten thousands place, minor version in the hundreds, and patch
level in the ones.  For builds without libgnutls, the value is -1.Vgnutls-log-level
Logging level used by the GnuTLS functions.
Set this larger than 0 to get debug output in the *Messages* buffer.
1 is for important messages, 2 is for debug data, and higher numbers
are as per the GnuTLS logging conventions.Scallproc.o
Fcall-process
Call PROGRAM synchronously in separate process.
The remaining arguments are optional.

The program's input comes from file INFILE (nil means `null-device').
If INFILE is a relative path, it will be looked for relative to the
directory where the process is run (see below).  If you want to make the
input come from an Emacs buffer, use `call-process-region' instead.

Third argument DESTINATION specifies how to handle program's output.
("Output" here means both standard output and standard error
output.)
If DESTINATION is a buffer or the name of a buffer, or t (which stands for
the current buffer), it means insert output in that buffer before point.
If DESTINATION is nil, it means discard output; 0 means discard
 and don't wait for the program to terminate.
If DESTINATION is `(:file FILE)', where FILE is a file name string,
 it means that output should be written to that file (if the file
 already exists it is overwritten).
DESTINATION can also have the form (REAL-BUFFER STDERR-FILE); in that case,
 REAL-BUFFER says what to do with standard output, as above,
 while STDERR-FILE says what to do with standard error in the child.
 STDERR-FILE may be nil (discard standard error output),
 t (mix it with ordinary output), or a file name string.

Fourth arg DISPLAY non-nil means redisplay buffer as output is inserted.
Remaining arguments ARGS are strings passed as command arguments to PROGRAM.

If PROGRAM is not an absolute file name, `call-process' will look for
PROGRAM in `exec-path' (which is a list of directories).

If executable PROGRAM can't be found as an executable, `call-process'
signals a Lisp error.  `call-process' reports errors in execution of
the program only through its return and output.

If DESTINATION is 0, `call-process' returns immediately with value nil.
Otherwise it waits for PROGRAM to terminate
and returns a numeric exit status or a signal description string.
If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.

The process runs in `default-directory' if that is local (as
determined by `unhandled-file-name-directory'), or "~" otherwise.  If
you want to run a process in a remote directory use `process-file'.

(fn PROGRAM &optional INFILE DESTINATION DISPLAY &rest ARGS)Fcall-process-region
Send text from START to END to a synchronous process running PROGRAM.

START and END are normally buffer positions specifying the part of the
buffer to send to the process.
If START is nil, that means to use the entire buffer contents; END is
ignored.
If START is a string, then send that string to the process
instead of any buffer contents; END is ignored.
The remaining arguments are optional.
Delete the text if fourth arg DELETE is non-nil.

Insert output in BUFFER before point; t means current buffer; nil for
 BUFFER means discard it; 0 means discard and don't wait; and `(:file
 FILE)', where FILE is a file name string, means that it should be
 written to that file (if the file already exists it is overwritten).
BUFFER can be a string which is the name of a buffer.
BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
REAL-BUFFER says what to do with standard output, as above,
while STDERR-FILE says what to do with standard error in the child.
STDERR-FILE may be nil (discard standard error output),
t (mix it with ordinary output), or a file name string.

Sixth arg DISPLAY non-nil means redisplay buffer as output is inserted.
Remaining arguments ARGS are passed to PROGRAM at startup as command-line
arguments.

If PROGRAM is not an absolute file name, `call-process-region' will
look for PROGRAM in `exec-path' (which is a list of directories).

If BUFFER is 0, `call-process-region' returns immediately with value nil.
Otherwise it waits for PROGRAM to terminate
and returns a numeric exit status or a signal description string.
If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.

(fn START END PROGRAM &optional DELETE BUFFER DISPLAY &rest ARGS)Fgetenv-internal
Get the value of environment variable VARIABLE.
VARIABLE should be a string.  Value is nil if VARIABLE is undefined in
the environment.  Otherwise, value is a string.

This function searches `process-environment' for VARIABLE.

If optional parameter ENV is a list, then search this list instead of
`process-environment', and return t when encountering a negative entry
(an entry for a variable with no value).

(fn VARIABLE &optional ENV)Vshell-file-name
File name to load inferior shells from.
Initialized from the SHELL environment variable, or to a system-dependent
default if SHELL is unset.  See Info node `(elisp)Security Considerations'.Vexec-path
List of directories to search programs to run in subprocesses.
Each element is a string (directory name) or nil (try default directory).

By default the last element of this list is `exec-directory'. The
last element is not always used, for example in shell completion
(`shell-dynamic-complete-command').Vexec-suffixes
List of suffixes to try to find executable file names.
Each element is a string.Vexec-directory
Directory for executables for Emacs to invoke.
More generally, this includes any architecture-dependent files
that are built and installed from the Emacs distribution.Vdata-directory
Directory of machine-independent files that come with GNU Emacs.
These are files intended for Emacs to use while it runs.Vdoc-directory
Directory containing the DOC file that comes with GNU Emacs.
This is usually the same as `data-directory'.Vconfigure-info-directory
For internal use by the build procedure only.
This is the name of the directory in which the build procedure installed
Emacs's info files; the default value for `Info-default-directory-list'
includes this.Vshared-game-score-directory
Directory of score files for games which come with GNU Emacs.
If this variable is nil, then Emacs is unable to use a shared directory.Vinitial-environment
List of environment variables inherited from the parent process.
Each element should be a string of the form ENVVARNAME=VALUE.
The elements must normally be decoded (using `locale-coding-system') for use.Vprocess-environment
List of overridden environment variables for subprocesses to inherit.
Each element should be a string of the form ENVVARNAME=VALUE.

Entries in this list take precedence to those in the frame-local
environments.  Therefore, let-binding `process-environment' is an easy
way to temporarily change the value of an environment variable,
irrespective of where it comes from.  To use `process-environment' to
remove an environment variable, include only its name in the list,
without "=VALUE".

This variable is set to nil when Emacs starts.

If multiple entries define the same variable, the first one always
takes precedence.

Non-ASCII characters are encoded according to the initial value of
`locale-coding-system', i.e. the elements must normally be decoded for
use.

See `setenv' and `getenv'.Vctags-program-name
Name of the `ctags' program distributed with Emacs.
Use this instead of calling `ctags' directly, as `ctags' may have been
renamed to comply with executable naming restrictions on the system.Vetags-program-name
Name of the `etags' program distributed with Emacs.
Use this instead of calling `etags' directly, as `etags' may have been
renamed to comply with executable naming restrictions on the system.Vhexl-program-name
Name of the `hexl' program distributed with Emacs.
Use this instead of calling `hexl' directly, as `hexl' may have been
renamed to comply with executable naming restrictions on the system.Vemacsclient-program-name
Name of the `emacsclient' program distributed with Emacs.
Use this instead of calling `emacsclient' directly, as `emacsclient'
may have been renamed to comply with executable naming restrictions on
the system.Vmovemail-program-name
Name of the `movemail' program distributed with Emacs.
Use this instead of calling `movemail' directly, as `movemail'
may have been renamed to comply with executable naming restrictions on
the system.Vebrowse-program-name
Name of the `ebrowse' program distributed with Emacs.
Use this instead of calling `ebrowse' directly, as `ebrowse'
may have been renamed to comply with executable naming restrictions on
the system.Vrcs2log-program-name
Name of the `rcs2log' program distributed with Emacs.
Use this instead of calling `rcs2log' directly, as `rcs2log'
may have been renamed to comply with executable naming restrictions on
the system.Sregion-cache.o
Ssound.o
Fplay-sound-internal
Play sound SOUND.

Internal use only, use `play-sound' instead.

(fn SOUND)Stimefns.o
Ftime-add
Return the sum of two time values A and B, as a time value.
See `format-time-string' for the various forms of a time value.
For example, nil stands for the current time.

(fn A B)Ftime-subtract
Return the difference between two time values A and B, as a time value.
You can use `float-time' to convert the difference into elapsed seconds.
See `format-time-string' for the various forms of a time value.
For example, nil stands for the current time.

(fn A B)Ftime-less-p
Return non-nil if time value A is less than time value B.
See `format-time-string' for the various forms of a time value.
For example, nil stands for the current time.

(fn A B)Ftime-equal-p
Return non-nil if A and B are equal time values.
See `format-time-string' for the various forms of a time value.

(fn A B)Ffloat-time
Return the current time, as a float number of seconds since the epoch.
If SPECIFIED-TIME is given, it is a time value to convert to float
instead of the current time.  See `format-time-string' for the various
forms of a time value.

WARNING: Since the result is floating point, it may not be exact.
If precise time stamps are required, use either `time-convert',
or (if you need time as a string) `format-time-string'.

(fn &optional SPECIFIED-TIME)Fformat-time-string
Use FORMAT-STRING to format the time value TIME.
A time value that is omitted or nil stands for the current time,
a number stands for that many seconds, an integer pair (TICKS . HZ)
stands for TICKS/HZ seconds, and an integer list (HI LO US PS) stands
for HI*2**16 + LO + US/10**6 + PS/10**12 seconds.  This function
treats seconds as time since the epoch of 1970-01-01 00:00:00 UTC.

The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
the TZ environment variable.  It can also be a list (as from
`current-time-zone') or an integer (as from `decode-time') applied
without consideration for daylight saving time.

The value is a copy of FORMAT-STRING, but with certain constructs replaced
by text that describes the specified date and time in TIME:

%Y is the year, %y year without century, %C the century.
%G is the year corresponding to the ISO week, %g year corresponding
 to the ISO week, without century.
%m is the numeric month.
%b and %h are the locale's abbreviated month name, %B the full name.
 (%h is not supported on MS-Windows.)
%d is the day of the month, zero-padded, %e is blank-padded.
%u is the numeric day of week from 1 (Monday) to 7, %w from 0 (Sunday) to 6.
%a is the locale's abbreviated name of the day of week, %A the full name.
%U is the week number starting on Sunday, %W starting on Monday,
 %V the week number according to ISO 8601.
%j is the day of the year.

%H is the hour on a 24-hour clock, %I is on a 12-hour clock, %k is like %H
 only blank-padded, %l is like %I blank-padded.
%p is the locale's equivalent of either AM or PM.
%q is the calendar quarter (1–4).
%M is the minute (00-59).
%S is the second (00-59; 00-60 on platforms with leap seconds)
%s is the number of seconds since 1970-01-01 00:00:00 +0000.
%N is the nanosecond, %6N the microsecond, %3N the millisecond, etc.
%Z is the time zone abbreviation, %z is the numeric form.

%c is the locale's date and time format.
%x is the locale's "preferred" date format.
%D is like "%m/%d/%y".
%F is the ISO 8601 date format (like "%+4Y-%m-%d").

%R is like "%H:%M", %T is like "%H:%M:%S", %r is like "%I:%M:%S %p".
%X is the locale's "preferred" time format.

Finally, %n is a newline, %t is a tab, %% is a literal %, and
unrecognized %-sequences stand for themselves.

A %-sequence can contain optional flags, field width, and a modifier
(in that order) after the `%'.  The flags are:

`-' Do not pad the field.
`_' Pad with spaces.
`0' Pad with zeros.
`+' Pad with zeros and put `+' before nonnegative year numbers with >4 digits.
`^' Use upper case characters if possible.
`#' Use opposite case characters if possible.

A field width N is an unsigned decimal integer with a leading digit
nonzero.  %NX is like %X, but takes up at least N positions.  The
field width is (on GNU/Linux and some other systems) in measured in
bytes, not characters.  It depends on the locale what the width (in
characters) %NX will end up being, especially when there are non-ASCII
characters in %X.

The modifiers are:

`E' Use the locale's alternative version.
`O' Use the locale's number symbols.

For example, to produce full ISO 8601 format, use "%FT%T%z".

(fn FORMAT-STRING &optional TIME ZONE)Fdecode-time
Decode a timestamp into (SEC MINUTE HOUR DAY MONTH YEAR DOW DST UTCOFF).
The optional TIME is the time value to convert.  See
`format-time-string' for the various forms of a time value.

The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
the TZ environment variable.  It can also be a list (as from
`current-time-zone') or an integer (the UTC offset in seconds) applied
without consideration for daylight saving time.

The optional FORM specifies the form of the SEC member.  If `integer',
SEC is an integer; if t, SEC is an integer or (TICKS . HZ) timestamp
with the same precision as TIME.  An omitted or nil FORM is currently
treated like `integer', but this may change in future Emacs versions.

To access (or alter) the elements in the time value, the
`decoded-time-second', `decoded-time-minute', `decoded-time-hour',
`decoded-time-day', `decoded-time-month', `decoded-time-year',
`decoded-time-weekday', `decoded-time-dst' and `decoded-time-zone'
accessors can be used.

The list has the following nine members: SEC is an integer or
Lisp timestamp representing a nonnegative value less than 60
(or less than 61 if the operating system supports leap seconds).
MINUTE is an integer between 0 and 59.  HOUR is an integer
between 0 and 23.  DAY is an integer between 1 and 31.  MONTH is an
integer between 1 and 12.  YEAR is the year number, an integer; 0
represents 1 BC.  DOW is the day of week, an integer between 0 and 6,
where 0 is Sunday.  DST is t if daylight saving time is in effect,
nil if it is not in effect, and -1 if daylight saving information is
not available.  UTCOFF is an integer indicating the UTC offset in
seconds, i.e., the number of seconds east of Greenwich.  (Note that
Common Lisp has different meanings for DOW and UTCOFF, and its
SEC is always an integer between 0 and 59.)

(fn &optional TIME ZONE FORM)Fencode-time
Convert TIME to a timestamp.

TIME is a list (SECOND MINUTE HOUR DAY MONTH YEAR IGNORED DST ZONE)
in the style of `decode-time', so that (encode-time (decode-time ...)) works.
In this list, ZONE can be nil for Emacs local time, t for Universal
Time, `wall' for system wall clock time, or a string as in the TZ
environment variable.  ZONE can also be a list (as from
`current-time-zone') or an integer (as from `decode-time') applied
without consideration for daylight saving time.  If ZONE specifies a
time zone with daylight-saving transitions, DST is t for daylight
saving time, nil for standard time, and -1 to cause the daylight
saving flag to be guessed.

TIME can also be a list (SECOND MINUTE HOUR DAY MONTH YEAR), which is
equivalent to (SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil).

As an obsolescent calling convention, if this function is called with
6 or more arguments, the first 6 arguments are SECOND, MINUTE, HOUR,
DAY, MONTH, and YEAR, and specify the components of a decoded time.
If there are more than 6 arguments the *last* argument is used as ZONE
and any other extra arguments are ignored, so that (apply
#\='encode-time (decode-time ...)) works.  In this obsolescent
convention, DST is -1 and ZONE defaults to nil.

The range of supported years is at least 1970 to the near future.
Out-of-range values for SECOND through MONTH are brought into range
via date arithmetic.  This can be tricky especially when combined with
DST; see Info node `(elisp)Time Conversion' for details and caveats.

(fn TIME &rest OBSOLESCENT-ARGUMENTS)Ftime-convert
Convert TIME value to a Lisp timestamp of the given FORM.
Truncate the returned value toward minus infinity.

If FORM is a positive integer, return a pair of integers (TICKS . FORM),
where TICKS is the number of clock ticks and FORM is the clock frequency
in ticks per second.

If FORM is t, return (TICKS . PHZ), where PHZ is a suitable clock
frequency in ticks per second.

If FORM is `integer', return an integer count of seconds.

If FORM is `list', return an integer list (HIGH LOW USEC PSEC), where
HIGH has the most significant bits of the seconds, LOW has the least
significant 16 bits, and USEC and PSEC are the microsecond and
picosecond counts.

If FORM is nil, the behavior depends on `current-time-list',
but new code should not rely on it.

(fn TIME &optional FORM)Fcurrent-time
Return the current time, as the number of seconds since 1970-01-01 00:00:00.
If the variable `current-time-list' is nil, the time is returned as a
pair of integers (TICKS . HZ), where TICKS counts clock ticks and HZ
is the clock ticks per second.  Otherwise, the time is returned as a
list of integers (HIGH LOW USEC PSEC) where HIGH has the most
significant bits of the seconds, LOW has the least significant 16
bits, and USEC and PSEC are the microsecond and picosecond counts.

You can use `time-convert' to get a particular timestamp form
regardless of the value of `current-time-list'.

(fn)Fcurrent-cpu-time
Return the current CPU time along with its resolution.
The return value is a pair (CPU-TICKS . TICKS-PER-SEC).
The CPU-TICKS counter can wrap around, so values cannot be meaningfully
compared if too much time has passed between them.

(fn)Fcurrent-time-string
Return the current local time, as a human-readable string.
Programs can use this function to decode a time,
since the number of columns in each field is fixed
if the year is in the range 1000-9999.
The format is `Sun Sep 16 01:03:52 1973'.
However, see also the functions `decode-time' and `format-time-string'
which provide a much more powerful and general facility.

If SPECIFIED-TIME is given, it is the time value to format instead of
the current time.  See `format-time-string' for the various forms of a
time value.

The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
the TZ environment variable.  It can also be a list (as from
`current-time-zone') or an integer (as from `decode-time') applied
without consideration for daylight saving time.

(fn &optional SPECIFIED-TIME ZONE)Fcurrent-time-zone
Return the offset and name for the local time zone.
This returns a list of the form (OFFSET NAME).
OFFSET is an integer number of seconds ahead of UTC (east of Greenwich).
    A negative value means west of Greenwich.
NAME is a string giving the name of the time zone.
If SPECIFIED-TIME is given, the time zone offset is determined from it
instead of using the current time.  The argument should be a Lisp
time value; see `format-time-string' for the various forms of a time
value.

The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
the TZ environment variable.  It can also be a list (as from
`current-time-zone') or an integer (as from `decode-time') applied
without consideration for daylight saving time.

Some operating systems cannot provide all this information to Emacs;
in this case, `current-time-zone' returns a list containing nil for
the data it can't find.

(fn &optional SPECIFIED-TIME ZONE)Fset-time-zone-rule
Set the Emacs local time zone using TZ, a string specifying a time zone rule.
If TZ is nil or `wall', use system wall clock time; this differs from
the usual Emacs convention where nil means current local time.  If TZ
is t, use Universal Time.  If TZ is a list (as from
`current-time-zone') or an integer (as from `decode-time'), use the
specified time zone without consideration for daylight saving time.

Instead of calling this function, you typically want something else.
To temporarily use a different time zone rule for just one invocation
of `decode-time', `encode-time', or `format-time-string', pass the
function a ZONE argument.  To change local time consistently
throughout Emacs, call (setenv "TZ" TZ): this changes both the
environment of the Emacs process and the variable
`process-environment', whereas `set-time-zone-rule' affects only the
former.

(fn TZ)Vcurrent-time-list
Whether `current-time' should return list or (TICKS . HZ) form.

This boolean variable is a transition aid.  If t, `current-time' and
related functions return timestamps in list form, typically
(HIGH LOW USEC PSEC); otherwise, they use (TICKS . HZ) form.
Currently this variable defaults to t, for behavior compatible with
previous Emacs versions.  Developers are encouraged to test
timestamp-related code with this variable set to nil, as it will
default to nil in a future Emacs version, and will be removed in some
version after that.Satimer.o
Fdebug-timer-check
Run internal self-tests to check timers subsystem.
Return t if all self-tests are passed, nil otherwise.

(fn)Sdoprnt.o
Sintervals.o
Stextprop.o
Ftext-properties-at
Return the list of properties of the character at POSITION in OBJECT.
If the optional second argument OBJECT is a buffer (or nil, which means
the current buffer), POSITION is a buffer position (integer or marker).

If OBJECT is a string, POSITION is a 0-based index into it.

If POSITION is at the end of OBJECT, the value is nil, but note that
buffer narrowing does not affect the value.  That is, if OBJECT is a
buffer or nil, and the buffer is narrowed and POSITION is at the end
of the narrowed buffer, the result may be non-nil.

If you want to display the text properties at point in a human-readable
form, use the `describe-text-properties' command.

(fn POSITION &optional OBJECT)Fget-text-property
Return the value of POSITION's property PROP, in OBJECT.
OBJECT should be a buffer or a string; if omitted or nil, it defaults
to the current buffer.

If POSITION is at the end of OBJECT, the value is nil, but note that
buffer narrowing does not affect the value.  That is, if the buffer is
narrowed and POSITION is at the end of the narrowed buffer, the result
may be non-nil.

(fn POSITION PROP &optional OBJECT)Fget-char-property
Return the value of POSITION's property PROP, in OBJECT.
Both overlay properties and text properties are checked.
OBJECT is optional and defaults to the current buffer.
If POSITION is at the end of OBJECT, the value is nil.
If OBJECT is a buffer, then overlay properties are considered as well as
text properties.
If OBJECT is a window, then that window's buffer is used, but window-specific
overlays are considered only if they are associated with OBJECT.

(fn POSITION PROP &optional OBJECT)Fget-char-property-and-overlay
Like `get-char-property', but with extra overlay information.
The value is a cons cell.  Its car is the return value of `get-char-property'
with the same arguments--that is, the value of POSITION's property
PROP in OBJECT.  Its cdr is the overlay in which the property was
found, or nil, if it was found as a text property or not found at all.

OBJECT is optional and defaults to the current buffer.  OBJECT may be
a string, a buffer or a window.  For strings, the cdr of the return
value is always nil, since strings do not have overlays.  If OBJECT is
a window, then that window's buffer is used, but window-specific
overlays are considered only if they are associated with OBJECT.  If
POSITION is at the end of OBJECT, both car and cdr are nil.

(fn POSITION PROP &optional OBJECT)Fnext-char-property-change
Return the position of next text property or overlay change.
This scans characters forward in the current buffer from POSITION till
it finds a change in some text property, or the beginning or end of an
overlay, and returns the position of that.
If none is found, and LIMIT is nil or omitted, the function
returns (point-max).

If the optional second argument LIMIT is non-nil, the function doesn't
search past position LIMIT, and returns LIMIT if nothing is found
before LIMIT.  LIMIT is a no-op if it is greater than (point-max).

(fn POSITION &optional LIMIT)Fprevious-char-property-change
Return the position of previous text property or overlay change.
Scans characters backward in the current buffer from POSITION till it
finds a change in some text property, or the beginning or end of an
overlay, and returns the position of that.
If none is found, and LIMIT is nil or omitted, the function
returns (point-min).

If the optional second argument LIMIT is non-nil, the function doesn't
search before position LIMIT, and returns LIMIT if nothing is found
before LIMIT.  LIMIT is a no-op if it is less than (point-min).

(fn POSITION &optional LIMIT)Fnext-single-char-property-change
Return the position of next text property or overlay change for a specific property.
Scans characters forward from POSITION till it finds
a change in the PROP property, then returns the position of the change.
If the optional third argument OBJECT is a buffer (or nil, which means
the current buffer), POSITION is a buffer position (integer or marker).
If OBJECT is a string, POSITION is a 0-based index into it.

In a string, scan runs to the end of the string, unless LIMIT is non-nil.
In a buffer, scan runs to end of buffer, unless LIMIT is non-nil.
If the optional fourth argument LIMIT is non-nil, don't search
past position LIMIT; return LIMIT if nothing is found before LIMIT.
However, if OBJECT is a buffer and LIMIT is beyond the end of the
buffer, this function returns `point-max', not LIMIT.

The property values are compared with `eq'.

(fn POSITION PROP &optional OBJECT LIMIT)Fprevious-single-char-property-change
Return the position of previous text property or overlay change for a specific property.
Scans characters backward from POSITION till it finds
a change in the PROP property, then returns the position of the change.
If the optional third argument OBJECT is a buffer (or nil, which means
the current buffer), POSITION is a buffer position (integer or marker).
If OBJECT is a string, POSITION is a 0-based index into it.

In a string, scan runs to the start of the string, unless LIMIT is non-nil.
In a buffer, if LIMIT is nil or omitted, it runs to (point-min), and the
value cannot be less than that.
If the optional fourth argument LIMIT is non-nil, don't search back past
position LIMIT; return LIMIT if nothing is found before reaching LIMIT.

The property values are compared with `eq'.
If the property is constant all the way to the start of OBJECT, return the
first valid position in OBJECT.

(fn POSITION PROP &optional OBJECT LIMIT)Fnext-property-change
Return the position of next property change.
Scans characters forward from POSITION in OBJECT till it finds
a change in some text property, then returns the position of the change.
If the optional second argument OBJECT is a buffer (or nil, which means
the current buffer), POSITION is a buffer position (integer or marker).
If OBJECT is a string, POSITION is a 0-based index into it.
Return nil if LIMIT is nil or omitted, and the property is constant all
the way to the end of OBJECT; if the value is non-nil, it is a position
greater than POSITION, never equal.

If the optional third argument LIMIT is non-nil, don't search
past position LIMIT; return LIMIT if nothing is found before LIMIT.

(fn POSITION &optional OBJECT LIMIT)Fnext-single-property-change
Return the position of next property change for a specific property.
Scans characters forward from POSITION till it finds
a change in the PROP property, then returns the position of the change.
If the optional third argument OBJECT is a buffer (or nil, which means
the current buffer), POSITION is a buffer position (integer or marker).
If OBJECT is a string, POSITION is a 0-based index into it.
The property values are compared with `eq'.
Return nil if LIMIT is nil or omitted, and the property is constant all
the way to the end of OBJECT; if the value is non-nil, it is a position
greater than POSITION, never equal.

If the optional fourth argument LIMIT is non-nil, don't search
past position LIMIT; return LIMIT if nothing is found before LIMIT.

(fn POSITION PROP &optional OBJECT LIMIT)Fprevious-property-change
Return the position of previous property change.
Scans characters backwards from POSITION in OBJECT till it finds
a change in some text property, then returns the position of the change.
If the optional second argument OBJECT is a buffer (or nil, which means
the current buffer), POSITION is a buffer position (integer or marker).
If OBJECT is a string, POSITION is a 0-based index into it.
Return nil if LIMIT is nil or omitted, and the property is constant all
the way to the start of OBJECT; if the value is non-nil, it is a position
less than POSITION, never equal.

If the optional third argument LIMIT is non-nil, don't search
back past position LIMIT; return LIMIT if nothing is found until LIMIT.

(fn POSITION &optional OBJECT LIMIT)Fprevious-single-property-change
Return the position of previous property change for a specific property.
Scans characters backward from POSITION till it finds
a change in the PROP property, then returns the position of the change.
If the optional third argument OBJECT is a buffer (or nil, which means
the current buffer), POSITION is a buffer position (integer or marker).
If OBJECT is a string, POSITION is a 0-based index into it.
The property values are compared with `eq'.
Return nil if LIMIT is nil or omitted, and the property is constant all
the way to the start of OBJECT; if the value is non-nil, it is a position
less than POSITION, never equal.

If the optional fourth argument LIMIT is non-nil, don't search
back past position LIMIT; return LIMIT if nothing is found until LIMIT.

(fn POSITION PROP &optional OBJECT LIMIT)Fadd-text-properties
Add properties to the text from START to END.
The third argument PROPERTIES is a property list
specifying the property values to add.  If the optional fourth argument
OBJECT is a buffer (or nil, which means the current buffer),
START and END are buffer positions (integers or markers).
If OBJECT is a string, START and END are 0-based indices into it.
Return t if any property value actually changed, nil otherwise.

(fn START END PROPERTIES &optional OBJECT)Fput-text-property
Set one property of the text from START to END.
The third and fourth arguments PROPERTY and VALUE
specify the property to add.
If the optional fifth argument OBJECT is a buffer (or nil, which means
the current buffer), START and END are buffer positions (integers or
markers).  If OBJECT is a string, START and END are 0-based indices into it.

(fn START END PROPERTY VALUE &optional OBJECT)Fset-text-properties
Completely replace properties of text from START to END.
The third argument PROPERTIES is the new property list.
If the optional fourth argument OBJECT is a buffer (or nil, which means
the current buffer), START and END are buffer positions (integers or
markers).  If OBJECT is a string, START and END are 0-based indices into it.
If PROPERTIES is nil, the effect is to remove all properties from
the designated part of OBJECT.

(fn START END PROPERTIES &optional OBJECT)Fadd-face-text-property
Add the face property to the text from START to END.
FACE specifies the face to add.  It should be a valid value of the
`face' property (typically a face name or a plist of face attributes
and values).

If any text in the region already has a non-nil `face' property, those
face(s) are retained.  This is done by setting the `face' property to
a list of faces, with FACE as the first element (by default) and the
pre-existing faces as the remaining elements.

If optional fourth argument APPEND is non-nil, append FACE to the end
of the face list instead.

If optional fifth argument OBJECT is a buffer (or nil, which means the
current buffer), START and END are buffer positions (integers or
markers).  If OBJECT is a string, START and END are 0-based indices
into it.

(fn START END FACE &optional APPEND OBJECT)Fremove-text-properties
Remove some properties from text from START to END.
The third argument PROPERTIES is a property list
whose property names specify the properties to remove.
(The values stored in PROPERTIES are ignored.)
If the optional fourth argument OBJECT is a buffer (or nil, which means
the current buffer), START and END are buffer positions (integers or
markers).  If OBJECT is a string, START and END are 0-based indices into it.
Return t if any property was actually removed, nil otherwise.

Use `set-text-properties' if you want to remove all text properties.

(fn START END PROPERTIES &optional OBJECT)Fremove-list-of-text-properties
Remove some properties from text from START to END.
The third argument LIST-OF-PROPERTIES is a list of property names to remove.
If the optional fourth argument OBJECT is a buffer (or nil, which means
the current buffer), START and END are buffer positions (integers or
markers).  If OBJECT is a string, START and END are 0-based indices into it.
Return t if any property was actually removed, nil otherwise.

(fn START END LIST-OF-PROPERTIES &optional OBJECT)Ftext-property-any
Check text from START to END for property PROPERTY equaling VALUE.
If so, return the position of the first character whose property PROPERTY
is `eq' to VALUE.  Otherwise return nil.
If the optional fifth argument OBJECT is a buffer (or nil, which means
the current buffer), START and END are buffer positions (integers or
markers).  If OBJECT is a string, START and END are 0-based indices into it.

(fn START END PROPERTY VALUE &optional OBJECT)Ftext-property-not-all
Check text from START to END for property PROPERTY not equaling VALUE.
If so, return the position of the first character whose property PROPERTY
is not `eq' to VALUE.  Otherwise, return nil.
If the optional fifth argument OBJECT is a buffer (or nil, which means
the current buffer), START and END are buffer positions (integers or
markers).  If OBJECT is a string, START and END are 0-based indices into it.

(fn START END PROPERTY VALUE &optional OBJECT)Vdefault-text-properties
Property-list used as default values.
The value of a property in this list is seen as the value for every
character that does not have its own value for that property.Vchar-property-alias-alist
Alist of alternative properties for properties without a value.
Each element should look like (PROPERTY ALTERNATIVE1 ALTERNATIVE2...).
If a piece of text has no direct value for a particular property, then
this alist is consulted.  If that property appears in the alist, then
the first non-nil value from the associated alternative properties is
returned.Vinhibit-point-motion-hooks
If non-nil, don't run `point-left' and `point-entered' text properties.
This also inhibits the use of the `intangible' text property.Vtext-property-default-nonsticky
Alist of properties vs the corresponding non-stickiness.
Each element has the form (PROPERTY . NONSTICKINESS).

If a character in a buffer has PROPERTY, new text inserted adjacent to
the character doesn't inherit PROPERTY if NONSTICKINESS is non-nil,
inherits it if NONSTICKINESS is nil.  The `front-sticky' and
`rear-nonsticky' properties of the character override NONSTICKINESS.Scomposite.o
Fclear-composition-cache
Internal use only.
Clear composition cache.

(fn)Fcomposition-get-gstring
Return a glyph-string for characters between FROM and TO.
If the glyph string is for graphic display, FONT-OBJECT must be
a font-object to use for those characters.
Otherwise (for terminal display), FONT-OBJECT must be a terminal ID, a
frame, or nil for the selected frame's terminal device.

If the optional 4th argument STRING is not nil, it is a string
containing the target characters between indices FROM and TO,
which are treated as in `substring'.  Otherwise FROM and TO are
character positions in current buffer; they can be in either order,
and can be integers or markers.

A glyph-string is a vector containing information about how to display
a specific character sequence.  The format is:
   [HEADER ID GLYPH ...]

HEADER is a vector of this form:
    [FONT-OBJECT CHAR ...]
where
    FONT-OBJECT is a font-object for all glyphs in the glyph-string,
    or the terminal coding system of the specified terminal.
    CHARs are characters to be composed by GLYPHs.

ID is an identification number of the glyph-string.  It may be nil if
not yet shaped.

GLYPH is a vector whose elements have this form:
    [ FROM-IDX TO-IDX C CODE WIDTH LBEARING RBEARING ASCENT DESCENT
      [ [X-OFF Y-OFF WADJUST] | nil] ]
where
    FROM-IDX and TO-IDX are used internally and should not be touched.
    C is the character of the glyph.
    CODE is the glyph-code of C in FONT-OBJECT.
    WIDTH thru DESCENT are the metrics (in pixels) of the glyph.
    X-OFF and Y-OFF are offsets to the base position for the glyph.
    WADJUST is the adjustment to the normal width of the glyph.

If GLYPH is nil, the remaining elements of the glyph-string vector
should be ignored.

(fn FROM TO FONT-OBJECT STRING)Fcompose-region-internal
Internal use only.

Compose text in the region between START and END.
Optional 3rd and 4th arguments are COMPONENTS and MODIFICATION-FUNC
for the composition.  See `compose-region' for more details.

(fn START END &optional COMPONENTS MODIFICATION-FUNC)Fcompose-string-internal
Internal use only.

Compose text between indices START and END of STRING, where
START and END are treated as in `substring'.  Optional 4th
and 5th arguments are COMPONENTS and MODIFICATION-FUNC
for the composition.  See `compose-string' for more details.

(fn STRING START END &optional COMPONENTS MODIFICATION-FUNC)Ffind-composition-internal
Internal use only.

Return information about composition at or nearest to position POS.
See `find-composition' for more details.

(fn POS LIMIT STRING DETAIL-P)Fcomposition-sort-rules
Sort composition RULES by their LOOKBACK parameter.

If RULES include just one rule, return RULES.
Otherwise, return a new list of rules where all the rules are
arranged in decreasing order of the LOOKBACK parameter of the
rules (the second element of the rule's vector).  This is required
when combining composition rules from different sources, because
of the way buffer text is examined for matching one of the rules.

(fn RULES)Vcompose-chars-after-function
Function to adjust composition of buffer text.

This function is called with three arguments: FROM, TO, and OBJECT.
FROM and TO specify the range of text whose composition should be
adjusted.  OBJECT, if non-nil, is a string that contains the text.

This function is called after a text with `composition' property is
inserted or deleted to keep `composition' property of buffer text
valid.

The default value is the function `compose-chars-after'.Vauto-composition-mode
Non-nil if Auto-Composition mode is enabled.
Use the command `auto-composition-mode' to change this variable.

If this variable is a string, `auto-composition-mode' will be disabled in
buffers displayed on a terminal whose type, as reported by `tty-type',
compares equal to that string.Vauto-composition-function
Function to call to compose characters automatically.
This function is called from the display engine with 6 arguments:
FUNC, FROM, TO, FONT-OBJECT, STRING, and DIRECTION.

FUNC is the function to compose characters.  On text-mode display,
FUNC is ignored and `compose-gstring-for-terminal' is used instead.

If STRING is nil, the function must compose characters in the region
between FROM and TO in the current buffer.

Otherwise, STRING is a string, and FROM and TO are indices into the
string.  In this case, the function must compose characters in the
string.

FONT-OBJECT is the font to use, or nil if characters are to be
composed on a text-mode display.

DIRECTION is the bidi directionality of the text to shape.  It could
be L2R or R2L, or nil if unknown.Vcomposition-function-table
Char-table of functions for automatic character composition.
For each character that has to be composed automatically with
preceding and/or following characters, this char-table contains
a function to call to compose that character.

The element at index C in the table, if non-nil, is a list of
composition rules of the form ([PATTERN PREV-CHARS FUNC] ...);
the rules must be specified in the descending order of PREV-CHARS
values.

PATTERN is a regular expression which C and the surrounding
characters must match.

PREV-CHARS is a non-negative integer (less than 4) specifying how many
characters before C to check the matching with PATTERN.  If it is 0,
PATTERN must match C and the following characters.  If it is 1,
PATTERN must match a character before C and the following characters.

If PREV-CHARS is 0, PATTERN can be nil, which means that the
single character C should be composed.

FUNC is a function to return a glyph-string representing a
composition of the characters that match PATTERN.  It is
called with one argument GSTRING.

GSTRING is a template of a glyph-string to return.  It is already
filled with a proper header for the characters to compose, and
glyphs corresponding to those characters one by one.  The
function must return a new glyph-string with the same header as
GSTRING, or modify GSTRING itself and return it.

See also the documentation of `auto-composition-mode'.Vauto-composition-emoji-eligible-codepoints
List of codepoints for which auto-composition will check for an emoji font.

These are codepoints which have Emoji_Presentation = No, and thus by
default are not displayed as emoji.  In certain circumstances, such as
when followed by U+FE0F (VS-16) the emoji font should be used for
them anyway.

This list is auto-generated, you should not need to modify it.Sxml.o
Flibxml-parse-html-region
Parse the region as an HTML document and return the parse tree.
If START is nil, it defaults to `point-min'.  If END is nil, it
defaults to `point-max'.

If BASE-URL is non-nil, it is used if and when reporting errors and
warnings from the underlying libxml2 library.  Currently, errors and
warnings from the library are suppressed, so this argument is largely
ignored.

If you want comments to be stripped, use the `xml-remove-comments'
function to strip comments before calling this function.

(fn &optional START END BASE-URL DISCARD-COMMENTS)Flibxml-parse-xml-region
Parse the region as an XML document and return the parse tree.
If START is nil, it defaults to `point-min'.  If END is nil, it
defaults to `point-max'.

If BASE-URL is non-nil, it is used if and when reporting errors and
warnings from the underlying libxml2 library.  Currently, errors and
warnings from the library are suppressed, so this argument is largely
ignored.

If you want comments to be stripped, use the `xml-remove-comments'
function to strip comments before calling this function.

(fn &optional START END BASE-URL DISCARD-COMMENTS)Flibxml-available-p
Return t if libxml2 support is available in this instance of Emacs.

(fn)Slcms.o
Flcms-cie-de2000
Compute CIEDE2000 metric distance between COLOR1 and COLOR2.
Each color is a list of L*a*b* coordinates, where the L* channel ranges from
0 to 100, and the a* and b* channels range from -128 to 128.
Optional arguments KL, KC, KH are weighting parameters for lightness,
chroma, and hue, respectively. The parameters each default to 1.

(fn COLOR1 COLOR2 &optional KL KC KH)Flcms-xyz->jch
Convert CIE XYZ to CIE CAM02 JCh.
COLOR is a list (X Y Z), with Y scaled about unity.
Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs',
which see.

(fn COLOR &optional WHITEPOINT VIEW)Flcms-jch->xyz
Convert CIE CAM02 JCh to CIE XYZ.
COLOR is a list (J C h), where lightness of white is equal to 100, and hue
is given in degrees.
Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs',
which see.

(fn COLOR &optional WHITEPOINT VIEW)Flcms-jch->jab
Convert CIE CAM02 JCh to CAM02-UCS J'a'b'.
COLOR is a list (J C h) as described in `lcms-jch->xyz', which see.
Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs',
which see.

(fn COLOR &optional WHITEPOINT VIEW)Flcms-jab->jch
Convert CAM02-UCS J'a'b' to CIE CAM02 JCh.
COLOR is a list (J' a' b'), where white corresponds to lightness J equal to 100.
Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs',
which see.

(fn COLOR &optional WHITEPOINT VIEW)Flcms-cam02-ucs
Compute CAM02-UCS metric distance between COLOR1 and COLOR2.
Each color is a list of XYZ tristimulus values, with Y scaled about unity.
Optional argument WHITEPOINT is the XYZ white point, which defaults to
illuminant D65.
Optional argument VIEW is a list containing the viewing conditions, and
is of the form (YB LA SURROUND DVALUE) where SURROUND corresponds to
  1   AVG_SURROUND
  2   DIM_SURROUND
  3   DARK_SURROUND
  4   CUTSHEET_SURROUND
The default viewing conditions are (20 100 1 1).

(fn COLOR1 COLOR2 &optional WHITEPOINT VIEW)Flcms-temp->white-point
Return XYZ black body chromaticity from TEMPERATURE given in K.
Valid range of TEMPERATURE is from 4000K to 25000K.

(fn TEMPERATURE)Flcms2-available-p
Return t if lcms2 color calculations are available in this instance of Emacs.

(fn)Skqueue.o
Fkqueue-add-watch
Add a watch for filesystem events pertaining to FILE.

This arranges for filesystem events pertaining to FILE to be reported
to Emacs.  Use `kqueue-rm-watch' to cancel the watch.

Returned value is a descriptor for the added watch.  If the file cannot be
watched for some reason, this function signals a `file-notify-error' error.

FLAGS is a list of events to be watched for.  It can include the
following symbols:

  `create' -- FILE was created
  `delete' -- FILE was deleted
  `write'  -- FILE has changed
  `extend' -- FILE was extended
  `attrib' -- a FILE attribute was changed
  `link'   -- a FILE's link count was changed
  `rename' -- FILE was moved to FILE1
  `revoke' -- FILE was unmounted

When any event happens, Emacs will call the CALLBACK function passing
it a single argument EVENT, which is of the form

  (DESCRIPTOR ACTIONS FILE [FILE1])

DESCRIPTOR is the same object as the one returned by this function.
ACTIONS is a list of events.

FILE is the name of the file whose event is being reported.  FILE1
will be reported only in case of the `rename' event.  This is possible
only when the upper directory of the renamed file is watched.

(fn FILE FLAGS CALLBACK)Fkqueue-rm-watch
Remove an existing WATCH-DESCRIPTOR.

WATCH-DESCRIPTOR should be an object returned by `kqueue-add-watch'.

(fn WATCH-DESCRIPTOR)Fkqueue-valid-p
Check a watch specified by its WATCH-DESCRIPTOR.

WATCH-DESCRIPTOR should be an object returned by `kqueue-add-watch'.

A watch can become invalid if the file or directory it watches is
deleted, or if the watcher thread exits abnormally for any other
reason.  Removing the watch by calling `kqueue-rm-watch' also makes it
invalid.

(fn WATCH-DESCRIPTOR)Sprofiler.o
Fprofiler-cpu-start
Start or restart the cpu profiler.
It takes call-stack samples each SAMPLING-INTERVAL nanoseconds, approximately.
See also `profiler-log-size' and `profiler-max-stack-depth'.

(fn SAMPLING-INTERVAL)Fprofiler-cpu-stop
Stop the cpu profiler.  The profiler log is not affected.
Return non-nil if the profiler was running.

(fn)Fprofiler-cpu-running-p
Return non-nil if cpu profiler is running.

(fn)Fprofiler-cpu-log
Return the current cpu profiler log.
The log is a hash-table mapping backtraces to counters which represent
the amount of time spent at those points.  Every backtrace is a vector
of functions, where the last few elements may be nil.
Before returning, a new log is allocated for future samples.

(fn)Fprofiler-memory-start
Start/restart the memory profiler.
The memory profiler will take samples of the call-stack whenever a new
allocation takes place.  Note that most small allocations only trigger
the profiler occasionally.
See also `profiler-log-size' and `profiler-max-stack-depth'.

(fn)Fprofiler-memory-stop
Stop the memory profiler.  The profiler log is not affected.
Return non-nil if the profiler was running.

(fn)Fprofiler-memory-running-p
Return non-nil if memory profiler is running.

(fn)Fprofiler-memory-log
Return the current memory profiler log.
The log is a hash-table mapping backtraces to counters which represent
the amount of memory allocated at those points.  Every backtrace is a vector
of functions, where the last few elements may be nil.
Before returning, a new log is allocated for future samples.

(fn)Ffunction-equal
Return non-nil if F1 and F2 come from the same source.
Used to determine if different closures are just different instances of
the same lambda expression, or are really unrelated function.

(fn F1 F2)Vprofiler-max-stack-depth
Number of elements from the call-stack recorded in the log.Vprofiler-log-size
Number of distinct call-stacks that can be recorded in a profiler log.
If the log gets full, some of the least-seen call-stacks will be evicted
to make room for new entries.Sdecompress.o
Fzlib-available-p
Return t if zlib decompression is available in this instance of Emacs.

(fn)Fzlib-decompress-region
Decompress a gzip- or zlib-compressed region.
Replace the text in the region by the decompressed data.

If optional parameter ALLOW-PARTIAL is nil or omitted, then on
failure, return nil and leave the data in place.  Otherwise, return
the number of bytes that were not decompressed and replace the region
text by whatever data was successfully decompressed (similar to gzip).
If decompression is completely successful return t.

This function can be called only in unibyte buffers.

(fn START END &optional ALLOW-PARTIAL)Sthread.o
Fmake-mutex
Create a mutex.
A mutex provides a synchronization point for threads.
Only one thread at a time can hold a mutex.  Other threads attempting
to acquire it will block until the mutex is available.

A thread can acquire a mutex any number of times.

NAME, if given, is used as the name of the mutex.  The name is
informational only.

(fn &optional NAME)Fmutex-lock
Acquire a mutex.
If the current thread already owns MUTEX, increment the count and
return.
Otherwise, if no thread owns MUTEX, make the current thread own it.
Otherwise, block until MUTEX is available, or until the current thread
is signaled using `thread-signal'.
Note that calls to `mutex-lock' and `mutex-unlock' must be paired.

(fn MUTEX)Fmutex-unlock
Release the mutex.
If this thread does not own MUTEX, signal an error.
Otherwise, decrement the mutex's count.  If the count is zero,
release MUTEX.

(fn MUTEX)Fmutex-name
Return the name of MUTEX.
If no name was given when MUTEX was created, return nil.

(fn MUTEX)Fmake-condition-variable
Make a condition variable associated with MUTEX.
A condition variable provides a way for a thread to sleep while
waiting for a state change.

MUTEX is the mutex associated with this condition variable.
NAME, if given, is the name of this condition variable.  The name is
informational only.

(fn MUTEX &optional NAME)Fcondition-wait
Wait for the condition variable COND to be notified.
COND is the condition variable to wait on.

The mutex associated with COND must be held when this is called.
It is an error if it is not held.

This releases the mutex and waits for COND to be notified or for
this thread to be signaled with `thread-signal'.  When
`condition-wait' returns, COND's mutex will again be locked by
this thread.

(fn COND)Fcondition-notify
Notify COND, a condition variable.
This wakes a thread waiting on COND.
If ALL is non-nil, all waiting threads are awoken.

The mutex associated with COND must be held when this is called.
It is an error if it is not held.

This releases COND's mutex when notifying COND.  When
`condition-notify' returns, the mutex will again be locked by this
thread.

(fn COND &optional ALL)Fcondition-mutex
Return the mutex associated with condition variable COND.

(fn COND)Fcondition-name
Return the name of condition variable COND.
If no name was given when COND was created, return nil.

(fn COND)Fthread-yield
Yield the CPU to another thread.

(fn)Fmake-thread
Start a new thread and run FUNCTION in it.
When the function exits, the thread dies.
If NAME is given, it must be a string; it names the new thread.

(fn FUNCTION &optional NAME)Fcurrent-thread
Return the current thread.

(fn)Fthread-name
Return the name of the THREAD.
The name is the same object that was passed to `make-thread'.

(fn THREAD)Fthread-signal
Signal an error in a thread.
This acts like `signal', but arranges for the signal to be raised
in THREAD.  If THREAD is the current thread, acts just like `signal'.
This will interrupt a blocked call to `mutex-lock', `condition-wait',
or `thread-join' in the target thread.
If THREAD is the main thread, just the error message is shown.

(fn THREAD ERROR-SYMBOL DATA)Fthread-live-p
Return t if THREAD is alive, or nil if it has exited.

(fn THREAD)Fthread--blocker
Return the object that THREAD is blocking on.
If THREAD is blocked in `thread-join' on a second thread, return that
thread.
If THREAD is blocked in `mutex-lock', return the mutex.
If THREAD is blocked in `condition-wait', return the condition variable.
Otherwise, if THREAD is not blocked, return nil.

(fn THREAD)Fthread-join
Wait for THREAD to exit.
This blocks the current thread until THREAD exits or until the current
thread is signaled.  It returns the result of the THREAD function.  It
is an error for a thread to try to join itself.

(fn THREAD)Fall-threads
Return a list of all the live threads.

(fn)Fthread-last-error
Return the last error form recorded by a dying thread.
If CLEANUP is non-nil, remove this error form from history.

(fn &optional CLEANUP)Vmain-thread
The main thread of Emacs.Ssysthread.o
Ssqlite.o
Fsqlite-open
Open FILE as an sqlite database.
If FILE is nil, an in-memory database will be opened instead.

(fn &optional FILE)Fsqlite-close
Close the sqlite database DB.

(fn DB)Fsqlite-execute
Execute a non-select SQL statement.
If VALUES is non-nil, it should be a vector or a list of values
to bind when executing a statement like

   insert into foo values (?, ?, ...)

Value is the number of affected rows.

(fn DB QUERY &optional VALUES)Fsqlite-select
Select data from the database DB that matches QUERY.
If VALUES is non-nil, it should be a list or a vector specifying the
values that will be interpolated into a parameterized statement.

By default, the return value is a list, whose contents depend on
the value of the optional argument RETURN-TYPE.

If RETURN-TYPE is nil or omitted, the function returns a list of rows
matching QUERY.  If RETURN-TYPE is `full', the function returns a
list whose first element is the list of column names, and the rest
of the elements are the rows matching QUERY.  If RETURN-TYPE is `set',
the function returns a set object that can be queried with functions
like `sqlite-next' etc., in order to get the data.

(fn DB QUERY &optional VALUES RETURN-TYPE)Fsqlite-execute-batch
Execute multiple SQL STATEMENTS in DB.
STATEMENTS is a string containing 0 or more SQL statements.

(fn DB STATEMENTS)Fsqlite-transaction
Start a transaction in DB.

(fn DB)Fsqlite-commit
Commit a transaction in DB.

(fn DB)Fsqlite-rollback
Roll back a transaction in DB.

(fn DB)Fsqlite-pragma
Execute PRAGMA in DB.

(fn DB PRAGMA)Fsqlite-load-extension
Load an SQlite MODULE into DB.
MODULE should be the name of an SQlite module's file, a
shared library in the system-dependent format and having a
system-dependent file-name extension.

Only modules on Emacs's list of allowed modules can be loaded.

(fn DB MODULE)Fsqlite-next
Return the next result set from SET.
Return nil when the statement has finished executing successfully.

(fn SET)Fsqlite-columns
Return the column names of SET.

(fn SET)Fsqlite-more-p
Say whether there are any further results in SET.

(fn SET)Fsqlite-finalize
Mark this SET as being finished.
This will free the resources held by SET.

(fn SET)Fsqlite-version
Return the version string of the SQLite library.
Signal an error if SQLite support is not available.

(fn)Fsqlitep
Say whether OBJECT is an SQlite object.

(fn OBJECT)Fsqlite-available-p
Return t if sqlite3 support is available in this instance of Emacs.

(fn)Streesit.o
Ftreesit-language-available-p
Return non-nil if LANGUAGE exists and is loadable.

If DETAIL is non-nil, return (t . nil) when LANGUAGE is available,
(nil . DATA) when unavailable.  DATA is the signal data of
`treesit-load-language-error'.

(fn LANGUAGE &optional DETAIL)Ftreesit-library-abi-version
Return the language ABI version of the tree-sitter library.

By default, report the latest ABI version supported by the library for
loading language support modules.  The library is backward-compatible
with language modules which use older ABI versions; if MIN-COMPATIBLE
is non-nil, return the oldest compatible ABI version.

(fn &optional MIN-COMPATIBLE)Ftreesit-language-abi-version
Return the ABI version of the tree-sitter grammar for LANGUAGE.
Return nil if a grammar library for LANGUAGE is not available.

(fn &optional LANGUAGE)Ftreesit-parser-p
Return t if OBJECT is a tree-sitter parser.

(fn OBJECT)Ftreesit-node-p
Return t if OBJECT is a tree-sitter node.

(fn OBJECT)Ftreesit-compiled-query-p
Return t if OBJECT is a compiled tree-sitter query.

(fn OBJECT)Ftreesit-query-p
Return t if OBJECT is a generic tree-sitter query.

(fn OBJECT)Ftreesit-query-language
Return the language of QUERY.
QUERY has to be a compiled query.

(fn QUERY)Ftreesit-node-parser
Return the parser to which NODE belongs.

(fn NODE)Ftreesit-parser-create
Create and return a parser in BUFFER for LANGUAGE with TAG.

The parser is automatically added to BUFFER's parser list, as returned
by `treesit-parser-list'.  LANGUAGE is a language symbol.  If BUFFER
is nil or omitted, it defaults to the current buffer.  If BUFFER
already has a parser for LANGUAGE with TAG, return that parser, but if
NO-REUSE is non-nil, always create a new parser.

TAG can be any symbol except t, and defaults to nil.  Different
parsers can have the same tag.

If that buffer is an indirect buffer, its base buffer is used instead.
That is, indirect buffers use their base buffer's parsers.  Lisp
programs should widen as necessary should they want to use a parser in
an indirect buffer.

(fn LANGUAGE &optional BUFFER NO-REUSE TAG)Ftreesit-parser-delete
Delete PARSER from its buffer's parser list.
See `treesit-parser-list' for the buffer's parser list.

(fn PARSER)Ftreesit-parser-list
Return BUFFER's parser list, filtered by LANGUAGE and TAG.

BUFFER defaults to the current buffer.  If that buffer is an indirect
buffer, its base buffer is used instead.  That is, indirect buffers
use their base buffer's parsers.

If LANGUAGE is non-nil, only return parsers for that language.

The returned list only contain parsers with TAG.  TAG defaults to nil.
If TAG is t, include parsers in the returned list regardless of their
tag.

(fn &optional BUFFER LANGUAGE TAG)Ftreesit-parser-buffer
Return the buffer of PARSER.

(fn PARSER)Ftreesit-parser-language
Return PARSER's language symbol.
This symbol is the one used to create the parser.

(fn PARSER)Ftreesit-parser-tag
Return PARSER's tag.

(fn PARSER)Ftreesit-parser-root-node
Return the root node of PARSER.

(fn PARSER)Ftreesit-parser-set-included-ranges
Limit PARSER to RANGES.

RANGES is a list of (BEG . END), each (BEG . END) defines a region in
which the parser should operate.  Regions must not overlap, and the
regions should come in order in the list.  Signal
`treesit-set-range-error' if the argument is invalid, or something
else went wrong.  If RANGES is nil, the PARSER is to parse the whole
buffer.

(fn PARSER RANGES)Ftreesit-parser-included-ranges
Return the ranges set for PARSER.
If no ranges are set for PARSER, return nil.
See also `treesit-parser-set-included-ranges'.

(fn PARSER)Ftreesit-parser-notifiers
Return the list of after-change notifier functions for PARSER.

(fn PARSER)Ftreesit-parser-add-notifier
Add FUNCTION to the list of PARSER's after-change notifiers.
FUNCTION must be a function symbol, rather than a lambda form.
FUNCTION should take 2 arguments, RANGES and PARSER.  RANGES is a list
of cons cells of the form (START . END), where START and END are buffer
positions.  PARSER is the parser issuing the notification.

(fn PARSER FUNCTION)Ftreesit-parser-remove-notifier
Remove FUNCTION from the list of PARSER's after-change notifiers.
  FUNCTION must be a function symbol, rather than a lambda form.
FUNCTION should take 2 arguments, RANGES and PARSER.  RANGES is a list
of cons of the form (START . END), where START and END are buffer
positions.  PARSER is the parser issuing the notification.

(fn PARSER FUNCTION)Ftreesit-node-type
Return the NODE's type as a string.
If NODE is nil, return nil.

(fn NODE)Ftreesit-node-start
Return the NODE's start position in its buffer.
If NODE is nil, return nil.

(fn NODE)Ftreesit-node-end
Return the NODE's end position in its buffer.
If NODE is nil, return nil.

(fn NODE)Ftreesit-node-string
Return the string representation of NODE.
If NODE is nil, return nil.

(fn NODE)Ftreesit-node-parent
Return the immediate parent of NODE.
Return nil if NODE has no parent.  If NODE is nil, return nil.

(fn NODE)Ftreesit-node-child
Return the Nth child of NODE.

Return nil if there is no Nth child.  If NAMED is non-nil, look for
named child only.  NAMED defaults to nil.  If NODE is nil, return
nil.

N could be negative, e.g., -1 represents the last child.

(fn NODE N &optional NAMED)Ftreesit-node-check
Return non-nil if NODE has PROPERTY, nil otherwise.

PROPERTY could be `named', `missing', `extra', `outdated',
`has-error', or `live'.

Named nodes correspond to named rules in the language definition,
whereas "anonymous" nodes correspond to string literals in the
language definition.

Missing nodes are inserted by the parser in order to recover from
certain kinds of syntax errors, i.e., should be there but not there.

Extra nodes represent things like comments, which are not required the
language definition, but can appear anywhere.

A node is "outdated" if the parser has reparsed at least once after
the node was created.

A node "has error" if itself is a syntax error or contains any syntax
errors.

A node is "live" if its parser is not deleted and its buffer is
live.

(fn NODE PROPERTY)Ftreesit-node-field-name-for-child
Return the field name of the Nth child of NODE.

Return nil if there's no Nth child, or if it has no field.
If NODE is nil, return nil.

N counts all children, i.e., named ones and anonymous ones.

N could be negative, e.g., -1 represents the last child.

(fn NODE N)Ftreesit-node-child-count
Return the number of children of NODE.

If NAMED is non-nil, count named children only.  NAMED defaults to
nil.  If NODE is nil, return nil.

(fn NODE &optional NAMED)Ftreesit-node-child-by-field-name
Return the child of NODE with FIELD-NAME (a string).
Return nil if there is no such child.  If NODE is nil, return nil.

(fn NODE FIELD-NAME)Ftreesit-node-next-sibling
Return the next sibling of NODE.

Return nil if there is no next sibling.  If NAMED is non-nil, look for named
siblings only.  NAMED defaults to nil.  If NODE is nil, return nil.

(fn NODE &optional NAMED)Ftreesit-node-prev-sibling
Return the previous sibling of NODE.

Return nil if there is no previous sibling.  If NAMED is non-nil, look
for named siblings only.  NAMED defaults to nil.  If NODE is nil,
return nil.

(fn NODE &optional NAMED)Ftreesit-node-first-child-for-pos
Return the first child of NODE for buffer position POS.

Specifically, return the first child that extends beyond POS.
Return nil if there is no such child.
If NAMED is non-nil, look for named children only.  NAMED defaults to nil.
Note that this function returns an immediate child, not the smallest
(grand)child.  If NODE is nil, return nil.

(fn NODE POS &optional NAMED)Ftreesit-node-descendant-for-range
Return the smallest node that covers buffer positions BEG to END.

The returned node is a descendant of NODE.
Return nil if there is no such node.
If NAMED is non-nil, look for named child only.  NAMED defaults to nil.
If NODE is nil, return nil.

(fn NODE BEG END &optional NAMED)Ftreesit-node-eq
Return non-nil if NODE1 and NODE2 refer to the same node.
If any one of NODE1 and NODE2 is nil, return nil.
This function uses the same equivalence metric as `equal', and returns
non-nil if NODE1 and NODE2 refer to the same node in a syntax tree
produced by tree-sitter.

(fn NODE1 NODE2)Ftreesit-pattern-expand
Expand PATTERN to its string form.

PATTERN can be

    :anchor
    :?
    :*
    :+
    :equal
    :match
    (TYPE PATTERN...)
    [PATTERN...]
    FIELD-NAME:
    @CAPTURE-NAME
    (_)
    _
    "TYPE"

See Info node `(elisp)Pattern Matching' for detailed explanation.

(fn PATTERN)Ftreesit-query-expand
Expand sexp QUERY to its string form.

A PATTERN in QUERY can be

    :anchor
    :?
    :*
    :+
    :equal
    :match
    (TYPE PATTERN...)
    [PATTERN...]
    FIELD-NAME:
    @CAPTURE-NAME
    (_)
    _
    "TYPE"

See Info node `(elisp)Pattern Matching' for detailed explanation.

(fn QUERY)Ftreesit-query-compile
Compile QUERY to a compiled query.

Querying with a compiled query is much faster than an uncompiled one.
LANGUAGE is the language this query is for.

If EAGER is non-nil, immediately load LANGUAGE and compile the query.
Otherwise defer the compilation until the query is first used.

Signal `treesit-query-error' if QUERY is malformed or something else
goes wrong.  (This only happens if EAGER is non-nil.)
You can use `treesit-query-validate' to validate and debug a query.

(fn LANGUAGE QUERY &optional EAGER)Ftreesit-query-capture
Query NODE with patterns in QUERY.

Return a list of (CAPTURE_NAME . NODE).  CAPTURE_NAME is the name
assigned to the node in PATTERN.  NODE is the captured node.

QUERY is either a string query, a sexp query, or a compiled query.
See Info node `(elisp)Pattern Matching' for how to write a query in
either string or sexp form.  When using repeatedly, a compiled query
is much faster than a string or sexp one, so it is recommend to
compile your query if it will be used repeatedly.

BEG and END, if both non-nil, specify the region of buffer positions
in which the query is executed.  Any matching node whose span overlaps
with the region between BEG and END are captured, it doesn't have to
be completely in the region.

If NODE-ONLY is non-nil, return a list of nodes.

Besides a node, NODE can be a parser, in which case the root node of
that parser is used.  NODE can also be a language symbol, in which case
the root node of a parser for that language is used.  If such a parser
doesn't exist, it is created.

Signal `treesit-query-error' if QUERY is malformed or something else
goes wrong.  You can use `treesit-query-validate' to validate and debug
the query.

(fn NODE QUERY &optional BEG END NODE-ONLY)Ftreesit-search-subtree
Traverse the parse tree of NODE depth-first using PREDICATE.

Traverse the subtree of NODE, and match PREDICATE with each node along
the way.

PREDICATE can be a regexp string that matches against each node's
type, a predicate function, and more.  See `treesit-thing-settings'
for the possible predicates.  PREDICATE can also be a thing defined in
`treesit-thing-settings'.  Using an undefined thing doesn't raise an
error.

By default, only traverse named nodes, but if ALL is non-nil, traverse
all nodes.  If BACKWARD is non-nil, traverse backwards.  If DEPTH is
non-nil, only traverse nodes up to that number of levels down in the
tree.  If DEPTH is nil, default to 1000.

Return the first matched node, or nil if none matches.

(fn NODE PREDICATE &optional BACKWARD ALL DEPTH)Ftreesit-search-forward
Search for node matching PREDICATE in the parse tree of START.

Start traversing the tree from node START, and match PREDICATE with
each node (except START itself) along the way.

PREDICATE can be a regexp string that matches against each node's
type, a predicate function, and more.  See `treesit-thing-settings'
for the possible predicates.  PREDICATE can also be a thing defined in
`treesit-thing-settings'.  Using an undefined thing doesn't raise an
error.

By default, only search for named nodes, but if ALL is non-nil, search
for all nodes.  If BACKWARD is non-nil, search backwards.

Return the first matched node, or nil if none matches.

For a tree like below, where START is marked by S, traverse as
numbered from 1 to 12:

                12
                |
       S--------3----------11
       |        |          |
  o--o-+--o  1--+--2    6--+-----10
  |  |                  |        |
  o  o                +-+-+   +--+--+
                      |   |   |  |  |
                      4   5   7  8  9

Note that this function doesn't traverse the subtree of START, and it
always traverse leaf nodes first, then upwards.

(fn START PREDICATE &optional BACKWARD ALL)Ftreesit-induce-sparse-tree
Create a sparse tree of ROOT's subtree.

This takes the subtree under ROOT, and combs it so only the nodes that
match PREDICATE are left, like picking out grapes on the vine.

PREDICATE can be a regexp string that matches against each node's
type, a predicate function, and more.  See `treesit-thing-settings'
for the possible predicates.  PREDICATE can also be a thing defined in
`treesit-thing-settings'.  Using an undefined thing doesn't raise an
error.

For a subtree on the left that consist of both numbers and letters, if
PREDICATE is "is letter", the returned tree is the one on the right.

	a                 a              a
	|                 |              |
    +---+---+         +---+---+      +---+---+
    |   |   |         |   |   |      |   |   |
    b   1   2         b   |   |      b   c   d
	|   |     =>      |   |  =>      |
	c   +--+          c   +          e
	|   |  |          |   |
     +--+   d  4       +--+   d
     |  |              |
     e  5              e

If PROCESS-FN is non-nil, it should be a function of one argument.  In
that case, instead of returning the matched nodes, pass each node to
PROCESS-FN, and use its return value instead.

If non-nil, DEPTH is the number of levels to go down the tree from
ROOT.  If DEPTH is nil or omitted, it defaults to 1000.

Each node in the returned tree looks like (NODE . (CHILD ...)).  The
root of this tree might be nil, if ROOT doesn't match PREDICATE.

If no node matches PREDICATE, return nil.

(fn ROOT PREDICATE &optional PROCESS-FN DEPTH)Ftreesit-node-match-p
Check whether NODE matches PREDICATE.

PREDICATE can be a symbol representing a thing in
`treesit-thing-settings', or a predicate, like regexp matching node
type, etc.  See `treesit-thing-settings' for more details.

Return non-nil if NODE matches PREDICATE, nil otherwise.  If NODE is
nil, return nil.

Signals `treesit-invalid-predicate' if there's no definition of THING
in `treesit-thing-settings', or if PREDICATE is malformed.  If
IGNORE-MISSING is non-nil, don't signal an error for missing THING
definition, but still signal for malformed PREDICATE.

(fn NODE PREDICATE &optional IGNORE-MISSING)Ftreesit-subtree-stat
Return information about the subtree of NODE.

Return a list (MAX-DEPTH MAX-WIDTH COUNT), where MAX-DEPTH is the
maximum depth of the subtree, MAX-WIDTH is the maximum number of
direct children of nodes in the subtree, and COUNT is the number of
nodes in the subtree, including NODE.

(fn NODE)Ftreesit-available-p
Return non-nil if tree-sitter support is built-in and available.

(fn)Vtreesit-load-name-override-list
An override list for unconventional tree-sitter libraries.

By default, Emacs assumes the dynamic library for LANG is
libtree-sitter-LANG.EXT, where EXT is the OS specific extension for
dynamic libraries.  Emacs also assumes that the name of the C function
the library provides is tree_sitter_LANG.  If that is not the case,
you can add an entry

    (LANG LIBRARY-BASE-NAME FUNCTION-NAME)

to this list, where LIBRARY-BASE-NAME is the filename of the dynamic
library without the file-name extension, and FUNCTION-NAME is the
function provided by the library.Vtreesit-extra-load-path
Additional directories to look for tree-sitter language definitions.
The value should be a list of directories.
When trying to load a tree-sitter language definition,
Emacs first looks in the directories mentioned in this variable,
then in the `tree-sitter' subdirectory of `user-emacs-directory', and
then in the system default locations for dynamic libraries, in that order.Vtreesit-thing-settings
A list defining things.

The value should be an alist of (LANGUAGE . DEFINITIONS), where
LANGUAGE is a language symbol, and DEFINITIONS is a list of

    (THING PRED)

THING is a symbol representing the thing, like `defun', `sexp', or
`sentence'; PRED defines what kind of node can be qualified as THING.

PRED can be a regexp string that matches the type of the node; it can
be a predicate function that takes the node as the sole argument and
returns t if the node is the thing, and nil otherwise; it can be a
cons (REGEXP . FN), which is a combination of a regexp and a predicate
function, and the node has to match both to qualify as the thing.

PRED can also be recursively defined.  It can be (or PRED...), meaning
satisfying anyone of the inner PREDs qualifies the node; or (not
PRED), meaning not satisfying the inner PRED qualifies the node.

Finally, PRED can refer to other THINGs defined in this list by using
the symbol of that THING.  For example, (or sexp sentence).Sitree.o
Sjson.o
Fjson-serialize
Return the JSON representation of OBJECT as a unibyte string.

OBJECT is translated as follows:

`t'        -- the JSON `true' value.
number     -- a JSON number.
string     -- a JSON string.
vector     -- a JSON array.
hash-table -- a JSON object.  Keys must be strings.
alist      -- a JSON object.  Keys must be symbols.
plist      -- a JSON object.  Keys must be symbols.
              A leading colon in plist key names is elided.

For duplicate object keys, the first value is used.

The Lisp equivalents to the JSON null and false values are
configurable in the arguments ARGS, a list of keyword/argument pairs:

:null-object OBJ -- use OBJ to represent a JSON null value.
  It defaults to `:null'.

:false-object OBJ -- use OBJ to represent a JSON false value.
  It defaults to `:false'.

In you specify the same value for `:null-object' and `:false-object',
a potentially ambiguous situation, the JSON output will not contain
any JSON false values.

(fn OBJECT &rest ARGS)Fjson-insert
Insert the JSON representation of OBJECT before point.
This is the same as (insert (json-serialize OBJECT ...)), but potentially
faster, and with the difference that Unicode characters are inserted as
themselves into multibyte buffers, and as UTF-8 byte sequences into
unibyte buffers.
See the function `json-serialize' for allowed values of OBJECT and ARGS.

(fn OBJECT &rest ARGS)Fjson-parse-string
Parse the JSON STRING into a Lisp value.
This is essentially the reverse operation of `json-serialize', which
see.  The returned value will be the JSON null value, the JSON false
value, t, a number, a string, a vector, a list, a hash-table, an alist,
or a plist.  Its elements will be further values of these types.
If STRING doesn't contain a valid JSON value, this function
signals an error of type `json-parse-error'.

The arguments ARGS are a list of keyword/argument pairs:

:object-type TYPE -- use TYPE to represent JSON objects.
  TYPE can be `hash-table' (the default), `alist' or `plist'.
  If an object has members with the same key, `hash-table' keeps only
  the last value of such keys, while `alist' and `plist' keep all the
  members.

:array-type TYPE -- use TYPE to represent JSON arrays.
  TYPE can be `array' (the default) or `list'.

:null-object OBJ -- use OBJ to represent a JSON null value.
  It defaults to `:null'.

:false-object OBJ -- use OBJ to represent a JSON false value.
  It defaults to `:false'.

(fn STRING &rest ARGS)Fjson-parse-buffer
Read a JSON value from current buffer starting at point.
Move point after the end of the value if parsing was successful.
On error, don't move point.

The returned value will be a vector, list, hashtable, alist, or
plist.  Its elements will be the JSON null value, the JSON false
value, t, numbers, strings, or further vectors, lists, hashtables,
alists, or plists.

If the current buffer doesn't contain a valid JSON value, the
function signals an error of type `json-parse-error'.

The arguments ARGS are a list of keyword/argument pairs:

:object-type TYPE -- use TYPE to represent JSON objects.
  TYPE can be `hash-table' (the default), `alist' or `plist'.
  If an object has members with the same key, `hash-table' keeps only
  the last value of such keys, while `alist' and `plist' keep all the
  members.

:array-type TYPE -- use TYPE to represent JSON arrays.
  TYPE can be `array' (the default) or `list'.

:null-object OBJ -- use OBJ to represent a JSON null value.
  It defaults to `:null'.

:false-object OBJ -- use OBJ to represent a JSON false value.
  It defaults to `:false'.

(fn &rest args)