summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2022-01-22 08:26:54 +0200
committerEli Zaretskii <eliz@gnu.org>2022-01-22 08:26:54 +0200
commitb44505d6eca8b0029fff166090abf0d7f7e3ce27 (patch)
tree6ff2728829caa173ebed30b1c65fa393372a5855
parent87107b05a17af95e190982a7f62671563405c829 (diff)
parent643985e8b6d5277a83b4d8657bbdb8452591ce83 (diff)
downloademacs-b44505d6eca8b0029fff166090abf0d7f7e3ce27.tar.gz
Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs
-rwxr-xr-xadmin/emake3
-rw-r--r--lisp/cus-start.el2
-rw-r--r--lisp/gnus/message.el6
-rw-r--r--lisp/minibuffer.el8
-rw-r--r--lisp/url/url-queue.el17
-rw-r--r--lisp/vc/diff-mode.el3
-rw-r--r--src/gtkutil.c12
-rw-r--r--src/keyboard.c4
-rw-r--r--src/pgtkterm.c16
-rw-r--r--src/verbose.mk.in32
-rw-r--r--src/xterm.c48
11 files changed, 73 insertions, 78 deletions
diff --git a/admin/emake b/admin/emake
index bfada1eb3e9..6c778c85d41 100755
--- a/admin/emake
+++ b/admin/emake
@@ -79,8 +79,9 @@ The GNU allocators don't work|\
^git config |\
^'\.git/|\
^\^\(\(|\
+^ANCIENT=yes make|\
+^touch -t|\
^'build-aux/git-hooks\
-^ANCIENT=yes make\
" | \
while read
do
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 7f639240f51..afdbd82457b 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -370,7 +370,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
(auto-save-timeout auto-save (choice (const :tag "off" nil)
(integer :format "%v")))
(echo-keystrokes minibuffer number)
- (polling-period keyboard integer)
+ (polling-period keyboard float)
(double-click-time mouse (restricted-sexp
:match-alternatives (integerp 'nil 't)))
(double-click-fuzz mouse integer "22.1")
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 3cd1b7eefe8..a6c6a16653d 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -4357,7 +4357,11 @@ it is left unchanged."
(defun message-update-smtp-method-header ()
"Insert an X-Message-SMTP-Method header according to `message-server-alist'."
(unless (message-fetch-field "X-Message-SMTP-Method")
- (let ((from (cadr (mail-extract-address-components (message-fetch-field "From"))))
+ (let ((from (cadr (mail-extract-address-components
+ (save-restriction
+ (widen)
+ (message-narrow-to-headers-or-head)
+ (message-fetch-field "From")))))
method)
(catch 'exit
(dolist (server message-server-alist)
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index ab760a42d15..d58c23af8fb 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1004,7 +1004,9 @@ an association list that can specify properties such as:
- `styles': the list of `completion-styles' to use for that category.
- `cycle': the `completion-cycle-threshold' to use for that category.
Categories are symbols such as `buffer' and `file', used when
-completing buffer and file names, respectively.")
+completing buffer and file names, respectively.
+
+Also see `completion-category-overrides'.")
(defcustom completion-category-overrides nil
"List of category-specific user overrides for completion styles.
@@ -1014,7 +1016,9 @@ an association list that can specify properties such as:
- `cycle': the `completion-cycle-threshold' to use for that category.
Categories are symbols such as `buffer' and `file', used when
completing buffer and file names, respectively.
-This overrides the defaults specified in `completion-category-defaults'."
+
+If a property in a category is specified by this variable, it
+overrides the default specified in `completion-category-defaults'."
:version "25.1"
:type `(alist :key-type (choice :tag "Category"
(const buffer)
diff --git a/lisp/url/url-queue.el b/lisp/url/url-queue.el
index 8741bca9423..d353f0c0117 100644
--- a/lisp/url/url-queue.el
+++ b/lisp/url/url-queue.el
@@ -155,14 +155,19 @@ The variable `url-queue-timeout' sets a timeout."
(defun url-queue-start-retrieve (job)
(setf (url-queue-buffer job)
(ignore-errors
- (with-current-buffer (if (buffer-live-p (url-queue-context-buffer job))
+ (with-current-buffer (if (buffer-live-p
+ (url-queue-context-buffer job))
(url-queue-context-buffer job)
(current-buffer))
- (let ((url-request-noninteractive t))
- (url-retrieve (url-queue-url job)
- #'url-queue-callback-function (list job)
- (url-queue-silentp job)
- (url-queue-inhibit-cookiesp job)))))))
+ (let ((url-request-noninteractive t)
+ ;; This will disable querying the user for
+ ;; credentials if one of the things we're fetching
+ ;; in the background return a header requesting it.
+ (url-request-extra-headers '(("Authorization" . ""))))
+ (url-retrieve (url-queue-url job)
+ #'url-queue-callback-function (list job)
+ (url-queue-silentp job)
+ (url-queue-inhibit-cookiesp job)))))))
(defun url-queue-prune-old-entries ()
(let (dead-jobs)
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index ae2f545966e..731d1e8256f 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -2270,8 +2270,7 @@ Return new point, if it was moved."
(defun diff--iterate-hunks (max fun)
"Iterate over all hunks between point and MAX.
-Call FUN with two args (BEG and END) for each hunk.
-If INHIBIT-ERROR, ignore malformed hunks."
+Call FUN with two args (BEG and END) for each hunk."
(save-excursion
(catch 'malformed
(let* ((beg (or (ignore-errors (diff-beginning-of-hunk))
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 3cb8cd15332..eb148560620 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -4534,6 +4534,12 @@ xg_update_scrollbar_pos (struct frame *f,
gtk_widget_show_all (wparent);
gtk_widget_set_size_request (wscroll, width, height);
}
+
+#if !defined HAVE_PGTK && GTK_CHECK_VERSION (2, 18, 0)
+ if (!gdk_window_ensure_native (gtk_widget_get_window (wscroll)))
+ emacs_abort ();
+#endif
+
if (oldx != -1 && oldw > 0 && oldh > 0)
{
/* Clear under old scroll bar position. */
@@ -4587,7 +4593,6 @@ xg_update_horizontal_scrollbar_pos (struct frame *f,
int width,
int height)
{
-
GtkWidget *wscroll = xg_get_widget_from_map (scrollbar_id);
if (wscroll)
@@ -4634,6 +4639,11 @@ xg_update_horizontal_scrollbar_pos (struct frame *f,
pgtk_clear_area (f, oldx, oldy, oldw, oldh);
#endif
+#if !defined HAVE_PGTK && GTK_CHECK_VERSION (2, 18, 0)
+ if (!gdk_window_ensure_native (gtk_widget_get_window (wscroll)))
+ emacs_abort ();
+#endif
+
/* GTK does not redraw until the main loop is entered again, but
if there are no X events pending we will not enter it. So we sync
here to get some events. */
diff --git a/src/keyboard.c b/src/keyboard.c
index 6f1614a7dfb..70e055a9df9 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1941,7 +1941,7 @@ start_polling (void)
a different interval, start a new one. */
if (NUMBERP (Vpolling_period)
&& (poll_timer == NULL
- || !Fequal (Vpolling_period, poll_timer_time)))
+ || NILP (Fequal (Vpolling_period, poll_timer_time))))
{
struct timespec interval = dtotimespec (XFLOATINT (Vpolling_period));
@@ -12082,8 +12082,10 @@ syms_of_keyboard (void)
help_form_saved_window_configs = Qnil;
staticpro (&help_form_saved_window_configs);
+#ifdef POLL_FOR_INPUT
poll_timer_time = Qnil;
staticpro (&poll_timer_time);
+#endif
defsubr (&Scurrent_idle_time);
defsubr (&Sevent_symbol_parse_modifiers);
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index 4c38ff5a597..8073f51c610 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -3734,6 +3734,9 @@ pgtk_flash (struct frame *f)
block_input ();
{
+ if (!FRAME_CR_CONTEXT (f))
+ return;
+
cairo_surface_t *surface_orig = FRAME_CR_SURFACE (f);
int width = FRAME_CR_SURFACE_DESIRED_WIDTH (f);
@@ -7041,13 +7044,12 @@ If set to a non-float value, there will be no wait at all. */);
}
/* Cairo does not allow resizing a surface/context after it is
- * created, so we need to trash the old context, create a new context
- * on the next cr_clip_begin with the new dimensions and request a
- * re-draw.
- *
- * This Will leave the active context available to present on screen
- * until a redrawn frame is completed.
- */
+ created, so we need to trash the old context, create a new context
+ on the next cr_clip_begin with the new dimensions and request a
+ re-draw.
+
+ This will leave the active context available to present on screen
+ until a redrawn frame is completed. */
void
pgtk_cr_update_surface_desired_size (struct frame *f, int width, int height, bool force)
{
diff --git a/src/verbose.mk.in b/src/verbose.mk.in
index 01076df9463..eb99e426958 100644
--- a/src/verbose.mk.in
+++ b/src/verbose.mk.in
@@ -33,29 +33,45 @@ AM_V_GLOBALS =
AM_V_NO_PD =
AM_V_RC =
else
+
+# Whether $(info ...) works. This is to work around a bug in GNU Make
+# 4.3 and earlier, which implements $(info MSG) via two system calls
+# { write (..., "MSG", 3); write (..., "\n", 1); }
+# which looks bad when make -j interleaves two of these at about the same time.
+#
+# Later versions of GNU Make have the 'notintermediate' feature,
+# so assume that $(info ...) works if this feature is present.
+#
+have_working_info = $(filter notintermediate,$(value .FEATURES))
+#
+# The workaround is to use the shell and 'echo' rather than $(info ...).
+# The workaround is done only for AM_V_ELC and AM_V_ELN,
+# since the bug is not annoying elsewhere.
+
AM_V_AR = @$(info $ AR $@)
AM_V_at = @
AM_V_CC = @$(info $ CC $@)
AM_V_CXX = @$(info $ CXX $@)
AM_V_CCLD = @$(info $ CCLD $@)
AM_V_CXXLD = @$(info $ CXXLD $@)
-ifeq ($(HAVE_NATIVE_COMP),yes)
-ifneq ($(NATIVE_DISABLED),1)
-ifneq ($(ANCIENT),yes)
+
+ifeq ($(HAVE_NATIVE_COMP)-$(NATIVE_DISABLED)-$(ANCIENT),yes--)
+ifdef have_working_info
AM_V_ELC = @$(info $ ELC+ELN $@)
AM_V_ELN = @$(info $ ELN $@)
else
-AM_V_ELC = @$(info $ ELC $@)
-AM_V_ELN =
+AM_V_ELC = @echo " ELC+ELN " $@;
+AM_V_ELN = @echo " ELN " $@;
endif
else
+ifdef have_working_info
AM_V_ELC = @$(info $ ELC $@)
-AM_V_ELN =
-endif
else
-AM_V_ELC = @$(info $ ELC $@)
+AM_V_ELC = @echo " ELC " $@;
+endif
AM_V_ELN =
endif
+
AM_V_GEN = @$(info $ GEN $@)
AM_V_GLOBALS = @$(info $ GEN globals.h)
AM_V_NO_PD = --no-print-directory
diff --git a/src/xterm.c b/src/xterm.c
index 0f98cc7bec6..81baeddbcaa 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -4650,38 +4650,6 @@ XTflash (struct frame *f)
block_input ();
{
-#ifdef USE_GTK
- /* Use Gdk routines to draw. This way, we won't draw over scroll bars
- when the scroll bars and the edit widget share the same X window. */
- GdkWindow *window = gtk_widget_get_window (FRAME_GTK_WIDGET (f));
-#ifdef HAVE_GTK3
-#if GTK_CHECK_VERSION (3, 22, 0)
- cairo_region_t *region = gdk_window_get_visible_region (window);
- GdkDrawingContext *context = gdk_window_begin_draw_frame (window, region);
- cairo_t *cr = gdk_drawing_context_get_cairo_context (context);
-#else
- cairo_t *cr = gdk_cairo_create (window);
-#endif
- cairo_set_source_rgb (cr, 1, 1, 1);
- cairo_set_operator (cr, CAIRO_OPERATOR_DIFFERENCE);
-#define XFillRectangle(d, win, gc, x, y, w, h) \
- do { \
- cairo_rectangle (cr, x, y, w, h); \
- cairo_fill (cr); \
- } \
- while (false)
-#else /* ! HAVE_GTK3 */
- GdkGCValues vals;
- GdkGC *gc;
- vals.foreground.pixel = (FRAME_FOREGROUND_PIXEL (f)
- ^ FRAME_BACKGROUND_PIXEL (f));
- vals.function = GDK_XOR;
- gc = gdk_gc_new_with_values (window,
- &vals, GDK_GC_FUNCTION | GDK_GC_FOREGROUND);
-#define XFillRectangle(d, win, gc, x, y, w, h) \
- gdk_draw_rectangle (window, gc, true, x, y, w, h)
-#endif /* ! HAVE_GTK3 */
-#else /* ! USE_GTK */
GC gc;
/* Create a GC that will use the GXxor function to flip foreground
@@ -4696,7 +4664,6 @@ XTflash (struct frame *f)
gc = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
GCFunction | GCForeground, &values);
}
-#endif
{
/* Get the height not including a menu bar widget. */
int height = FRAME_PIXEL_HEIGHT (f);
@@ -4772,22 +4739,7 @@ XTflash (struct frame *f)
XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
flash_left, FRAME_INTERNAL_BORDER_WIDTH (f),
width, height - 2 * FRAME_INTERNAL_BORDER_WIDTH (f));
-
-#ifdef USE_GTK
-#ifdef HAVE_GTK3
-#if GTK_CHECK_VERSION (3, 22, 0)
- gdk_window_end_draw_frame (window, context);
- cairo_region_destroy (region);
-#else
- cairo_destroy (cr);
-#endif
-#else
- g_object_unref (G_OBJECT (gc));
-#endif
-#undef XFillRectangle
-#else
XFreeGC (FRAME_X_DISPLAY (f), gc);
-#endif
x_flush (f);
}
}