Commit 023502af authored by Glenn Morris's avatar Glenn Morris
Browse files

Merge from origin/emacs-26

56e3e4fe Improve indexing in the ELisp manual
7a4992a0 More Symbola-related extensions for default fontset
4ae0a754 Better support for display of U+1F900..U+1F9FF block
8f0c7887 Improve documentation of 'edit-abbrevs-mode'
3c643e73 ; NEWS tweak
477414ac Improve documentation of 'dired-do-compress'
9c09b1d2 ; * etc/NES: Minor change in the description of Dired's 'Z'.
52715e36 Improve doc string and display of 'describe-character'
93242b14 * etc/NEWS: Clarify what 'Z' does in Dired.  (Bug#33450)
0d59ae3f Update the docs of object internals

Conflicts:
	etc/NEWS
parents dcacff41 56e3e4fe
......@@ -6,6 +6,7 @@
@node Control Structures
@chapter Control Structures
@cindex special forms for control structures
@cindex forms for control structures
@cindex control structures
A Lisp program consists of a set of @dfn{expressions}, or
......@@ -48,6 +49,7 @@ structure constructs (@pxref{Macros}).
@section Sequencing
@cindex sequencing
@cindex sequential execution
@cindex forms for sequential execution
Evaluating forms in the order they appear is the most common way
control passes from one form to another. In some contexts, such as in a
......@@ -146,6 +148,7 @@ following @var{forms}, in textual order, returning the result of
@node Conditionals
@section Conditionals
@cindex conditional evaluation
@cindex forms, conditional
Conditional control structures choose among alternatives. Emacs Lisp
has five conditional forms: @code{if}, which is much the same as in
......@@ -1271,6 +1274,7 @@ up being equivalent to @code{dolist} (@pxref{Iteration}).
@section Iteration
@cindex iteration
@cindex recursion
@cindex forms, iteration
Iteration means executing part of a program repetitively. For
example, you might want to repeat some computation once for each element
......@@ -1495,6 +1499,7 @@ exited.
@node Catch and Throw
@subsection Explicit Nonlocal Exits: @code{catch} and @code{throw}
@cindex forms for nonlocal exits
Most control constructs affect only the flow of control within the
construct itself. The function @code{throw} is the exception to this
......@@ -1866,6 +1871,7 @@ variables precisely as they were at the time of the error.
@subsubsection Writing Code to Handle Errors
@cindex error handler
@cindex handling errors
@cindex forms for handling errors
The usual effect of signaling an error is to terminate the command
that is running and return immediately to the Emacs editor command loop.
......@@ -2235,6 +2241,7 @@ and their conditions.
@node Cleanups
@subsection Cleaning Up from Nonlocal Exits
@cindex nonlocal exits, cleaning up
@cindex forms for cleanup
The @code{unwind-protect} construct is essential whenever you
temporarily put a data structure in an inconsistent state; it permits
......
......@@ -128,6 +128,7 @@ with the other types, which are self-evaluating forms.
@cindex vector evaluation
@cindex literal evaluation
@cindex self-evaluating form
@cindex form, self-evaluating
A @dfn{self-evaluating form} is any form that is not a list or
symbol. Self-evaluating forms evaluate to themselves: the result of
......@@ -180,6 +181,8 @@ program. Here is an example:
@node Symbol Forms
@subsection Symbol Forms
@cindex symbol evaluation
@cindex symbol forms
@cindex forms, symbol
When a symbol is evaluated, it is treated as a variable. The result
is the variable's value, if it has one. If the symbol has no value as
......@@ -216,6 +219,7 @@ its value ordinarily cannot be changed. @xref{Constant Variables}.
@node Classifying Lists
@subsection Classification of List Forms
@cindex list form evaluation
@cindex forms, list
A form that is a nonempty list is either a function call, a macro
call, or a special form, according to its first element. These three
......@@ -350,6 +354,7 @@ Here is how you could define @code{indirect-function} in Lisp:
@subsection Evaluation of Function Forms
@cindex function form evaluation
@cindex function call
@cindex forms, function call
If the first element of a list being evaluated is a Lisp function
object, byte-code object or primitive function object, then that list is
......@@ -373,6 +378,7 @@ body form becomes the value of the function call.
@node Macro Forms
@subsection Lisp Macro Evaluation
@cindex macro call evaluation
@cindex forms, macro call
If the first element of a list being evaluated is a macro object, then
the list is a @dfn{macro call}. When a macro call is evaluated, the
......@@ -419,6 +425,7 @@ expansion.
@node Special Forms
@subsection Special Forms
@cindex special forms
@cindex forms, special
@cindex evaluation of special forms
A @dfn{special form} is a primitive function specially marked so that
......@@ -540,6 +547,7 @@ described in @ref{Autoload}.
@node Quoting
@section Quoting
@cindex forms, quote
The special form @code{quote} returns its single argument, as written,
without evaluating it. This provides a way to include constant symbols
......@@ -599,6 +607,7 @@ only part of a list, while computing and substituting other parts.
@cindex backquote (list substitution)
@cindex ` (list substitution)
@findex `
@cindex forms, backquote
@dfn{Backquote constructs} allow you to quote a list, but
selectively evaluate elements of that list. In the simplest case, it
......
......@@ -1730,7 +1730,7 @@ frames, and processes fall into this category.
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,
......@@ -1757,7 +1757,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
......@@ -1781,8 +1782,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
......@@ -1890,13 +1891,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
......@@ -2020,37 +2030,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
......@@ -2066,29 +2068,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
......@@ -2114,30 +2122,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}.
......@@ -2147,16 +2155,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.
......@@ -2184,8 +2193,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.
......@@ -2197,20 +2214,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
......@@ -2227,7 +2254,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
......@@ -2235,10 +2262,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.
......@@ -2265,7 +2292,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
......@@ -2274,8 +2302,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.
......
......@@ -56,10 +56,12 @@ often cause crashes. Set it to nil if you really need those fonts.
*** The 'Z' command on a directory name compresses all of its files.
It produces a compressed '.tar.gz' archive with all the files in the
directory and all of its subdirectories. For symmetry, 'Z' on a
'.tar.gz' or a '.tgz' archive extracts all the archived files into a
directory whose name is the archive name sans the '.tar.gz' or '.tgz'
extension. (This change was actually made in Emacs 26.1, but was not
called out in its NEWS.)
'.tar.gz' or a '.tgz' archive extracts all the archived files into the
current directory; thus, typing 'Z' on a '.tar.gz' archive created by
a previous 'Z' command will extract the archived files into a
directory whose name is the archive name sans the '.tar.gz' extension.
(This change was actually made in Emacs 25.1 but was only
partially called out in its NEWS; 'tgz' handling was added in 26.1.)
** Ibuffer
......
......@@ -147,11 +147,12 @@ Otherwise display all abbrevs."
(defun edit-abbrevs ()
"Alter abbrev definitions by editing a list of them.
Selects a buffer containing a list of abbrev definitions with
point located in the abbrev table of current buffer.
point located in the abbrev table for the current buffer, and
turns on `edit-abbrevs-mode' in that buffer.
You can edit them and type \\<edit-abbrevs-map>\\[edit-abbrevs-redefine] to redefine abbrevs
according to your editing.
Buffer contains a header line for each abbrev table,
which is the abbrev table name in parentheses.
The abbrevs editing buffer contains a header line for each
abbrev table, which is the abbrev table name in parentheses.
This is followed by one line per abbrev in that table:
NAME USECOUNT EXPANSION HOOK
where NAME and EXPANSION are strings with quotes,
......@@ -1036,7 +1037,9 @@ SORTFUN is passed to `sort' to change the default ordering."
;; Keep it after define-abbrev-table, since define-derived-mode uses
;; define-abbrev-table.
(define-derived-mode edit-abbrevs-mode fundamental-mode "Edit-Abbrevs"
"Major mode for editing the list of abbrev definitions.")
"Major mode for editing the list of abbrev definitions.
This mode is for editing abbrevs in a buffer prepared by `edit-abbrevs',
which see.")
(provide 'abbrev)
......
......@@ -386,13 +386,22 @@ The position information includes POS; the total size of BUFFER; the
region limits, if narrowed; the column number; and the horizontal
scroll amount, if the buffer is horizontally scrolled.
The character information includes the character code; charset and
code points in it; syntax; category; how the character is encoded in
BUFFER and in BUFFER's file; character composition information (if
relevant); the font and font glyphs used to display the character;
the character's canonical name and other properties defined by the
Unicode Data Base; and widgets, buttons, overlays, and text properties
relevant to POS."
The character information includes:
its codepoint;
its charset (see `char-charset'), overridden by the `charset' text
property at POS, if any;
the codepoint of the character in the above charset;
the character's script (as defined by `char-script-table')
the character's syntax, as produced by `syntax-after'
and `internal-describe-syntax-value';
its category (see `char-category-set' and `describe-char-categories');
how to input the character using the keyboard and input methods;
how the character is encoded in BUFFER and in BUFFER's file;
the font and font glyphs used to display the character;
the composition information for displaying the character (if relevant);
the character's canonical name and other properties defined by the
Unicode Data Base;
and widgets, buttons, overlays, and text properties relevant to POS."
(interactive "d")
(unless (buffer-live-p buffer) (setq buffer (current-buffer)))
(let ((src-buf (current-buffer)))
......@@ -556,7 +565,7 @@ relevant to POS."
(apply 'propertize char-description
(text-properties-at pos))
char char char))
("preferred charset"
("charset"
,`(insert-text-button
,(symbol-name charset)
'type 'help-character-set 'help-args '(,charset))
......
......@@ -1231,7 +1231,12 @@ return t; if SYM is q or ESC, return nil."
;;;###autoload
(defun dired-do-compress (&optional arg)
"Compress or uncompress marked (or next ARG) files."
"Compress or uncompress marked (or next ARG) files.
If invoked on a directory, compress all of the files in
the directory and all of its subdirectories, recursively,
into a .tar.gz archive.
If invoked on a .tar.gz or a .tgz or a .zip or a .7z archive,
uncompress and unpack all the files in the archive."
(interactive "P")
(dired-map-over-marks-check #'dired-compress arg 'compress t))
......
......@@ -815,9 +815,16 @@
(#x4DC0 . #x4DFF) ;; Yijing Hexagram Symbols
(#xFE10 . #xFE1F) ;; Vertical Forms
(#x10100 . #x1013F) ;; Aegean Numbers
(#x10190 . #x101CF) ;; Ancient Symbols
(#x101D0 . #x101FF) ;; Phaistos Disc
(#x102E0 . #x102FF) ;; Coptic Epact Numbers
(#x1D000 . #x1D0FF) ;; Byzantine Musical Symbols
(#x1D200 . #x1D24F) ;; Ancient Greek Musical Notation
(#x1D2E0 . #x1D2FF) ;; Mayan Numerals
(#x1D300 . #x1D35F) ;; Tai Xuan Jing Symbols
(#x1D360 . #x1D37F) ;; Counting Rod Numerals
(#x1F000 . #x1F02F) ;; Mahjong Tiles
(#x1F030 . #x1F09F) ;; Domino Tiles
(#x1F0A0 . #x1F0FF) ;; Playing Cards
(#x1F100 . #x1F1FF) ;; Enclosed Alphanumeric Suppl
(#x1F300 . #x1F5FF) ;; Misc Symbols and Pictographs
......@@ -826,7 +833,9 @@
(#x1F680 . #x1F6FF) ;; Transport and Map Symbols
(#x1F700 . #x1F77F) ;; Alchemical Symbols
(#x1F780 . #x1F7FF) ;; Geometric Shapes Extended
(#x1F800 . #x1F8FF))) ;; Supplemental Arrows-C
(#x1F800 . #x1F8FF) ;; Supplemental Arrows-C
(#x1F900 . #x1F9FF) ;; Supplemental Symbols and Pictographs
(#x1FA00 . #x1FA6F))) ;; Chess Symbols
(set-fontset-font "fontset-default" symbol-subgroup
'("Symbola" . "iso10646-1") nil 'prepend))
;; Box Drawing and Block Elements
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment