mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-13 23:49:02 +00:00
Update the docs of object internals
* doc/lispref/internals.texi (Buffer Internals) (Window Internals, Process Internals): Update the descriptions of Lisp objects.
This commit is contained in:
parent
d667318a7f
commit
0d59ae3f49
1 changed files with 88 additions and 60 deletions
|
@ -1746,7 +1746,7 @@ and form the set of subtypes of @code{Lisp_Misc}.
|
|||
|
||||
Below there is a description of a few subtypes of @code{Lisp_Vectorlike}.
|
||||
Buffer object represents the text to display and edit. Window is the part
|
||||
of display structure which shows the buffer or used as a container to
|
||||
of display structure which shows the buffer or is used as a container to
|
||||
recursively place other windows on the same frame. (Do not confuse Emacs Lisp
|
||||
window object with the window as an entity managed by the user interface
|
||||
system like X; in Emacs terminology, the latter is called frame.) Finally,
|
||||
|
@ -1773,7 +1773,8 @@ Here are some of the fields in @code{struct buffer_text}:
|
|||
|
||||
@table @code
|
||||
@item beg
|
||||
The address of the buffer contents.
|
||||
The address of the buffer contents. The buffer contents is a linear C
|
||||
array of @code{char}, with the gap somewhere in its midst.
|
||||
|
||||
@item gpt
|
||||
@itemx gpt_byte
|
||||
|
@ -1797,8 +1798,8 @@ buffer-modification event, and is never otherwise changed;
|
|||
@code{save_modiff} contains the value of @code{modiff} the last time
|
||||
the buffer was visited or saved; @code{chars_modiff} counts only
|
||||
modifications to the characters in the buffer, ignoring all other
|
||||
kinds of changes; and @code{overlay_modiff} counts only modifications
|
||||
to the overlays.
|
||||
kinds of changes (such as text properties); and @code{overlay_modiff}
|
||||
counts only modifications to the buffer's overlays.
|
||||
|
||||
@item beg_unchanged
|
||||
@itemx end_unchanged
|
||||
|
@ -1906,13 +1907,22 @@ position.
|
|||
|
||||
@item name
|
||||
A Lisp string that names the buffer. It is guaranteed to be unique.
|
||||
@xref{Buffer Names}.
|
||||
@xref{Buffer Names}. This and the following fields have their names
|
||||
in the C struct definition end in a @code{_} to indicate that they
|
||||
should not be accessed directly, but via the @code{BVAR} macro, like
|
||||
this:
|
||||
|
||||
@example
|
||||
Lisp_Object buf_name = BVAR (buffer, name);
|
||||
@end example
|
||||
|
||||
@item save_length
|
||||
The length of the file this buffer is visiting, when last read or
|
||||
saved. This and other fields concerned with saving are not kept in
|
||||
the @code{buffer_text} structure because indirect buffers are never
|
||||
saved.
|
||||
saved. It can have 2 special values: @minus{}1 means auto-saving was
|
||||
turned off in this buffer, and @minus{}2 means don't turn off
|
||||
auto-saving if buffer text shrinks a lot. This and other fields
|
||||
concerned with saving are not kept in the @code{buffer_text} structure
|
||||
because indirect buffers are never saved.
|
||||
|
||||
@item directory
|
||||
The directory for expanding relative file names. This is the value of
|
||||
|
@ -2036,37 +2046,29 @@ if that window no longer displays this buffer.
|
|||
|
||||
@table @code
|
||||
@item frame
|
||||
The frame that this window is on.
|
||||
The frame that this window is on, as a Lisp object.
|
||||
|
||||
@item mini_p
|
||||
Non-@code{nil} if this window is a minibuffer window.
|
||||
@item mini
|
||||
Non-zero if this window is a minibuffer window.
|
||||
|
||||
@item parent
|
||||
Internally, Emacs arranges windows in a tree; each group of siblings has
|
||||
a parent window whose area includes all the siblings. This field points
|
||||
to a window's parent.
|
||||
to a window's parent, as a Lisp object.
|
||||
|
||||
Parent windows do not display buffers, and play little role in display
|
||||
except to shape their child windows. Emacs Lisp programs usually have
|
||||
no access to the parent windows; they operate on the windows at the
|
||||
leaves of the tree, which actually display buffers.
|
||||
|
||||
@c FIXME: These two slots and the 'buffer' slot below were replaced
|
||||
@c with a single slot 'contents' on 2013-03-28. --xfq
|
||||
@item hchild
|
||||
@itemx vchild
|
||||
These fields contain the window's leftmost child and its topmost child
|
||||
respectively. @code{hchild} is used if the window is subdivided
|
||||
horizontally by child windows, and @code{vchild} if it is subdivided
|
||||
vertically. In a live window, only one of @code{hchild}, @code{vchild},
|
||||
and @code{buffer} (q.v.@:) is non-@code{nil}.
|
||||
|
||||
@item next
|
||||
@itemx prev
|
||||
The next sibling and previous sibling of this window. @code{next} is
|
||||
@code{nil} if the window is the right-most or bottom-most in its group;
|
||||
@code{prev} is @code{nil} if it is the left-most or top-most in its
|
||||
group.
|
||||
group. Whether the sibling is left/right or up/down is determined by
|
||||
the @code{horizontal} field: if it's non-zero, the siblings are
|
||||
arranged horizontally.
|
||||
|
||||
@item left_col
|
||||
The left-hand edge of the window, measured in columns, relative to the
|
||||
|
@ -2082,29 +2084,35 @@ The width and height of the window, measured in columns and lines
|
|||
respectively. The width includes the scroll bar and fringes, and/or
|
||||
the separator line on the right of the window (if any).
|
||||
|
||||
@item buffer
|
||||
The buffer that the window is displaying.
|
||||
@item contents
|
||||
For leaf windows, this is the buffer, as a Lisp object, that the
|
||||
window is displaying. For an internal (``parent'') window, this is
|
||||
its child window. It can also be @code{nil}, for a pseudo-window.
|
||||
|
||||
@item start
|
||||
A marker pointing to the position in the buffer that is the first
|
||||
character displayed in the window.
|
||||
character (in the logical order, @pxref{Bidirectional Display})
|
||||
displayed in the window.
|
||||
|
||||
@item pointm
|
||||
@cindex window point internals
|
||||
This is the value of point in the current buffer when this window is
|
||||
selected; when it is not selected, it retains its previous value.
|
||||
|
||||
@item old_pointm
|
||||
The value of @code{pointm} at the last redisplay time.
|
||||
|
||||
@item force_start
|
||||
If this flag is non-@code{nil}, it says that the window has been
|
||||
scrolled explicitly by the Lisp program. This affects what the next
|
||||
redisplay does if point is off the screen: instead of scrolling the
|
||||
window to show the text around point, it moves point to a location that
|
||||
is on the screen.
|
||||
scrolled explicitly by the Lisp program, and the value of the the
|
||||
window's @code{start} was set for redisplay to honor. This affects
|
||||
what the next redisplay does if point is off the screen: instead of
|
||||
scrolling the window to show the text around point, it moves point to
|
||||
a location that is on the screen.
|
||||
|
||||
@item frozen_window_start_p
|
||||
This field is set temporarily to 1 to indicate to redisplay that
|
||||
@code{start} of this window should not be changed, even if point
|
||||
gets invisible.
|
||||
@item optional_new_start
|
||||
This is similar to @code{force_start}, but the next redisplay will
|
||||
only obey it if point stays visible.
|
||||
|
||||
@item start_at_line_beg
|
||||
Non-@code{nil} means current value of @code{start} was the beginning of a line
|
||||
|
@ -2130,30 +2138,30 @@ The buffer's value of point, as of the last time a redisplay completed
|
|||
in this window.
|
||||
|
||||
@item last_had_star
|
||||
A non-@code{nil} value means the window's buffer was modified when the
|
||||
A non-zero value means the window's buffer was modified when the
|
||||
window was last updated.
|
||||
|
||||
@item vertical_scroll_bar
|
||||
This window's vertical scroll bar.
|
||||
This window's vertical scroll bar, a Lisp object.
|
||||
|
||||
@item left_margin_cols
|
||||
@itemx right_margin_cols
|
||||
The widths of the left and right margins in this window. A value of
|
||||
@code{nil} means no margin.
|
||||
zero means no margin.
|
||||
|
||||
@item left_fringe_width
|
||||
@itemx right_fringe_width
|
||||
The widths of the left and right fringes in this window. A value of
|
||||
@code{nil} or @code{t} means use the values of the frame.
|
||||
The pixel widths of the left and right fringes in this window. A
|
||||
value of @minus{}1 means use the values of the frame.
|
||||
|
||||
@item fringes_outside_margins
|
||||
A non-@code{nil} value means the fringes outside the display margins;
|
||||
A non-zero value means the fringes outside the display margins;
|
||||
othersize they are between the margin and the text.
|
||||
|
||||
@item window_end_pos
|
||||
This is computed as @code{z} minus the buffer position of the last glyph
|
||||
in the current matrix of the window. The value is only valid if
|
||||
@code{window_end_valid} is not @code{nil}.
|
||||
@code{window_end_valid} is non-zero.
|
||||
|
||||
@item window_end_bytepos
|
||||
The byte position corresponding to @code{window_end_pos}.
|
||||
|
@ -2163,16 +2171,17 @@ The window-relative vertical position of the line containing
|
|||
@code{window_end_pos}.
|
||||
|
||||
@item window_end_valid
|
||||
This field is set to a non-@code{nil} value if @code{window_end_pos} is truly
|
||||
valid. This is @code{nil} if nontrivial redisplay is pre-empted, since in that
|
||||
case the display that @code{window_end_pos} was computed for did not get
|
||||
onto the screen.
|
||||
This field is set to a non-zero value if @code{window_end_pos} and
|
||||
@code{window_end_vpos} are truly valid. This is zero if nontrivial
|
||||
redisplay is pre-empted, since in that case the display that
|
||||
@code{window_end_pos} was computed for did not get onto the screen.
|
||||
|
||||
@item cursor
|
||||
A structure describing where the cursor is in this window.
|
||||
|
||||
@item last_cursor
|
||||
The value of @code{cursor} as of the last redisplay that finished.
|
||||
@item last_cursor_vpos
|
||||
The window-relative vertical position of the line showing the cursor
|
||||
as of the last redisplay that finished.
|
||||
|
||||
@item phys_cursor
|
||||
A structure describing where the cursor of this window physically is.
|
||||
|
@ -2200,8 +2209,16 @@ the last redisplay.
|
|||
This is set to 1 during redisplay when this window must be updated.
|
||||
|
||||
@item hscroll
|
||||
This is the number of columns that the display in the window is scrolled
|
||||
horizontally to the left. Normally, this is 0.
|
||||
This is the number of columns that the display in the window is
|
||||
scrolled horizontally to the left. Normally, this is 0. When only
|
||||
the current line is hscrolled, this describes how much the current
|
||||
line is scrolled.
|
||||
|
||||
@item min_hscroll
|
||||
Minimum value of @code{hscroll}, set by the user via
|
||||
@code{set-window-hscroll} (@pxref{Horizontal Scrolling}). When only
|
||||
the current line is hscrolled, this describes the horizontal scrolling
|
||||
of lines other than the current one.
|
||||
|
||||
@item vscroll
|
||||
Vertical scroll amount, in pixels. Normally, this is 0.
|
||||
|
@ -2213,20 +2230,30 @@ Non-@code{nil} if this window is dedicated to its buffer.
|
|||
The window's display table, or @code{nil} if none is specified for it.
|
||||
|
||||
@item update_mode_line
|
||||
Non-@code{nil} means this window's mode line needs to be updated.
|
||||
Non-zero means this window's mode line needs to be updated.
|
||||
|
||||
@item mode_line_height
|
||||
@itemx header_line_height
|
||||
The height in pixels of the mode line and the header line, or
|
||||
@minus{}1 if not known.
|
||||
|
||||
@item base_line_number
|
||||
The line number of a certain position in the buffer, or @code{nil}.
|
||||
The line number of a certain position in the buffer, or zero.
|
||||
This is used for displaying the line number of point in the mode line.
|
||||
|
||||
@item base_line_pos
|
||||
The position in the buffer for which the line number is known, or
|
||||
@code{nil} meaning none is known. If it is a buffer, don't display
|
||||
zero meaning none is known. If it is @minus{}1, don't display
|
||||
the line number as long as the window shows that buffer.
|
||||
|
||||
@item column_number_displayed
|
||||
The column number currently displayed in this window's mode line, or @code{nil}
|
||||
if column numbers are not being displayed.
|
||||
The column number currently displayed in this window's mode line, or
|
||||
@minus{}1 if column numbers are not being displayed.
|
||||
|
||||
@item pseudo_window_p
|
||||
This is non-zero for windows that display the menu bar and the tool
|
||||
bar (when Emacs uses toolkits that don't display their own menu bar
|
||||
and tool bar).
|
||||
|
||||
@item current_matrix
|
||||
@itemx desired_matrix
|
||||
|
@ -2243,7 +2270,7 @@ Glyph matrices describing the current and desired display of this window.
|
|||
|
||||
@table @code
|
||||
@item name
|
||||
A string, the name of the process.
|
||||
A Lisp string, the name of the process.
|
||||
|
||||
@item command
|
||||
A list containing the command arguments that were used to start this
|
||||
|
@ -2251,10 +2278,10 @@ process. For a network or serial process, it is @code{nil} if the
|
|||
process is running or @code{t} if the process is stopped.
|
||||
|
||||
@item filter
|
||||
A function used to accept output from the process.
|
||||
A Lisp function used to accept output from the process.
|
||||
|
||||
@item sentinel
|
||||
A function called whenever the state of the process changes.
|
||||
A Lisp function called whenever the state of the process changes.
|
||||
|
||||
@item buffer
|
||||
The associated buffer of the process.
|
||||
|
@ -2281,7 +2308,8 @@ does not ask for confirmation about killing the process.
|
|||
The raw process status, as returned by the @code{wait} system call.
|
||||
|
||||
@item status
|
||||
The process status, as @code{process-status} should return it.
|
||||
The process status, as @code{process-status} should return it. This
|
||||
is a Lisp symbol, a cons cell, or a list.
|
||||
|
||||
@item tick
|
||||
@itemx update_tick
|
||||
|
@ -2290,8 +2318,8 @@ needs to be reported, either by running the sentinel or by inserting a
|
|||
message in the process buffer.
|
||||
|
||||
@item pty_flag
|
||||
Non-@code{nil} if communication with the subprocess uses a pty;
|
||||
@code{nil} if it uses a pipe.
|
||||
Non-zero if communication with the subprocess uses a pty; zero if it
|
||||
uses a pipe.
|
||||
|
||||
@item infd
|
||||
The file descriptor for input from the process.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue