Merge from origin/emacs-26

b0369d0536 Import the latest IVD_Sequences.txt
cd53b6399b Fix dired-do-compress when tar doesn't default to stdin (B...
51911dae14 Suppress warnings during elisp completion macroexpansion
a36a090a95 * lisp/progmodes/verilog-mode.el (verilog-mode): Fix typo ...
6a6e8e6e8d Make tramp-interrupt-process more robust
5bcd468a9e Make quail-input-method work when inhibit-read-only is non...
87baf1242e Fix 'fontset-name-p'
d23158777d Fix fontset documentation inconsistencies for bug#29630
a829cb8c8b Remove sentence from child frames section in Elisp manual
ad491c80e4 Avoid crashes in 'font-at' after 'set-fontset-font'
c73d2cdfd7 * lisp/files-x.el (connection-local-set-profile-variables)...
cefca2b8ac Add /etc/ssl/cert.pem to gnutls-trustfiles for macOS
122e7264b8 Fix tool-tip display when display margins are non-zero by ...
e1cc2037a9 Handle hash tables and vectors when reading/writing EIEIO ...
cda219c3df Improve interactive debugging commands in xdisp.c
1056b3cbcd Fix calculation of continuation_pixel_width in display engine
90e20804f5 Improve documentation of 'save-abbrevs'.
14f0230a48 Improve documentation of Dired
161b0e5493 * lisp/bookmark.el (bookmark-alist): Doc fix.  (Bug#29551)
This commit is contained in:
Glenn Morris 2017-12-12 19:43:33 -08:00
commit 0beba8d164
24 changed files with 1755 additions and 935 deletions

File diff suppressed because it is too large Load diff

View file

@ -315,7 +315,8 @@ batch mode. @xref{Initial Options}, for a description of batch mode.)
any of them, whenever it offers to save all files (for @kbd{C-x s} or
@kbd{C-x C-c}). It saves them in the file specified by
@code{abbrev-file-name}. This feature can be inhibited by setting the
variable @code{save-abbrevs} to @code{nil}.
variable @code{save-abbrevs} to @code{nil}; setting it to
@code{silently} will save the abbrevs automatically without asking.
@findex insert-abbrevs
@findex define-abbrevs

View file

@ -14,8 +14,9 @@ optionally some of its subdirectories as well. You can use the normal
Emacs commands to move around in this buffer, and special Dired
commands to operate on the listed files.
The Dired buffer is read-only, and inserting text in it is not
allowed. Ordinary printing characters such as @kbd{d} and @kbd{x} are
The Dired buffer is normally read-only, and inserting text in it is
not allowed (however, the Wdired mode allows that, @pxref{Wdired}).
Ordinary printing characters such as @kbd{d} and @kbd{x} are
redefined for special Dired commands. Some Dired commands @dfn{mark}
or @dfn{flag} the @dfn{current file} (that is, the file on the current
line); other commands operate on the marked files or on the flagged

View file

@ -2241,10 +2241,10 @@ attribute is ignored.
@table @code
@item :family
Font family or fontset (a string). @xref{Fonts,,, emacs, The GNU
Font family name (a string). @xref{Fonts,,, emacs, The GNU
Emacs Manual}, for more information about font families. The function
@code{font-family-list} (see below) returns a list of available family
names. @xref{Fontsets}, for information about fontsets.
names.
@item :foundry
The name of the @dfn{font foundry} for the font family specified by
@ -2404,9 +2404,10 @@ Normally you do not need to set the stipple attribute, because it is
used automatically to handle certain shades of gray.
@item :font
The font used to display the face. Its value should be a font object.
@xref{Low-Level Font}, for information about font objects, font specs,
and font entities.
The font used to display the face. Its value should be a font object
or a fontset. @xref{Low-Level Font}, for information about font
objects, font specs, and font entities. @xref{Fontsets}, for
information about fontsets.
When specifying this attribute using @code{set-face-attribute}
(@pxref{Attribute Functions}), you may also supply a font spec, a font

View file

@ -3121,8 +3121,7 @@ while still being visible themselves.
their descendants as well, keeping their relative positions unaltered.
Note that the hook @code{move-frame-functions} (@pxref{Frame Position})
is run for a child frame only when the position of the child frame
relative to its parent frame changes. It is not run for a child frame
when the position of the parent frame changes.
relative to its parent frame changes.
When a parent frame is resized, its child frames conceptually retain
their previous sizes and their positions relative to the left upper

View file

@ -229,7 +229,7 @@ functions have a binding in this keymap.")
;;; Core variables and data structures:
(defvar bookmark-alist ()
"Association list of bookmarks and their records.
"Association list of bookmark names and their parameters.
Bookmark functions update the value automatically.
You probably do NOT want to change the value yourself.
@ -254,7 +254,7 @@ or the deprecated form (BOOKMARK-NAME PARAM-ALIST).
(annotation . ANNOTATION)
FILENAME names the bookmarked file.
POS is the bookmarked buffer position (position in the file).
POS is the bookmarked buffer position.
STR-AFTER-POS is buffer text that immediately follows POS.
STR-BEFORE-POS is buffer text that immediately precedes POS.
ANNOTATION is a string that describes the bookmark.
@ -262,7 +262,7 @@ or the deprecated form (BOOKMARK-NAME PARAM-ALIST).
`bookmark-automatically-show-annotations'.
HANDLER is a function that provides the bookmark-jump behavior for a
specific kind of bookmark. This is the case for Info bookmarks,
for instance. HANDLER must accept a bookmark as argument.")
for instance. HANDLER must accept a bookmark as its single argument.")
(defvar bookmarks-already-loaded nil
"Non-nil if and only if bookmarks have been loaded from `bookmark-default-file'.")

View file

@ -974,8 +974,8 @@ command with a prefix argument (the value does not matter)."
;; "tar -zxf" isn't used because it's not available on the
;; Solaris10 version of tar. Solaris10 becomes obsolete in 2021.
;; Same thing on AIX 7.1.
("\\.tar\\.gz\\'" "" "gzip -dc %i | tar -xv")
("\\.tgz\\'" "" "gzip -dc %i | tar -xv")
("\\.tar\\.gz\\'" "" "gzip -dc %i | tar -xf -")
("\\.tgz\\'" "" "gzip -dc %i | tar -xf -")
("\\.gz\\'" "" "gunzip")
("\\.Z\\'" "" "uncompress")
;; For .z, try gunzip. It might be an old gzip file,
@ -990,7 +990,7 @@ command with a prefix argument (the value does not matter)."
;; This item controls naming for compression.
("\\.tar\\'" ".tgz" nil)
;; This item controls the compression of directories
(":" ".tar.gz" "tar -c %i | gzip -c9 > %o"))
(":" ".tar.gz" "tar -cf - %i | gzip -c9 > %o"))
"Control changes in file name suffixes for compression and uncompression.
Each element specifies one transformation rule, and has the form:
(REGEXP NEW-SUFFIX PROGRAM)
@ -1007,9 +1007,9 @@ Otherwise, the rule is a compression rule, and compression is done with gzip.
ARGS are command switches passed to PROGRAM.")
(defvar dired-compress-files-alist
'(("\\.tar\\.gz\\'" . "tar -c %i | gzip -c9 > %o")
("\\.tar\\.bz2\\'" . "tar -c %i | bzip2 -c9 > %o")
("\\.tar\\.xz\\'" . "tar -c %i | xz -c9 > %o")
'(("\\.tar\\.gz\\'" . "tar -cf - %i | gzip -c9 > %o")
("\\.tar\\.bz2\\'" . "tar -cf - %i | bzip2 -c9 > %o")
("\\.tar\\.xz\\'" . "tar -cf - %i | xz -c9 > %o")
("\\.zip\\'" . "zip %o -r --filesync %i"))
"Control the compression shell command for `dired-do-compress-to'.

View file

@ -354,6 +354,26 @@ Second, any text properties will be stripped from strings."
proposed-value))
(t
proposed-value))))
;; For hash-tables and vectors, the top-level `read' will not
;; "look inside" member values, so we need to do that
;; explicitly.
((hash-table-p proposed-value)
(maphash
(lambda (key value)
(when (class-p (car-safe value))
(setf (gethash key proposed-value)
(eieio-persistent-convert-list-to-object
value))))
proposed-value)
proposed-value)
((vectorp proposed-value)
(dotimes (i (length proposed-value))
(when (class-p (car-safe (aref proposed-value i)))
(aset proposed-value i
(eieio-persistent-convert-list-to-object
(aref proposed-value i)))))
proposed-value)
((stringp proposed-value)
;; Else, check for strings, remove properties.

View file

@ -926,6 +926,25 @@ this object."
(object-write thing))
((consp thing)
(eieio-list-prin1 thing))
((hash-table-p thing)
(let ((copy (copy-hash-table thing)))
(maphash
(lambda (key val)
(setf (gethash key copy)
(read
(with-output-to-string
(eieio-override-prin1 val)))))
copy)
(prin1 copy)))
((vectorp thing)
(let ((copy (copy-sequence thing)))
(dotimes (i (length copy))
(aset copy i
(read
(with-output-to-string
(eieio-override-prin1
(aref copy i))))))
(prin1 copy)))
((eieio--class-p thing)
(princ (eieio--class-print-name thing)))
(t (prin1 thing))))

View file

@ -645,7 +645,7 @@ The following attributes are recognized:
`:family'
VALUE must be a string specifying the font family
\(e.g. \"Monospace\") or a fontset.
\(e.g. \"Monospace\").
`:foundry'
@ -761,9 +761,10 @@ from an X font name:
`:font'
Set font-related face attributes from VALUE. VALUE must be a
valid font name or font object. Setting this attribute will also
set the `:family', `:foundry', `:width', `:height', `:weight',
Set font-related face attributes from VALUE.
VALUE must be a valid font name or font object. It can also
be a fontset name. Setting this attribute will also set
the `:family', `:foundry', `:width', `:height', `:weight',
and `:slant' attributes.
`:inherit'

View file

@ -643,7 +643,7 @@ whose elements are of the form (VAR . VALUE).
When a connection to a remote server is opened, the server's
connection profiles are found. A server may be assigned a
connection profile using `connection-local-set-profile'. Then
connection profile using `connection-local-set-profiles'. Then
variables are set in the server's process buffer according to the
VARIABLES list of the connection profile. The list is processed
in order."

View file

@ -1147,10 +1147,14 @@ given from DEFAULT-SPEC."
(defun fontset-name-p (fontset)
"Return non-nil if FONTSET is valid as fontset name.
A valid fontset name should conform to XLFD (X Logical Font Description)
with \"fontset\" in `<CHARSET_REGISTRY>' field."
(and (string-match xlfd-tight-regexp fontset)
(string= (match-string (1+ xlfd-regexp-registry-subnum) fontset)
"fontset")))
with \"fontset-SOMETHING\" in `<CHARSET_REGISTRY>' field.
A fontset alias name recorded in `fontset-alias-alist' is also a valid
fontset name."
(or (and (string-match xlfd-tight-regexp fontset)
(let ((registry
(match-string (1+ xlfd-regexp-registry-subnum) fontset)))
(= 0 (string-match "\\`fontset-" registry))))
(consp (rassoc fontset fontset-alias-alist))))
(declare-function fontset-list "fontset.c" ())

View file

@ -1330,7 +1330,9 @@ If STR has `advice' text property, append the following special event:
(defvar quail-conversion-str nil)
(defun quail-input-method (key)
(if (or buffer-read-only
(if (or (and buffer-read-only
(not (or inhibit-read-only
(get-char-property (point) 'inhibit-read-only))))
(and overriding-terminal-local-map
;; If the overriding map is `universal-argument-map', that
;; must mean the user has pressed 'C-u KEY'. If KEY has a

View file

@ -92,6 +92,7 @@ to all of the tests described above."
"/etc/ssl/ca-bundle.pem" ; Suse
"/usr/ssl/certs/ca-bundle.crt" ; Cygwin
"/usr/local/share/certs/ca-root-nss.crt" ; FreeBSD
"/etc/ssl/cert.pem" ; macOS
)
"List of CA bundle location filenames or a function returning said list.
The files may be in PEM or DER format, as per the GnuTLS documentation.

View file

@ -4547,14 +4547,14 @@ Only works for Bourne-like shells."
'tramp-send-command
(tramp-get-connection-property proc "vector" nil)
(format "kill -2 %d" pid))
;; Wait, until the process has disappeared.
(with-timeout
(1 (tramp-error proc 'error "Process %s did not interrupt" proc))
;; Wait, until the process has disappeared. If it doesn't,
;; fall back to the default implementation.
(with-timeout (1 (ignore))
(while (process-live-p proc)
;; We cannot run `tramp-accept-process-output', it blocks timers.
(accept-process-output proc 0.1)))
;; Report success.
proc))))
(accept-process-output proc 0.1))
;; Report success.
proc)))))
;; `interrupt-process-functions' exists since Emacs 26.1.
(when (boundp 'interrupt-process-functions)

View file

@ -307,6 +307,8 @@ Blank lines separate paragraphs. Semicolons start comments.
(setq sexp (ignore-errors (butlast sexp)))))
res))
(defvar warning-minimum-log-level)
(defun elisp--local-variables ()
"Return a list of locally let-bound variables at point."
(save-excursion
@ -328,7 +330,7 @@ Blank lines separate paragraphs. Semicolons start comments.
(error form))))
(sexp
(unwind-protect
(progn
(let ((warning-minimum-log-level :emergency))
(advice-add 'macroexpand :around macroexpand-advice)
(macroexpand-all sexp))
(advice-remove 'macroexpand macroexpand-advice)))

View file

@ -3958,8 +3958,8 @@ Key bindings specific to `verilog-mode-map' are:
(when (boundp 'hs-special-modes-alist)
(unless (assq 'verilog-mode hs-special-modes-alist)
(setq hs-special-modes-alist
(cons '(verilog-mode-mode "\\<begin\\>" "\\<end\\>" nil
verilog-forward-sexp-function)
(cons '(verilog-mode "\\<begin\\>" "\\<end\\>" nil
verilog-forward-sexp-function)
hs-special-modes-alist))))
(add-hook 'completion-at-point-functions

View file

@ -949,6 +949,16 @@ bset_display_count (struct buffer *b, Lisp_Object val)
b->display_count_ = val;
}
INLINE void
bset_left_margin_cols (struct buffer *b, Lisp_Object val)
{
b->left_margin_cols_ = val;
}
INLINE void
bset_right_margin_cols (struct buffer *b, Lisp_Object val)
{
b->right_margin_cols_ = val;
}
INLINE void
bset_display_time (struct buffer *b, Lisp_Object val)
{
b->display_time_ = val;

View file

@ -1325,6 +1325,10 @@ free_realized_fontsets (Lisp_Object base)
if (CHAR_TABLE_P (this) && EQ (FONTSET_BASE (this), base))
{
Fclear_face_cache (Qt);
/* This is in case some Lisp calls this function and then
proceeds with calling some other function, like font-at,
which needs the basic faces. */
recompute_basic_faces (XFRAME (FONTSET_FRAME (this)));
break;
}
}

File diff suppressed because it is too large Load diff

View file

@ -7346,6 +7346,7 @@ Text larger than the specified size is clipped. */)
ptrdiff_t count = SPECPDL_INDEX ();
ptrdiff_t count_1;
Lisp_Object window, size;
Lisp_Object tip_buf;
AUTO_STRING (tip, " *tip*");
specbind (Qinhibit_redisplay, Qt);
@ -7503,7 +7504,12 @@ Text larger than the specified size is clipped. */)
tip_f = XFRAME (tip_frame);
window = FRAME_ROOT_WINDOW (tip_f);
set_window_buffer (window, Fget_buffer_create (tip), false, false);
tip_buf = Fget_buffer_create (tip);
/* We will mark the tip window a "pseudo-window" below, and such
windows cannot have display margins. */
bset_left_margin_cols (XBUFFER (tip_buf), make_number (0));
bset_right_margin_cols (XBUFFER (tip_buf), make_number (0));
set_window_buffer (window, tip_buf, false, false);
w = XWINDOW (window);
w->pseudo_window_p = true;

View file

@ -370,7 +370,8 @@ struct window
bool_bf must_be_updated_p : 1;
/* Flag indicating that this window is not a real one.
Currently only used for menu bar windows of frames. */
Currently only used for menu bar windows, for tool bar windows,
and for tooltips. */
bool_bf pseudo_window_p : 1;
/* True means fringes are drawn outside display margins.

View file

@ -19479,19 +19479,34 @@ Only text-mode frames have frame glyph matrices. */)
}
DEFUN ("dump-glyph-row", Fdump_glyph_row, Sdump_glyph_row, 1, 2, "",
DEFUN ("dump-glyph-row", Fdump_glyph_row, Sdump_glyph_row, 1, 2, "P",
doc: /* Dump glyph row ROW to stderr.
GLYPH 0 means don't dump glyphs.
GLYPH 1 means dump glyphs in short form.
GLYPH > 1 or omitted means dump glyphs in long form. */)
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. */)
(Lisp_Object row, Lisp_Object glyphs)
{
struct glyph_matrix *matrix;
EMACS_INT vpos;
CHECK_NUMBER (row);
if (NILP (row))
{
int d1, d2, d3, d4, d5, ypos;
bool visible_p = pos_visible_p (XWINDOW (selected_window), PT,
&d1, &d2, &d3, &d4, &d5, &ypos);
if (visible_p)
vpos = ypos;
else
vpos = 0;
}
else
{
CHECK_NUMBER (row);
vpos = XINT (row);
}
matrix = XWINDOW (selected_window)->current_matrix;
vpos = XINT (row);
if (vpos >= 0 && vpos < matrix->nrows)
dump_glyph_row (MATRIX_ROW (matrix, vpos),
vpos,
@ -19500,11 +19515,12 @@ GLYPH > 1 or omitted means dump glyphs in long form. */)
}
DEFUN ("dump-tool-bar-row", Fdump_tool_bar_row, Sdump_tool_bar_row, 1, 2, "",
DEFUN ("dump-tool-bar-row", Fdump_tool_bar_row, Sdump_tool_bar_row, 1, 2, "P",
doc: /* Dump glyph row ROW of the tool-bar of the current frame to stderr.
GLYPH 0 means don't dump glyphs.
GLYPH 1 means dump glyphs in short form.
GLYPH > 1 or omitted means dump glyphs in long form.
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. */)
@ -19515,8 +19531,13 @@ do nothing. */)
struct glyph_matrix *m = XWINDOW (sf->tool_bar_window)->current_matrix;
EMACS_INT vpos;
CHECK_NUMBER (row);
vpos = XINT (row);
if (NILP (row))
vpos = 0;
else
{
CHECK_NUMBER (row);
vpos = XINT (row);
}
if (vpos >= 0 && vpos < m->nrows)
dump_glyph_row (MATRIX_ROW (m, vpos), vpos,
TYPE_RANGED_INTEGERP (int, glyphs) ? XINT (glyphs) : 2);
@ -21668,7 +21689,6 @@ display_line (struct it *it, int cursor_vpos)
row->continued_p = true;
row->ends_at_zv_p = false;
row->exact_window_width_line_p = false;
it->continuation_lines_width += x;
/* Make sure that a non-default face is extended
up to the right margin of the window. */

View file

@ -6623,6 +6623,7 @@ Text larger than the specified size is clipped. */)
ptrdiff_t count = SPECPDL_INDEX ();
ptrdiff_t count_1;
Lisp_Object window, size;
Lisp_Object tip_buf;
AUTO_STRING (tip, " *tip*");
specbind (Qinhibit_redisplay, Qt);
@ -6787,7 +6788,12 @@ Text larger than the specified size is clipped. */)
tip_f = XFRAME (tip_frame);
window = FRAME_ROOT_WINDOW (tip_f);
set_window_buffer (window, Fget_buffer_create (tip), false, false);
tip_buf = Fget_buffer_create (tip);
/* We will mark the tip window a "pseudo-window" below, and such
windows cannot have display margins. */
bset_left_margin_cols (XBUFFER (tip_buf), make_number (0));
bset_right_margin_cols (XBUFFER (tip_buf), make_number (0));
set_window_buffer (window, tip_buf, false, false);
w = XWINDOW (window);
w->pseudo_window_p = true;