-
This commit is contained in:
commit
8456ba1d49
12 changed files with 1037 additions and 697 deletions
11
CONTRIBUTE
11
CONTRIBUTE
|
@ -278,6 +278,17 @@ you run "make check-expensive" from the top-level directory. "make
|
|||
line. So "make check SELECTOR=nil" is equivalent to "make
|
||||
check-expensive".
|
||||
|
||||
You could also use predefined selectors of the Makefile. "make
|
||||
<filename> SELECTOR='$(SELECTOR_DEFAULT)'" runs all tests for
|
||||
<filename>.el(c) except the tests tagged as expensive.
|
||||
|
||||
Selectors can be defined with different methods, see (info "(ert)Test
|
||||
Selectors") or
|
||||
https://www.gnu.org/software/emacs/manual/html_node/ert/Test-Selectors.html
|
||||
If your test file contains the tests "test-foo", "test2-foo" and
|
||||
"test-foo-remote", and you want to run only the former two tests, you
|
||||
could use a regexp: "make <filename> SELECTOR='\"foo$$\"'" .
|
||||
|
||||
** Understanding Emacs Internals.
|
||||
|
||||
The best way to understand Emacs Internals is to read the code,
|
||||
|
|
|
@ -290,10 +290,11 @@ Sequences consisting of @kbd{C-c} followed by @kbd{@{}, @kbd{@}},
|
|||
@kbd{<}, @kbd{>}, @kbd{:} or @kbd{;} are also reserved for major modes.
|
||||
|
||||
@item
|
||||
Sequences consisting of @kbd{C-c} followed by any other punctuation
|
||||
character are allocated for minor modes. Using them in a major mode is
|
||||
not absolutely prohibited, but if you do that, the major mode binding
|
||||
may be shadowed from time to time by minor modes.
|
||||
Sequences consisting of @kbd{C-c} followed by any other
|
||||
@acronym{ASCII} punctuation or symbol character are allocated for
|
||||
minor modes. Using them in a major mode is not absolutely prohibited,
|
||||
but if you do that, the major mode binding may be shadowed from time
|
||||
to time by minor modes.
|
||||
|
||||
@item
|
||||
Don't bind @kbd{C-h} following any prefix character (including
|
||||
|
|
|
@ -420,7 +420,7 @@ article body. It is effective to images in @acronym{HTML} articles
|
|||
rendered when @code{mm-text-html-renderer} (@pxref{Display
|
||||
Customization}) is @code{shr} or @code{w3m}. In Gnus, this is
|
||||
overridden by the value of @code{gnus-inhibit-images} (@pxref{Misc
|
||||
Article, ,Misc Article, gnus, Gnus manual}).
|
||||
Article, ,Misc Article, gnus, Gnus manual}). The default is @code{nil}.
|
||||
|
||||
@item mm-html-blocked-images
|
||||
@vindex mm-html-blocked-images
|
||||
|
@ -436,7 +436,7 @@ It is effective when @code{mm-text-html-renderer} (@pxref{Display
|
|||
Customization}) is @code{shr}. In Gnus, this is overridden by the value
|
||||
of @code{gnus-blocked-images} or the return value of the function that
|
||||
@code{gnus-blocked-images} is set to (@pxref{HTML, ,HTML, gnus, Gnus
|
||||
manual}).
|
||||
manual}). The default is @code{nil}.
|
||||
|
||||
@item mm-w3m-safe-url-regexp
|
||||
@vindex mm-w3m-safe-url-regexp
|
||||
|
|
1615
doc/misc/texinfo.tex
1615
doc/misc/texinfo.tex
File diff suppressed because it is too large
Load diff
19
etc/NEWS
19
etc/NEWS
|
@ -434,6 +434,20 @@ to version 206, you can do this with C-u C-u M-x desktop-save.
|
|||
It raises an error if a bookmark of that name already exists,
|
||||
unlike `bookmark-set' which silently updates an existing bookmark.
|
||||
|
||||
** Gnus
|
||||
|
||||
+++
|
||||
*** New user options `mm-html-inhibit-images' and `mm-html-blocked-images'
|
||||
now control how mm-* functions fetch and display images in an HTML
|
||||
message. Gnus still uses `gnus-inhibit-images' and `gnus-blocked-images'
|
||||
for that purpose, i.e., binds mm-html- variables with those gnus-
|
||||
variables, but other packages do not have to bind gnus- variables now.
|
||||
|
||||
---
|
||||
*** `mm-inline-text-html-with-images' has been removed.
|
||||
Use `mm-html-inhibit-images' instead. Note that the value is opposite
|
||||
in meaning.
|
||||
|
||||
** IMAP
|
||||
|
||||
---
|
||||
|
@ -1062,6 +1076,11 @@ comparing with the next window, customize the new option
|
|||
replace the face `compare-windows', which is now an obsolete alias for
|
||||
`compare-windows-added'.
|
||||
|
||||
---
|
||||
*** The VC state indicator in the mode line now has different faces
|
||||
corresponding to each of the possible states. See the `vc-faces'
|
||||
customization group.
|
||||
|
||||
---
|
||||
*** `log-edit-insert-changelog' converts "(tiny change)" to
|
||||
"Copyright-paperwork-exempt: yes". Set `log-edit-rewrite-tiny-change'
|
||||
|
|
|
@ -111,7 +111,7 @@
|
|||
# endif
|
||||
#endif
|
||||
#if ((defined _Alignas && ! (defined __cplusplus && 201103 <= __cplusplus)) \
|
||||
|| (defined __STDC_VERSION && 201112 <= __STDC_VERSION__))
|
||||
|| (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
|
||||
# define alignas _Alignas
|
||||
#endif
|
||||
#if defined alignas || (defined __cplusplus && 201103 <= __cplusplus)
|
||||
|
|
|
@ -145,16 +145,13 @@ nil : use external viewer (default web browser)."
|
|||
(function))
|
||||
:group 'mime-display)
|
||||
|
||||
(defcustom mm-html-inhibit-images
|
||||
(if (boundp 'mm-inline-text-html-with-images)
|
||||
(not (symbol-value 'mm-inline-text-html-with-images))
|
||||
t)
|
||||
(defcustom mm-html-inhibit-images nil
|
||||
"Non-nil means inhibit displaying of images inline in the article body."
|
||||
:version "25.1"
|
||||
:type 'boolean
|
||||
:group 'mime-display)
|
||||
|
||||
(defcustom mm-html-blocked-images ""
|
||||
(defcustom mm-html-blocked-images nil
|
||||
"Regexp matching image URLs to be blocked, or nil meaning not to block.
|
||||
Note that cid images that are embedded in a message won't be blocked."
|
||||
:version "25.1"
|
||||
|
|
|
@ -1818,13 +1818,15 @@ The preference is a float determined from `shr-prefer-media-type'."
|
|||
|
||||
(defun shr-face-background (face)
|
||||
(and (consp face)
|
||||
(let ((background nil))
|
||||
(dolist (elem face)
|
||||
(when (and (consp elem)
|
||||
(eq (car elem) :background))
|
||||
(setq background (cadr elem))))
|
||||
(and background
|
||||
(list :background background)))))
|
||||
(or (and (plist-get face :background)
|
||||
(list :background (plist-get face :background)))
|
||||
(let ((background nil))
|
||||
(dolist (elem face)
|
||||
(when (and (consp elem)
|
||||
(eq (car elem) :background))
|
||||
(setq background (cadr elem))))
|
||||
(and background
|
||||
(list :background background))))))
|
||||
|
||||
(defun shr-expand-alignments (start end)
|
||||
(while (< (setq start (next-single-property-change
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# acl.m4 - check for access control list (ACL) primitives
|
||||
# serial 21
|
||||
# serial 22
|
||||
|
||||
# Copyright (C) 2002, 2004-2016 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
|
@ -163,9 +163,8 @@ AC_DEFUN([gl_ACL_GET_FILE],
|
|||
#include <sys/acl.h>
|
||||
#include <errno.h>
|
||||
]],
|
||||
[[if (!acl_get_file (".", ACL_TYPE_ACCESS) && errno == ENOENT)
|
||||
return 1;
|
||||
return 0;
|
||||
[[acl_t acl = acl_get_file (".", ACL_TYPE_ACCESS);
|
||||
return acl ? acl_free (acl) != 0 : errno == ENOENT;
|
||||
]])],
|
||||
[if test $cross_compiling = yes; then
|
||||
gl_cv_func_working_acl_get_file="guessing yes"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# serial 18
|
||||
# serial 19
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl A wrapper around AC_FUNC_GETGROUPS.
|
||||
|
@ -87,7 +87,9 @@ AC_DEFUN([gl_FUNC_GETGROUPS],
|
|||
[AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
|
||||
[[int size = getgroups (0, 0);
|
||||
gid_t *list = malloc (size * sizeof *list);
|
||||
return getgroups (-1, list) != -1;]])],
|
||||
int result = getgroups (-1, list) != -1;
|
||||
free (list);
|
||||
return result;]])],
|
||||
[gl_cv_func_getgroups_works=yes],
|
||||
[gl_cv_func_getgroups_works=no],
|
||||
[case "$host_os" in
|
||||
|
|
34
src/alloc.c
34
src/alloc.c
|
@ -1383,12 +1383,25 @@ lisp_align_free (void *block)
|
|||
static bool
|
||||
laligned (void *p, size_t size)
|
||||
{
|
||||
return (MALLOC_IS_GC_ALIGNED || size % GCALIGNMENT != 0
|
||||
|| (intptr_t) p % GCALIGNMENT == 0);
|
||||
return (MALLOC_IS_GC_ALIGNED || (intptr_t) p % GCALIGNMENT == 0
|
||||
|| size % GCALIGNMENT != 0);
|
||||
}
|
||||
|
||||
/* Like malloc and realloc except that if SIZE is Lisp-aligned, make
|
||||
sure the result is too. */
|
||||
sure the result is too, if necessary by reallocating (typically
|
||||
with larger and larger sizes) until the allocator returns a
|
||||
Lisp-aligned pointer. Code that needs to allocate C heap memory
|
||||
for a Lisp object should use one of these functions to obtain a
|
||||
pointer P; that way, if T is an enum Lisp_Type value and L ==
|
||||
make_lisp_ptr (P, T), then XPNTR (L) == P and XTYPE (L) == T.
|
||||
|
||||
On typical modern platforms these functions' loops do not iterate.
|
||||
On now-rare (and perhaps nonexistent) platforms, the loops in
|
||||
theory could repeat forever. If an infinite loop is possible on a
|
||||
platform, a build would surely loop and the builder can then send
|
||||
us a bug report. Adding a counter to try to detect any such loop
|
||||
would complicate the code (and possibly introduce bugs, in code
|
||||
that's never really exercised) for little benefit. */
|
||||
|
||||
static void *
|
||||
lmalloc (size_t size)
|
||||
|
@ -1405,6 +1418,9 @@ lmalloc (size_t size)
|
|||
if (laligned (p, size))
|
||||
break;
|
||||
free (p);
|
||||
size_t bigger;
|
||||
if (! INT_ADD_WRAPV (size, GCALIGNMENT, &bigger))
|
||||
size = bigger;
|
||||
}
|
||||
|
||||
eassert ((intptr_t) p % GCALIGNMENT == 0);
|
||||
|
@ -1414,9 +1430,15 @@ lmalloc (size_t size)
|
|||
static void *
|
||||
lrealloc (void *p, size_t size)
|
||||
{
|
||||
do
|
||||
p = realloc (p, size);
|
||||
while (! laligned (p, size));
|
||||
while (true)
|
||||
{
|
||||
p = realloc (p, size);
|
||||
if (laligned (p, size))
|
||||
break;
|
||||
size_t bigger;
|
||||
if (! INT_ADD_WRAPV (size, GCALIGNMENT, &bigger))
|
||||
size = bigger;
|
||||
}
|
||||
|
||||
eassert ((intptr_t) p % GCALIGNMENT == 0);
|
||||
return p;
|
||||
|
|
|
@ -262,10 +262,6 @@ DEFINE_GDB_SYMBOL_END (USE_LSB_TAG)
|
|||
error !;
|
||||
#endif
|
||||
|
||||
#ifndef alignas
|
||||
# error "alignas not defined"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STRUCT_ATTRIBUTE_ALIGNED
|
||||
# define GCALIGNED __attribute__ ((aligned (GCALIGNMENT)))
|
||||
#else
|
||||
|
|
Loading…
Add table
Reference in a new issue