From 41fa88b99bebf7af62cdea0c0867b04e9b968db3 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 28 Sep 2018 14:02:52 -0400 Subject: [PATCH 001/567] ; Fix some doc typos --- lisp/cedet/ede/project-am.el | 2 +- lisp/cedet/semantic/db-ref.el | 2 +- lisp/cedet/semantic/scope.el | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/cedet/ede/project-am.el b/lisp/cedet/ede/project-am.el index d3f0648350c2..e0fb111d076b 100644 --- a/lisp/cedet/ede/project-am.el +++ b/lisp/cedet/ede/project-am.el @@ -532,7 +532,7 @@ DIR is the directory to apply to new targets." (project-rescan tmp) (setq ntargets (cons tmp ntargets))) (makefile-macro-file-list macro)) - ;; Non-indirect will have a target whos sources + ;; Non-indirect will have a target whose sources ;; are actual files, not names of other targets. (let ((files (makefile-macro-file-list macro))) (when files diff --git a/lisp/cedet/semantic/db-ref.el b/lisp/cedet/semantic/db-ref.el index 8f20fee9545b..40d8dbd58b5b 100644 --- a/lisp/cedet/semantic/db-ref.el +++ b/lisp/cedet/semantic/db-ref.el @@ -80,7 +80,7 @@ Abstract tables would be difficult to reference." (cl-defmethod semanticdb-check-references ((dbt semanticdb-table)) "Check and cleanup references in the database DBT. -Any reference to a file that cannot be found, or whos file no longer +Any reference to a file that cannot be found, or whose file no longer refers to DBT will be removed." (let ((refs (oref dbt db-refs)) (myexpr (concat "\\<" (oref dbt file))) diff --git a/lisp/cedet/semantic/scope.el b/lisp/cedet/semantic/scope.el index a2c68ed3a638..f18451fd59ab 100644 --- a/lisp/cedet/semantic/scope.el +++ b/lisp/cedet/semantic/scope.el @@ -140,7 +140,7 @@ Saves scoping information between runs of the analyzer.") (cl-defmethod semantic-scope-set-typecache ((cache semantic-scope-cache) types-in-scope) "Set the :typescope property on CACHE to some types. -TYPES-IN-SCOPE is a list of type tags whos members are +TYPES-IN-SCOPE is a list of type tags whose members are currently in scope. For each type in TYPES-IN-SCOPE, add those members to the types list. If nil, then the typescope is reset." From 7946445962372c4255180af45cb7c857f1b0b5fa Mon Sep 17 00:00:00 2001 From: Alan Third Date: Fri, 28 Sep 2018 20:23:07 +0100 Subject: [PATCH 002/567] Make all NS drawing be done from drawRect See bug#31904 and bug#32812. * src/nsterm.m (ns_update_begin): Don't lock focus, only clip if there is already a view focused. (ns_update_end): Don't mess with view focusing any more. (ns_focus): Only clip drawing if there is already a focused view, otherwise mark area dirty for later drawing. Renamed ns_clip_to_rect. All callers changed. (ns_unfocus): Don't unfocus the view any more. Renamed ns_reset_clipping. All callers changed. (ns_clip_to_row): Update to match ns_clip_to_rect. (ns_clear_frame): (ns_clear_frame_area): (ns_draw_fringe_bitmap): (ns_draw_window_cursor): (ns_draw_vertical_window_border): (ns_draw_window_divider): (ns_dumpglyphs_stretch): (ns_draw_glyph_string): Only draw if ns_focus or ns_clip_to_row return YES. (ns_copy_bits): Remove superfluous calls to ns_(un)focus. (ns_flush_display): New function. --- src/nsterm.m | 767 +++++++++++++++++++++++++-------------------------- 1 file changed, 376 insertions(+), 391 deletions(-) diff --git a/src/nsterm.m b/src/nsterm.m index 5ed71c9f8f16..954020dcde91 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -276,12 +276,7 @@ - (NSColor *)colorUsingDefaultColorSpace long context_menu_value = 0; /* display update */ -static struct frame *ns_updating_frame; -static NSView *focus_view = NULL; static int ns_window_num = 0; -#ifdef NS_IMPL_GNUSTEP -static NSRect uRect; // TODO: This is dead, remove it? -#endif static BOOL gsaved = NO; static BOOL ns_fake_keydown = NO; #ifdef NS_IMPL_COCOA @@ -1039,12 +1034,13 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) external (RIF) call; whole frame, called before update_window_begin -------------------------------------------------------------------------- */ { +#ifdef NS_IMPL_COCOA EmacsView *view = FRAME_NS_VIEW (f); + NSTRACE_WHEN (NSTRACE_GROUP_UPDATES, "ns_update_begin"); ns_update_auto_hide_menu_bar (); -#ifdef NS_IMPL_COCOA if ([view isFullscreen] && [view fsIsNative]) { // Fix reappearing tool bar in fullscreen for Mac OS X 10.7 @@ -1053,36 +1049,29 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) if (! tbar_visible != ! [toolbar isVisible]) [toolbar setVisible: tbar_visible]; } -#endif - - ns_updating_frame = f; - [view lockFocus]; /* drawRect may have been called for say the minibuffer, and then clip path is for the minibuffer. But the display engine may draw more because we have set the frame as garbaged. So reset clip path to the whole view. */ -#ifdef NS_IMPL_COCOA - { - NSBezierPath *bp; - NSRect r = [view frame]; - NSRect cr = [[view window] frame]; - /* If a large frame size is set, r may be larger than the window frame - before constrained. In that case don't change the clip path, as we - will clear in to the tool bar and title bar. */ - if (r.size.height - + FRAME_NS_TITLEBAR_HEIGHT (f) - + FRAME_TOOLBAR_HEIGHT (f) <= cr.size.height) - { - bp = [[NSBezierPath bezierPathWithRect: r] retain]; - [bp setClip]; - [bp release]; - } - } -#endif - -#ifdef NS_IMPL_GNUSTEP - uRect = NSMakeRect (0, 0, 0, 0); + /* FIXME: I don't think we need to do this. */ + if ([NSView focusView] == FRAME_NS_VIEW (f)) + { + NSBezierPath *bp; + NSRect r = [view frame]; + NSRect cr = [[view window] frame]; + /* If a large frame size is set, r may be larger than the window frame + before constrained. In that case don't change the clip path, as we + will clear in to the tool bar and title bar. */ + if (r.size.height + + FRAME_NS_TITLEBAR_HEIGHT (f) + + FRAME_TOOLBAR_HEIGHT (f) <= cr.size.height) + { + bp = [[NSBezierPath bezierPathWithRect: r] retain]; + [bp setClip]; + [bp release]; + } + } #endif } @@ -1164,99 +1153,66 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) external (RIF) call; for whole frame, called after update_window_end -------------------------------------------------------------------------- */ { - EmacsView *view = FRAME_NS_VIEW (f); - NSTRACE_WHEN (NSTRACE_GROUP_UPDATES, "ns_update_end"); /* if (f == MOUSE_HL_INFO (f)->mouse_face_mouse_frame) */ MOUSE_HL_INFO (f)->mouse_face_defer = 0; - - block_input (); - - [view unlockFocus]; - [[view window] flushWindow]; - - unblock_input (); - ns_updating_frame = NULL; } -static void -ns_focus (struct frame *f, NSRect *r, int n) + +static BOOL +ns_clip_to_rect (struct frame *f, NSRect *r, int n) /* -------------------------------------------------------------------------- - Internal: Focus on given frame. During small local updates this is used to - draw, however during large updates, ns_update_begin and ns_update_end are - called to wrap the whole thing, in which case these calls are stubbed out. - Except, on GNUstep, we accumulate the rectangle being drawn into, because - the back end won't do this automatically, and will just end up flushing - the entire window. + Clip the drawing area to rectangle r in frame f. If drawing is not + currently possible mark r as dirty and return NO, otherwise return + YES. -------------------------------------------------------------------------- */ { - NSTRACE_WHEN (NSTRACE_GROUP_FOCUS, "ns_focus"); - if (r != NULL) + NSTRACE_WHEN (NSTRACE_GROUP_FOCUS, "ns_clip_to_rect"); + if (r) { NSTRACE_RECT ("r", *r); - } - if (f != ns_updating_frame) - { - NSView *view = FRAME_NS_VIEW (f); - if (view != focus_view) + if ([NSView focusView] == FRAME_NS_VIEW (f)) { - if (focus_view != NULL) - { - [focus_view unlockFocus]; - [[focus_view window] flushWindow]; -/*debug_lock--; */ - } + [[NSGraphicsContext currentContext] saveGraphicsState]; + if (n == 2) + NSRectClipList (r, 2); + else + NSRectClip (*r); + gsaved = YES; - if (view) - [view lockFocus]; - focus_view = view; -/*if (view) debug_lock++; */ + return YES; } - } - - /* clipping */ - if (r) - { - [[NSGraphicsContext currentContext] saveGraphicsState]; - if (n == 2) - NSRectClipList (r, 2); else - NSRectClip (*r); - gsaved = YES; + { + NSView *view = FRAME_NS_VIEW (f); + int i; + for (i = 0 ; i < n ; i++) + [view setNeedsDisplayInRect:r[i]]; + } } + + return NO; } static void -ns_unfocus (struct frame *f) -/* -------------------------------------------------------------------------- - Internal: Remove focus on given frame - -------------------------------------------------------------------------- */ +ns_reset_clipping (struct frame *f) +/* Internal: Restore the previous graphics state, unsetting any + clipping areas. */ { - NSTRACE_WHEN (NSTRACE_GROUP_FOCUS, "ns_unfocus"); + NSTRACE_WHEN (NSTRACE_GROUP_FOCUS, "ns_reset_clipping"); if (gsaved) { [[NSGraphicsContext currentContext] restoreGraphicsState]; gsaved = NO; } - - if (f != ns_updating_frame) - { - if (focus_view != NULL) - { - [focus_view unlockFocus]; - [[focus_view window] flushWindow]; - focus_view = NULL; -/*debug_lock--; */ - } - } } -static void +static BOOL ns_clip_to_row (struct window *w, struct glyph_row *row, enum glyph_row_area area, BOOL gc) /* -------------------------------------------------------------------------- @@ -1275,7 +1231,19 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) clip_rect.size.width = window_width; clip_rect.size.height = row->visible_height; - ns_focus (f, &clip_rect, 1); + return ns_clip_to_rect (f, &clip_rect, 1); +} + + +static void +ns_flush_display (struct frame *f) +/* Force the frame to redisplay. If areas have previously been marked + dirty by setNeedsDisplayInRect (in ns_clip_to_rect), then this will call + draw_rect: which will "expose" those areas. */ +{ + block_input (); + [FRAME_NS_VIEW (f) displayIfNeeded]; + unblock_input (); } @@ -2699,14 +2667,16 @@ so some key presses (TAB) are swallowed by the system. */ r = [view bounds]; block_input (); - ns_focus (f, &r, 1); - [ns_lookup_indexed_color (NS_FACE_BACKGROUND - (FACE_FROM_ID (f, DEFAULT_FACE_ID)), f) set]; - NSRectFill (r); - ns_unfocus (f); - - /* as of 2006/11 or so this is now needed */ - ns_redraw_scroll_bars (f); + if (ns_clip_to_rect (f, &r, 1)) + { + [ns_lookup_indexed_color (NS_FACE_BACKGROUND + (FACE_FROM_ID (f, DEFAULT_FACE_ID)), f) set]; + NSRectFill (r); + ns_reset_clipping (f); + + /* as of 2006/11 or so this is now needed */ + ns_redraw_scroll_bars (f); + } unblock_input (); } @@ -2727,13 +2697,14 @@ so some key presses (TAB) are swallowed by the system. */ NSTRACE_WHEN (NSTRACE_GROUP_UPDATES, "ns_clear_frame_area"); r = NSIntersectionRect (r, [view frame]); - ns_focus (f, &r, 1); - [ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), f) set]; + if (ns_clip_to_rect (f, &r, 1)) + { + [ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), f) set]; - NSRectFill (r); + NSRectFill (r); - ns_unfocus (f); - return; + ns_reset_clipping (f); + } } static void @@ -2745,11 +2716,11 @@ so some key presses (TAB) are swallowed by the system. */ { hide_bell(); // Ensure the bell image isn't scrolled. - ns_focus (f, &dest, 1); + /* FIXME: scrollRect:by: is deprecated in macOS 10.14. There is + no obvious replacement so we may have to come up with our own. */ [FRAME_NS_VIEW (f) scrollRect: src by: NSMakeSize (dest.origin.x - src.origin.x, dest.origin.y - src.origin.y)]; - ns_unfocus (f); } } @@ -2960,85 +2931,86 @@ so some key presses (TAB) are swallowed by the system. */ } /* Must clip because of partially visible lines. */ - ns_clip_to_row (w, row, ANY_AREA, YES); - - if (!p->overlay_p) + if (ns_clip_to_row (w, row, ANY_AREA, YES)) { - int bx = p->bx, by = p->by, nx = p->nx, ny = p->ny; - - if (bx >= 0 && nx > 0) + if (!p->overlay_p) { - NSRect r = NSMakeRect (bx, by, nx, ny); - NSRectClip (r); - [ns_lookup_indexed_color (face->background, f) set]; - NSRectFill (r); - } - } + int bx = p->bx, by = p->by, nx = p->nx, ny = p->ny; - if (p->which) - { - NSRect r = NSMakeRect (p->x, p->y, p->wd, p->h); - EmacsImage *img = bimgs[p->which - 1]; - - if (!img) - { - // Note: For "periodic" images, allocate one EmacsImage for - // the base image, and use it for all dh:s. - unsigned short *bits = p->bits; - int full_height = p->h + p->dh; - int i; - unsigned char *cbits = xmalloc (full_height); - - for (i = 0; i < full_height; i++) - cbits[i] = bits[i]; - img = [[EmacsImage alloc] initFromXBM: cbits width: 8 - height: full_height - fg: 0 bg: 0]; - bimgs[p->which - 1] = img; - xfree (cbits); + if (bx >= 0 && nx > 0) + { + NSRect r = NSMakeRect (bx, by, nx, ny); + NSRectClip (r); + [ns_lookup_indexed_color (face->background, f) set]; + NSRectFill (r); + } } - NSTRACE_RECT ("r", r); + if (p->which) + { + NSRect r = NSMakeRect (p->x, p->y, p->wd, p->h); + EmacsImage *img = bimgs[p->which - 1]; - NSRectClip (r); - /* Since we composite the bitmap instead of just blitting it, we need - to erase the whole background. */ - [ns_lookup_indexed_color(face->background, f) set]; - NSRectFill (r); + if (!img) + { + // Note: For "periodic" images, allocate one EmacsImage for + // the base image, and use it for all dh:s. + unsigned short *bits = p->bits; + int full_height = p->h + p->dh; + int i; + unsigned char *cbits = xmalloc (full_height); + + for (i = 0; i < full_height; i++) + cbits[i] = bits[i]; + img = [[EmacsImage alloc] initFromXBM: cbits width: 8 + height: full_height + fg: 0 bg: 0]; + bimgs[p->which - 1] = img; + xfree (cbits); + } - { - NSColor *bm_color; - if (!p->cursor_p) - bm_color = ns_lookup_indexed_color(face->foreground, f); - else if (p->overlay_p) - bm_color = ns_lookup_indexed_color(face->background, f); - else - bm_color = f->output_data.ns->cursor_color; - [img setXBMColor: bm_color]; - } + NSTRACE_RECT ("r", r); -#ifdef NS_IMPL_COCOA - // Note: For periodic images, the full image height is "h + hd". - // By using the height h, a suitable part of the image is used. - NSRect fromRect = NSMakeRect(0, 0, p->wd, p->h); + NSRectClip (r); + /* Since we composite the bitmap instead of just blitting it, we need + to erase the whole background. */ + [ns_lookup_indexed_color(face->background, f) set]; + NSRectFill (r); - NSTRACE_RECT ("fromRect", fromRect); + { + NSColor *bm_color; + if (!p->cursor_p) + bm_color = ns_lookup_indexed_color(face->foreground, f); + else if (p->overlay_p) + bm_color = ns_lookup_indexed_color(face->background, f); + else + bm_color = f->output_data.ns->cursor_color; + [img setXBMColor: bm_color]; + } - [img drawInRect: r - fromRect: fromRect - operation: NSCompositingOperationSourceOver - fraction: 1.0 - respectFlipped: YES - hints: nil]; +#ifdef NS_IMPL_COCOA + // Note: For periodic images, the full image height is "h + hd". + // By using the height h, a suitable part of the image is used. + NSRect fromRect = NSMakeRect(0, 0, p->wd, p->h); + + NSTRACE_RECT ("fromRect", fromRect); + + [img drawInRect: r + fromRect: fromRect + operation: NSCompositingOperationSourceOver + fraction: 1.0 + respectFlipped: YES + hints: nil]; #else - { - NSPoint pt = r.origin; - pt.y += p->h; - [img compositeToPoint: pt operation: NSCompositingOperationSourceOver]; - } + { + NSPoint pt = r.origin; + pt.y += p->h; + [img compositeToPoint: pt operation: NSCompositingOperationSourceOver]; + } #endif + } + ns_reset_clipping (f); } - ns_unfocus (f); } @@ -3120,67 +3092,66 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar cursors. r.size.height = h; r.size.width = w->phys_cursor_width; - /* Prevent the cursor from being drawn outside the text area. */ - ns_clip_to_row (w, glyph_row, TEXT_AREA, NO); /* do ns_focus(f, &r, 1); if remove */ - - - face = FACE_FROM_ID_OR_NULL (f, phys_cursor_glyph->face_id); - if (face && NS_FACE_BACKGROUND (face) - == ns_index_color (FRAME_CURSOR_COLOR (f), f)) + /* Prevent the cursor from being drawn outside the text area. */ + if (ns_clip_to_row (w, glyph_row, TEXT_AREA, NO)) { - [ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), f) set]; - hollow_color = FRAME_CURSOR_COLOR (f); - } - else - [FRAME_CURSOR_COLOR (f) set]; + face = FACE_FROM_ID_OR_NULL (f, phys_cursor_glyph->face_id); + if (face && NS_FACE_BACKGROUND (face) + == ns_index_color (FRAME_CURSOR_COLOR (f), f)) + { + [ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), f) set]; + hollow_color = FRAME_CURSOR_COLOR (f); + } + else + [FRAME_CURSOR_COLOR (f) set]; #ifdef NS_IMPL_COCOA - /* TODO: This makes drawing of cursor plus that of phys_cursor_glyph - atomic. Cleaner ways of doing this should be investigated. - One way would be to set a global variable DRAWING_CURSOR - when making the call to draw_phys..(), don't focus in that - case, then move the ns_unfocus() here after that call. */ - NSDisableScreenUpdates (); + /* TODO: This makes drawing of cursor plus that of phys_cursor_glyph + atomic. Cleaner ways of doing this should be investigated. + One way would be to set a global variable DRAWING_CURSOR + when making the call to draw_phys..(), don't focus in that + case, then move the ns_reset_clipping() here after that call. */ + NSDisableScreenUpdates (); #endif - switch (cursor_type) - { - case DEFAULT_CURSOR: - case NO_CURSOR: - break; - case FILLED_BOX_CURSOR: - NSRectFill (r); - break; - case HOLLOW_BOX_CURSOR: - NSRectFill (r); - [hollow_color set]; - NSRectFill (NSInsetRect (r, 1, 1)); - [FRAME_CURSOR_COLOR (f) set]; - break; - case HBAR_CURSOR: - NSRectFill (r); - break; - case BAR_CURSOR: - s = r; - /* If the character under cursor is R2L, draw the bar cursor - on the right of its glyph, rather than on the left. */ - cursor_glyph = get_phys_cursor_glyph (w); - if ((cursor_glyph->resolved_level & 1) != 0) - s.origin.x += cursor_glyph->pixel_width - s.size.width; - - NSRectFill (s); - break; - } - ns_unfocus (f); + switch (cursor_type) + { + case DEFAULT_CURSOR: + case NO_CURSOR: + break; + case FILLED_BOX_CURSOR: + NSRectFill (r); + break; + case HOLLOW_BOX_CURSOR: + NSRectFill (r); + [hollow_color set]; + NSRectFill (NSInsetRect (r, 1, 1)); + [FRAME_CURSOR_COLOR (f) set]; + break; + case HBAR_CURSOR: + NSRectFill (r); + break; + case BAR_CURSOR: + s = r; + /* If the character under cursor is R2L, draw the bar cursor + on the right of its glyph, rather than on the left. */ + cursor_glyph = get_phys_cursor_glyph (w); + if ((cursor_glyph->resolved_level & 1) != 0) + s.origin.x += cursor_glyph->pixel_width - s.size.width; + + NSRectFill (s); + break; + } + ns_reset_clipping (f); - /* draw the character under the cursor */ - if (cursor_type != NO_CURSOR) - draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR); + /* draw the character under the cursor */ + if (cursor_type != NO_CURSOR) + draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR); #ifdef NS_IMPL_COCOA - NSEnableScreenUpdates (); + NSEnableScreenUpdates (); #endif - + } } @@ -3198,12 +3169,14 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar cursors. face = FACE_FROM_ID_OR_NULL (f, VERTICAL_BORDER_FACE_ID); - ns_focus (f, &r, 1); - if (face) - [ns_lookup_indexed_color(face->foreground, f) set]; + if (ns_clip_to_rect (f, &r, 1)) + { + if (face) + [ns_lookup_indexed_color(face->foreground, f) set]; - NSRectFill(r); - ns_unfocus (f); + NSRectFill(r); + ns_reset_clipping (f); + } } @@ -3230,39 +3203,40 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar cursors. NSTRACE ("ns_draw_window_divider"); - ns_focus (f, ÷r, 1); - - if ((y1 - y0 > x1 - x0) && (x1 - x0 >= 3)) - /* A vertical divider, at least three pixels wide: Draw first and - last pixels differently. */ + if (ns_clip_to_rect (f, ÷r, 1)) { - [ns_lookup_indexed_color(color_first, f) set]; - NSRectFill(NSMakeRect (x0, y0, 1, y1 - y0)); - [ns_lookup_indexed_color(color, f) set]; - NSRectFill(NSMakeRect (x0 + 1, y0, x1 - x0 - 2, y1 - y0)); - [ns_lookup_indexed_color(color_last, f) set]; - NSRectFill(NSMakeRect (x1 - 1, y0, 1, y1 - y0)); - } - else if ((x1 - x0 > y1 - y0) && (y1 - y0 >= 3)) - /* A horizontal divider, at least three pixels high: Draw first and - last pixels differently. */ - { - [ns_lookup_indexed_color(color_first, f) set]; - NSRectFill(NSMakeRect (x0, y0, x1 - x0, 1)); - [ns_lookup_indexed_color(color, f) set]; - NSRectFill(NSMakeRect (x0, y0 + 1, x1 - x0, y1 - y0 - 2)); - [ns_lookup_indexed_color(color_last, f) set]; - NSRectFill(NSMakeRect (x0, y1 - 1, x1 - x0, 1)); - } - else - { - /* In any other case do not draw the first and last pixels - differently. */ - [ns_lookup_indexed_color(color, f) set]; - NSRectFill(divider); - } + if ((y1 - y0 > x1 - x0) && (x1 - x0 >= 3)) + /* A vertical divider, at least three pixels wide: Draw first and + last pixels differently. */ + { + [ns_lookup_indexed_color(color_first, f) set]; + NSRectFill(NSMakeRect (x0, y0, 1, y1 - y0)); + [ns_lookup_indexed_color(color, f) set]; + NSRectFill(NSMakeRect (x0 + 1, y0, x1 - x0 - 2, y1 - y0)); + [ns_lookup_indexed_color(color_last, f) set]; + NSRectFill(NSMakeRect (x1 - 1, y0, 1, y1 - y0)); + } + else if ((x1 - x0 > y1 - y0) && (y1 - y0 >= 3)) + /* A horizontal divider, at least three pixels high: Draw first and + last pixels differently. */ + { + [ns_lookup_indexed_color(color_first, f) set]; + NSRectFill(NSMakeRect (x0, y0, x1 - x0, 1)); + [ns_lookup_indexed_color(color, f) set]; + NSRectFill(NSMakeRect (x0, y0 + 1, x1 - x0, y1 - y0 - 2)); + [ns_lookup_indexed_color(color_last, f) set]; + NSRectFill(NSMakeRect (x0, y1 - 1, x1 - x0, 1)); + } + else + { + /* In any other case do not draw the first and last pixels + differently. */ + [ns_lookup_indexed_color(color, f) set]; + NSRectFill(divider); + } - ns_unfocus (f); + ns_reset_clipping (f); + } } static void @@ -3846,83 +3820,84 @@ Function modeled after x_draw_glyph_string_box (). n = ns_get_glyph_string_clip_rect (s, r); *r = NSMakeRect (s->x, s->y, s->background_width, s->height); - ns_focus (s->f, r, n); - - if (s->hl == DRAW_MOUSE_FACE) - { - face = FACE_FROM_ID_OR_NULL (s->f, - MOUSE_HL_INFO (s->f)->mouse_face_face_id); - if (!face) - face = FACE_FROM_ID (s->f, MOUSE_FACE_ID); - } - else - face = FACE_FROM_ID (s->f, s->first_glyph->face_id); - - bgCol = ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f); - fgCol = ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f); - - for (i = 0; i < n; ++i) + if (ns_clip_to_rect (s->f, r, n)) { - if (!s->row->full_width_p) + if (s->hl == DRAW_MOUSE_FACE) { - int overrun, leftoverrun; - - /* truncate to avoid overwriting fringe and/or scrollbar */ - overrun = max (0, (s->x + s->background_width) - - (WINDOW_BOX_RIGHT_EDGE_X (s->w) - - WINDOW_RIGHT_FRINGE_WIDTH (s->w))); - r[i].size.width -= overrun; - - /* truncate to avoid overwriting to left of the window box */ - leftoverrun = (WINDOW_BOX_LEFT_EDGE_X (s->w) - + WINDOW_LEFT_FRINGE_WIDTH (s->w)) - s->x; - - if (leftoverrun > 0) - { - r[i].origin.x += leftoverrun; - r[i].size.width -= leftoverrun; - } - - /* XXX: Try to work between problem where a stretch glyph on - a partially-visible bottom row will clear part of the - modeline, and another where list-buffers headers and similar - rows erroneously have visible_height set to 0. Not sure - where this is coming from as other terms seem not to show. */ - r[i].size.height = min (s->height, s->row->visible_height); + face = FACE_FROM_ID_OR_NULL (s->f, + MOUSE_HL_INFO (s->f)->mouse_face_face_id); + if (!face) + face = FACE_FROM_ID (s->f, MOUSE_FACE_ID); } + else + face = FACE_FROM_ID (s->f, s->first_glyph->face_id); - [bgCol set]; + bgCol = ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f); + fgCol = ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f); - /* NOTE: under NS this is NOT used to draw cursors, but we must avoid - overwriting cursor (usually when cursor on a tab) */ - if (s->hl == DRAW_CURSOR) + for (i = 0; i < n; ++i) { - CGFloat x, width; + if (!s->row->full_width_p) + { + int overrun, leftoverrun; + + /* truncate to avoid overwriting fringe and/or scrollbar */ + overrun = max (0, (s->x + s->background_width) + - (WINDOW_BOX_RIGHT_EDGE_X (s->w) + - WINDOW_RIGHT_FRINGE_WIDTH (s->w))); + r[i].size.width -= overrun; + + /* truncate to avoid overwriting to left of the window box */ + leftoverrun = (WINDOW_BOX_LEFT_EDGE_X (s->w) + + WINDOW_LEFT_FRINGE_WIDTH (s->w)) - s->x; + + if (leftoverrun > 0) + { + r[i].origin.x += leftoverrun; + r[i].size.width -= leftoverrun; + } + + /* XXX: Try to work between problem where a stretch glyph on + a partially-visible bottom row will clear part of the + modeline, and another where list-buffers headers and similar + rows erroneously have visible_height set to 0. Not sure + where this is coming from as other terms seem not to show. */ + r[i].size.height = min (s->height, s->row->visible_height); + } + + [bgCol set]; + + /* NOTE: under NS this is NOT used to draw cursors, but we must avoid + overwriting cursor (usually when cursor on a tab). */ + if (s->hl == DRAW_CURSOR) + { + CGFloat x, width; - x = r[i].origin.x; - width = s->w->phys_cursor_width; - r[i].size.width -= width; - r[i].origin.x += width; + x = r[i].origin.x; + width = s->w->phys_cursor_width; + r[i].size.width -= width; + r[i].origin.x += width; - NSRectFill (r[i]); + NSRectFill (r[i]); - /* Draw overlining, etc. on the cursor. */ - if (s->w->phys_cursor_type == FILLED_BOX_CURSOR) - ns_draw_text_decoration (s, face, bgCol, width, x); + /* Draw overlining, etc. on the cursor. */ + if (s->w->phys_cursor_type == FILLED_BOX_CURSOR) + ns_draw_text_decoration (s, face, bgCol, width, x); + else + ns_draw_text_decoration (s, face, fgCol, width, x); + } else - ns_draw_text_decoration (s, face, fgCol, width, x); - } - else - { - NSRectFill (r[i]); - } + { + NSRectFill (r[i]); + } - /* Draw overlining, etc. on the stretch glyph (or the part - of the stretch glyph after the cursor). */ - ns_draw_text_decoration (s, face, fgCol, r[i].size.width, - r[i].origin.x); + /* Draw overlining, etc. on the stretch glyph (or the part + of the stretch glyph after the cursor). */ + ns_draw_text_decoration (s, face, fgCol, r[i].size.width, + r[i].origin.x); + } + ns_reset_clipping (s->f); } - ns_unfocus (s->f); s->background_filled_p = 1; } } @@ -4072,9 +4047,11 @@ overwriting cursor (usually when cursor on a tab) */ if (next->first_glyph->type != STRETCH_GLYPH) { n = ns_get_glyph_string_clip_rect (s->next, r); - ns_focus (s->f, r, n); - ns_maybe_dumpglyphs_background (s->next, 1); - ns_unfocus (s->f); + if (ns_clip_to_rect (s->f, r, n)) + { + ns_maybe_dumpglyphs_background (s->next, 1); + ns_reset_clipping (s->f); + } } else { @@ -4089,10 +4066,12 @@ overwriting cursor (usually when cursor on a tab) */ || s->first_glyph->type == COMPOSITE_GLYPH)) { n = ns_get_glyph_string_clip_rect (s, r); - ns_focus (s->f, r, n); - ns_maybe_dumpglyphs_background (s, 1); - ns_dumpglyphs_box_or_relief (s); - ns_unfocus (s->f); + if (ns_clip_to_rect (s->f, r, n)) + { + ns_maybe_dumpglyphs_background (s, 1); + ns_dumpglyphs_box_or_relief (s); + ns_reset_clipping (s->f); + } box_drawn_p = 1; } @@ -4101,9 +4080,11 @@ overwriting cursor (usually when cursor on a tab) */ case IMAGE_GLYPH: n = ns_get_glyph_string_clip_rect (s, r); - ns_focus (s->f, r, n); - ns_dumpglyphs_image (s, r[0]); - ns_unfocus (s->f); + if (ns_clip_to_rect (s->f, r, n)) + { + ns_dumpglyphs_image (s, r[0]); + ns_reset_clipping (s->f); + } break; case STRETCH_GLYPH: @@ -4113,66 +4094,68 @@ overwriting cursor (usually when cursor on a tab) */ case CHAR_GLYPH: case COMPOSITE_GLYPH: n = ns_get_glyph_string_clip_rect (s, r); - ns_focus (s->f, r, n); + if (ns_clip_to_rect (s->f, r, n)) + { + if (s->for_overlaps || (s->cmp_from > 0 + && ! s->first_glyph->u.cmp.automatic)) + s->background_filled_p = 1; + else + ns_maybe_dumpglyphs_background + (s, s->first_glyph->type == COMPOSITE_GLYPH); - if (s->for_overlaps || (s->cmp_from > 0 - && ! s->first_glyph->u.cmp.automatic)) - s->background_filled_p = 1; - else - ns_maybe_dumpglyphs_background - (s, s->first_glyph->type == COMPOSITE_GLYPH); + if (s->hl == DRAW_CURSOR && s->w->phys_cursor_type == FILLED_BOX_CURSOR) + { + unsigned long tmp = NS_FACE_BACKGROUND (s->face); + NS_FACE_BACKGROUND (s->face) = NS_FACE_FOREGROUND (s->face); + NS_FACE_FOREGROUND (s->face) = tmp; + } - if (s->hl == DRAW_CURSOR && s->w->phys_cursor_type == FILLED_BOX_CURSOR) - { - unsigned long tmp = NS_FACE_BACKGROUND (s->face); - NS_FACE_BACKGROUND (s->face) = NS_FACE_FOREGROUND (s->face); - NS_FACE_FOREGROUND (s->face) = tmp; - } + { + BOOL isComposite = s->first_glyph->type == COMPOSITE_GLYPH; - { - BOOL isComposite = s->first_glyph->type == COMPOSITE_GLYPH; + if (isComposite) + ns_draw_composite_glyph_string_foreground (s); + else + ns_draw_glyph_string_foreground (s); + } - if (isComposite) - ns_draw_composite_glyph_string_foreground (s); - else - ns_draw_glyph_string_foreground (s); - } + { + NSColor *col = (NS_FACE_FOREGROUND (s->face) != 0 + ? ns_lookup_indexed_color (NS_FACE_FOREGROUND (s->face), + s->f) + : FRAME_FOREGROUND_COLOR (s->f)); + [col set]; + + /* Draw underline, overline, strike-through. */ + ns_draw_text_decoration (s, s->face, col, s->width, s->x); + } - { - NSColor *col = (NS_FACE_FOREGROUND (s->face) != 0 - ? ns_lookup_indexed_color (NS_FACE_FOREGROUND (s->face), - s->f) - : FRAME_FOREGROUND_COLOR (s->f)); - [col set]; - - /* Draw underline, overline, strike-through. */ - ns_draw_text_decoration (s, s->face, col, s->width, s->x); - } + if (s->hl == DRAW_CURSOR && s->w->phys_cursor_type == FILLED_BOX_CURSOR) + { + unsigned long tmp = NS_FACE_BACKGROUND (s->face); + NS_FACE_BACKGROUND (s->face) = NS_FACE_FOREGROUND (s->face); + NS_FACE_FOREGROUND (s->face) = tmp; + } - if (s->hl == DRAW_CURSOR && s->w->phys_cursor_type == FILLED_BOX_CURSOR) - { - unsigned long tmp = NS_FACE_BACKGROUND (s->face); - NS_FACE_BACKGROUND (s->face) = NS_FACE_FOREGROUND (s->face); - NS_FACE_FOREGROUND (s->face) = tmp; + ns_reset_clipping (s->f); } - - ns_unfocus (s->f); break; case GLYPHLESS_GLYPH: n = ns_get_glyph_string_clip_rect (s, r); - ns_focus (s->f, r, n); - - if (s->for_overlaps || (s->cmp_from > 0 - && ! s->first_glyph->u.cmp.automatic)) - s->background_filled_p = 1; - else - ns_maybe_dumpglyphs_background - (s, s->first_glyph->type == COMPOSITE_GLYPH); - /* ... */ - /* Not yet implemented. */ - /* ... */ - ns_unfocus (s->f); + if (ns_clip_to_rect (s->f, r, n)) + { + if (s->for_overlaps || (s->cmp_from > 0 + && ! s->first_glyph->u.cmp.automatic)) + s->background_filled_p = 1; + else + ns_maybe_dumpglyphs_background + (s, s->first_glyph->type == COMPOSITE_GLYPH); + /* ... */ + /* Not yet implemented. */ + /* ... */ + ns_reset_clipping (s->f); + } break; default: @@ -4183,9 +4166,11 @@ overwriting cursor (usually when cursor on a tab) */ if (!s->for_overlaps && !box_drawn_p && s->face->box != FACE_NO_BOX) { n = ns_get_glyph_string_clip_rect (s, r); - ns_focus (s->f, r, n); - ns_dumpglyphs_box_or_relief (s); - ns_unfocus (s->f); + if (ns_clip_to_rect (s->f, r, n)) + { + ns_dumpglyphs_box_or_relief (s); + ns_reset_clipping (s->f); + } } s->num_clips = 0; @@ -4991,7 +4976,7 @@ static Lisp_Object ns_string_to_lispmod (const char *s) ns_after_update_window_line, ns_update_window_begin, ns_update_window_end, - 0, /* flush_display */ + ns_flush_display, /* flush_display */ x_clear_window_mouse_face, x_get_glyph_overhangs, x_fix_overlapping_area, From 9ad0f1d15c06eb07dfbd9bd3e3b8a0d747942152 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Wed, 26 Sep 2018 22:21:37 +0100 Subject: [PATCH 003/567] Fix deprecation warning * src/nsterm.m (ns_term_init): Use writeToFile or writeToURL as required. --- src/nsterm.m | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/nsterm.m b/src/nsterm.m index 954020dcde91..d92d6c32448d 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -5193,7 +5193,21 @@ Needs to be here because ns_initialize_display_info () uses AppKit classes. alpha: 1.0] forKey: [NSString stringWithUTF8String: name]]; } - [cl writeToFile: nil]; + + /* FIXME: Report any errors writing the color file below. */ +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101100 +#if MAC_OS_X_VERSION_MIN_REQUIRED < 101100 + if ([cl respondsToSelector:@selector(writeToURL:error:)]) +#endif + [cl writeToURL:nil error:nil]; +#if MAC_OS_X_VERSION_MIN_REQUIRED < 101100 + else +#endif +#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 101100 */ +#if MAC_OS_X_VERSION_MIN_REQUIRED < 101100 \ + || defined (NS_IMPL_GNUSTEP) + [cl writeToFile: nil]; +#endif } } From e8a4d942dd7305b85850603c97d987e52510a726 Mon Sep 17 00:00:00 2001 From: John Shahid Date: Fri, 21 Sep 2018 11:15:10 -0400 Subject: [PATCH 004/567] Cleanup when opening a new terminal fails. (Bug#32794) * src/term.c (init_tty): Call delete_terminal_internal if emacs_open fail. * src/terminal.c (delete_terminal): Move some code into delete_terminal_internal and call it. (delete_terminal_internal): New function. * src/termhooks.h: Prototype for delete_terminal_internal. --- src/term.c | 1 + src/termhooks.h | 1 + src/terminal.c | 9 ++++++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/term.c b/src/term.c index f542fc527c46..8493cc02c4d6 100644 --- a/src/term.c +++ b/src/term.c @@ -4004,6 +4004,7 @@ init_tty (const char *name, const char *terminal_type, bool must_succeed) char const *diagnostic = (fd < 0) ? "Could not open file: %s" : "Not a tty device: %s"; emacs_close (fd); + delete_terminal_internal (terminal); maybe_fatal (must_succeed, terminal, diagnostic, diagnostic, name); } diff --git a/src/termhooks.h b/src/termhooks.h index 1b2c95e82481..543809b9e40a 100644 --- a/src/termhooks.h +++ b/src/termhooks.h @@ -729,6 +729,7 @@ extern struct terminal *get_named_terminal (const char *); extern struct terminal *create_terminal (enum output_method, struct redisplay_interface *); extern void delete_terminal (struct terminal *); +extern void delete_terminal_internal (struct terminal *); extern Lisp_Object terminal_glyph_code (struct terminal *, int); /* The initial terminal device, created by initial_term_init. */ diff --git a/src/terminal.c b/src/terminal.c index 070b8aac1fef..043ee67e0c15 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -314,7 +314,6 @@ create_terminal (enum output_method type, struct redisplay_interface *rif) void delete_terminal (struct terminal *terminal) { - struct terminal **tp; Lisp_Object tail, frame; /* Protect against recursive calls. delete_frame calls the @@ -335,6 +334,14 @@ delete_terminal (struct terminal *terminal) } } + delete_terminal_internal (terminal); +} + +void +delete_terminal_internal (struct terminal *terminal) +{ + struct terminal **tp; + for (tp = &terminal_list; *tp != terminal; tp = &(*tp)->next_terminal) if (! *tp) emacs_abort (); From d416109f06ab3910e3f49176185154a5179b6354 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 29 Sep 2018 10:11:08 +0300 Subject: [PATCH 005/567] Avoid returning early in 'while-no-input' due to subprocesses * src/keyboard.c (kbd_buffer_store_buffered_event): Support also the internal buffer-switch events. (syms_of_keyboard) : New DEFSYM. * lisp/subr.el (while-no-input-ignore-events): Ignore 'buffer-switch' events. Reported by Michael Heerdegen . * etc/NEWS: Mention the change in behavior of 'while-no-input' --- etc/NEWS | 10 ++++++++++ lisp/subr.el | 2 +- src/keyboard.c | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index 578b9b8d9564..bfd7db016f2f 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -123,6 +123,16 @@ be removed prior using the changed 'shadow-*' commands. The old name is an alias of the new name. Future Emacs version will obsolete it. +--- +** 'while-no-input' does not return due to input from subprocesses. +Input that arrived from subprocesses while some code executed inside +the 'while-no-input' form injected an internal buffer-switch event +that counted as input and would cause 'while-no-input' to return, +perhaps prematurely. These buffer-switch events are now by default +ignored by 'while-no-input'; if you need to get the old behavior, +remove 'buffer-switch' from the list of events in +'while-no-input-ignore-events'. + * Lisp Changes in Emacs 26.2 diff --git a/lisp/subr.el b/lisp/subr.el index 7582b6cdb853..59f6949b2115 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -3542,7 +3542,7 @@ is allowed once again. (Immediately, if `inhibit-quit' is nil.)" ;; Don't throw `throw-on-input' on those events by default. (setq while-no-input-ignore-events '(focus-in focus-out help-echo iconify-frame - make-frame-visible selection-request)) + make-frame-visible selection-request buffer-switch)) (defmacro while-no-input (&rest body) "Execute BODY only as long as there's no pending input. diff --git a/src/keyboard.c b/src/keyboard.c index 1da5ac088d3e..0d56ea3f7ac9 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -3569,6 +3569,7 @@ kbd_buffer_store_buffered_event (union buffered_input_event *event, case ICONIFY_EVENT: ignore_event = Qiconify_frame; break; case DEICONIFY_EVENT: ignore_event = Qmake_frame_visible; break; case SELECTION_REQUEST_EVENT: ignore_event = Qselection_request; break; + case BUFFER_SWITCH_EVENT: ignore_event = Qbuffer_switch; break; default: ignore_event = Qnil; break; } @@ -11104,6 +11105,8 @@ syms_of_keyboard (void) /* Menu and tool bar item parts. */ DEFSYM (Qmenu_enable, "menu-enable"); + DEFSYM (Qbuffer_switch, "buffer-switch"); + #ifdef HAVE_NTGUI DEFSYM (Qlanguage_change, "language-change"); DEFSYM (Qend_session, "end-session"); From 7296b6fbf27aeae76ea63ab2d9d9f2e46491b971 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Sat, 29 Sep 2018 18:06:03 +0900 Subject: [PATCH 006/567] Improve cl-do, cl-do* docstrings * lisp/emacs-lisp/cl-macs.el(cl-do, cl-do*): Improve docstring (Bug#32803). --- lisp/emacs-lisp/cl-macs.el | 39 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 0854e665b9b4..ffe88a21a85b 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -1745,7 +1745,24 @@ such that COMBO is equivalent to (and . CLAUSES)." ;;;###autoload (defmacro cl-do (steps endtest &rest body) - "The Common Lisp `do' loop. + "Bind variables and run BODY forms until END-TEST returns non-nil. +First, each VAR is bound to the associated INIT value as if by a `let' form. +Then, in each iteration of the loop, the END-TEST is evaluated; if true, +the loop is finished. Otherwise, the BODY forms are evaluated, then each +VAR is set to the associated STEP expression (as if by a `cl-psetq' form) +and the next iteration begins. + +Once the END-TEST becomes true, the RESULT forms are evaluated (with +the VARs still bound to their values) to produce the result +returned by `cl-do'. + +Note that the entire loop is enclosed in an implicit `nil' block, so +that you can use `cl-return' to exit at any time. + +Also note that END-TEST is checked before evaluating BODY. If END-TEST +is initially non-nil, `cl-do' will exit without running BODY. + +For more details, see `cl-do' description in Info node `(cl) Iteration'. \(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" (declare (indent 2) @@ -1757,7 +1774,25 @@ such that COMBO is equivalent to (and . CLAUSES)." ;;;###autoload (defmacro cl-do* (steps endtest &rest body) - "The Common Lisp `do*' loop. + "Bind variables and run BODY forms until END-TEST returns non-nil. +First, each VAR is bound to the associated INIT value as if by a `let*' form. +Then, in each iteration of the loop, the END-TEST is evaluated; if true, +the loop is finished. Otherwise, the BODY forms are evaluated, then each +VAR is set to the associated STEP expression (as if by a `setq' +form) and the next iteration begins. + +Once the END-TEST becomes true, the RESULT forms are evaluated (with +the VARs still bound to their values) to produce the result +returned by `cl-do*'. + +Note that the entire loop is enclosed in an implicit `nil' block, so +that you can use `cl-return' to exit at any time. + +Also note that END-TEST is checked before evaluating BODY. If END-TEST +is initially non-nil, `cl-do*' will exit without running BODY. + +This is to `cl-do' what `let*' is to `let'. +For more details, see `cl-do*' description in Info node `(cl) Iteration'. \(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" (declare (indent 2) (debug cl-do)) From 6650751ce73413d05599df07a9c5bc70744260f3 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Sun, 30 Sep 2018 10:46:26 +0000 Subject: [PATCH 007/567] Temporary workaround for bug #32848 for branch emacs-26 Do not merge with master. * lisp/follow.el (follow-mode): Set make-cursor-line-fully-visible to nil buffer locally whilst follow-mode is active. --- lisp/follow.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/follow.el b/lisp/follow.el index fd397c077bb1..7942901bb4f0 100644 --- a/lisp/follow.el +++ b/lisp/follow.el @@ -438,7 +438,10 @@ Keys specific to Follow mode: (setq pos-visible-in-window-group-p-function 'follow-pos-visible-in-window-p) (setq selected-window-group-function 'follow-all-followers) - (setq move-to-window-group-line-function 'follow-move-to-window-line)) + (setq move-to-window-group-line-function 'follow-move-to-window-line) + + ;; Crude workaround for bug #32848 for the emacs-26 branch, 2018-09-30. + (setq-local make-cursor-line-fully-visible nil)) ;; Remove globally-installed hook functions only if there is no ;; other Follow mode buffer. @@ -451,6 +454,9 @@ Keys specific to Follow mode: (remove-hook 'post-command-hook 'follow-post-command-hook) (remove-hook 'window-size-change-functions 'follow-window-size-change))) + ;; Second part of crude workaround for bug #32848. + (kill-local-variable 'make-cursor-line-fully-visible) + (kill-local-variable 'move-to-window-group-line-function) (kill-local-variable 'selected-window-group-function) (kill-local-variable 'pos-visible-in-window-group-p-function) From 6a7a869c33bb69efd93bb0ce8d8322083dbbcbac Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 29 Sep 2018 16:40:42 +0200 Subject: [PATCH 008/567] Org manual: Rewrite the Org Mobile section * doc/misc/org.texi (Org Mobile): Rewritten from "MobileOrg" section. Remove all references to non-free software. Moved into "Miscellaneous", much like Org Crypt library. No longer an appendix. (Footnotes): Remove a reference to "MobileOrg". (Bug#32722) --- doc/misc/org.texi | 293 ++++++++++++++++++++++++---------------------- 1 file changed, 152 insertions(+), 141 deletions(-) diff --git a/doc/misc/org.texi b/doc/misc/org.texi index 60647e65e88e..873ce4d2cdb3 100644 --- a/doc/misc/org.texi +++ b/doc/misc/org.texi @@ -325,7 +325,6 @@ Jambunathan K, Dan Davison, Thomas Dye, David O'Toole, and Philip Rooke. * Working with source code:: Export, evaluate, and tangle code blocks * Miscellaneous:: All the rest which did not fit elsewhere * Hacking:: How to hack your way around -* MobileOrg:: Viewing and capture on a mobile device * History and acknowledgments:: How Org came into being * GNU Free Documentation License:: The license for this documentation. * Main Index:: An index of Org's concepts and features @@ -760,12 +759,19 @@ Miscellaneous * TTY keys:: Using Org on a tty * Interaction:: With other Emacs packages * org-crypt:: Encrypting Org files +* Org Mobile:: Viewing and capture on a mobile device Interaction with other packages * Cooperation:: Packages Org cooperates with * Conflicts:: Packages that lead to conflicts +Org Mobile + +* Setting up the staging area:: For the mobile device +* Pushing to the mobile application:: Uploading Org files and agendas +* Pulling from the mobile application:: Integrating captured and flagged items + Hacking * Hooks:: How to reach into Org's internals @@ -788,12 +794,6 @@ Tables and lists in arbitrary syntax * Translator functions:: Copy and modify * Radio lists:: Sending and receiving lists -MobileOrg - -* Setting up the staging area:: For the mobile device -* Pushing to MobileOrg:: Uploading Org files and agendas -* Pulling from MobileOrg:: Integrating captured and flagged items - @end detailmenu @end menu @@ -17253,6 +17253,7 @@ emacs -Q --batch --eval " * TTY keys:: Using Org on a tty * Interaction:: With other Emacs packages * org-crypt:: Encrypting Org files +* Org Mobile:: Viewing and capture on a mobile device @end menu @@ -18187,6 +18188,150 @@ Suggested Org crypt settings in Emacs init file: Excluding the crypt tag from inheritance prevents encrypting previously encrypted text. +@node Org Mobile +@section Org Mobile + +@cindex smartphone + +Org Mobile is a protocol for synchronizing Org files between Emacs and +other applications, e.g., on mobile devices. It enables offline-views +and capture support for an Org mode system that is rooted on a ``real'' +computer. The external application can also record changes to +existing entries. + +This appendix describes Org's support for agenda view formats +compatible with Org Mobile. It also describes synchronizing changes, +such as to notes, between the mobile application and the computer. + +To change tags and TODO states in the mobile application, first +customize the variables @code{org-todo-keywords} and @code{org-tag-alist}. +These should cover all the important tags and TODO keywords, even if +Org files use only some of them. Though the mobile application is +expected to support in-buffer settings, it is required to understand +TODO states @emph{sets} (see @ref{Per-file keywords}) and +@emph{mutually exclusive} tags (see @ref{Setting tags}) only for those set in +these variables. + +@menu +* Setting up the staging area:: For the mobile device +* Pushing to the mobile application:: Uploading Org files and agendas +* Pulling from the mobile application:: Integrating captured and flagged items +@end menu + +@node Setting up the staging area +@subsection Setting up the staging area + +@vindex org-mobile-directory +The mobile application needs access to a file directory on +a server@footnote{For a server to host files, consider using a WebDAV server, +such as @uref{https://nextcloud.com, Nextcloud}. Additional help is at this @uref{https://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.} to interact with Emacs. Pass its location through +the @code{org-mobile-directory} variable. If you can mount that directory +locally just set the variable to point to that directory: + +@lisp +(setq org-mobile-directory "~/orgmobile/") +@end lisp + +@noindent +Alternatively, by using TRAMP (see @ref{Top,TRAMP User Manual,,tramp,}), +@code{org-mobile-directory} may point to a remote directory accessible +through, for example, SSH and SCP: + +@lisp +(setq org-mobile-directory "/scpc:user@@remote.host:org/webdav/") +@end lisp + +@vindex org-mobile-encryption +With a public server, consider encrypting the files. Org also +requires OpenSSL installed on the local computer. To turn on +encryption, set the same password in the mobile application and in +Emacs. Set the password in the variable +@code{org-mobile-use-encryption}@footnote{If Emacs is configured for safe storing of passwords, then +configure the variable @code{org-mobile-encryption-password}; please read +the docstring of that variable.}. Note that even after the mobile +application encrypts the file contents, the file name remains visible +on the file systems of the local computer, the server, and the mobile +device. + +@node Pushing to the mobile application +@subsection Pushing to the mobile application + +@findex org-mobile-push +@vindex org-mobile-files +The command @code{org-mobile-push} copies files listed in +@code{org-mobile-files} into the staging area. Files include agenda files +(as listed in @code{org-agenda-files}). Customize @code{org-mobile-files} to +add other files. File names are staged with paths relative to +@code{org-directory}, so all files should be inside this directory@footnote{Symbolic links in @code{org-directory} need to have the same name +as their targets.}. + +Push creates a special Org file @samp{agendas.org} with custom agenda views +defined by the user@footnote{While creating the agendas, Org mode forces ID properties on +all referenced entries, so that these entries can be uniquely +identified if Org Mobile flags them for further action. To avoid +setting properties configure the variable +@code{org-mobile-force-id-on-agenda-items} to @code{nil}. Org mode then relies +on outline paths, assuming they are unique.}. + +Finally, Org writes the file @samp{index.org}, containing links to other +files. The mobile application reads this file first from the server +to determine what other files to download for agendas. For faster +downloads, it is expected to only read files whose checksums@footnote{Checksums are stored automatically in the file +@samp{checksums.dat}.} +have changed. + +@node Pulling from the mobile application +@subsection Pulling from the mobile application + +@findex org-mobile-pull +The command @code{org-mobile-pull} synchronizes changes with the server. +More specifically, it first pulls the Org files for viewing. It then +appends captured entries and pointers to flagged or changed entries to +the file @samp{mobileorg.org} on the server. Org ultimately integrates its +data in an inbox file format, through the following steps: + +@enumerate +@item +@vindex org-mobile-inbox-for-pull +Org moves all entries found in @samp{mobileorg.org}@footnote{The file will be empty after this operation.} and appends +them to the file pointed to by the variable +@code{org-mobile-inbox-for-pull}. It should reside neither in the +staging area nor on the server. Each captured entry and each +editing event is a top-level entry in the inbox file. + +@item +@cindex @samp{FLAGGED}, tag +After moving the entries, Org processes changes to the shared +files. Some of them are applied directly and without user +interaction. Examples include changes to tags, TODO state, +headline and body text. Entries requiring further action are +tagged as @samp{FLAGGED}. Org marks entries with problems with an error +message in the inbox. They have to be resolved manually. + +@item +Org generates an agenda view for flagged entries for user +intervention to clean up. For notes stored in flagged entries, Org +displays them in the echo area when point is on the corresponding +agenda item. + +@table @asis +@item @kbd{?} +Pressing @kbd{?} displays the entire flagged note in +another window. Org also pushes it to the kill ring. To +store flagged note as a normal note, use @kbd{? z C-y C-c C-c}. Pressing @kbd{?} twice does these things: first +it removes the @samp{FLAGGED} tag; second, it removes the flagged +note from the property drawer; third, it signals that manual +editing of the flagged entry is now finished. +@end table +@end enumerate + +@kindex ? @r{(Agenda dispatcher)} +From the agenda dispatcher, @kbd{?} returns to the view to finish +processing flagged entries. Note that these entries may not be the +most recent since the mobile application searches files that were last +pulled. To get an updated agenda view with changes since the last +pull, pull again. + @node Hacking @appendix Hacking @cindex hacking @@ -19151,140 +19296,6 @@ The following example counts the number of entries with TODO keyword (length (org-map-entries t "/+WAITING" 'agenda)) @end lisp -@node MobileOrg -@appendix MobileOrg -@cindex iPhone -@cindex MobileOrg - -MobileOrg is a companion mobile app that runs on iOS and Android devices. -MobileOrg enables offline-views and capture support for an Org mode system -that is rooted on a ``real'' computer. MobileOrg can record changes to -existing entries. - -The @uref{https://github.com/MobileOrg/, iOS implementation} for the -@emph{iPhone/iPod Touch/iPad} series of devices, was started by Richard -Moreland and is now in the hands Sean Escriva. Android users should check -out @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg -Android} by Matt Jones. Though the two implementations are not identical, -they offer similar features. - -This appendix describes Org's support for agenda view formats compatible with -MobileOrg. It also describes synchronizing changes, such as to notes, -between MobileOrg and the computer. - -To change tags and TODO states in MobileOrg, first customize the variables -@code{org-todo-keywords} and @code{org-tag-alist}. These should cover all -the important tags and TODO keywords, even if Org files use only some of -them. Though MobileOrg has in-buffer settings, it understands TODO states -@emph{sets} (@pxref{Per-file keywords}) and @emph{mutually exclusive} tags -(@pxref{Setting tags}) only for those set in these variables. - -@menu -* Setting up the staging area:: For the mobile device -* Pushing to MobileOrg:: Uploading Org files and agendas -* Pulling from MobileOrg:: Integrating captured and flagged items -@end menu - -@node Setting up the staging area -@section Setting up the staging area - -MobileOrg needs access to a file directory on a server to interact with -Emacs. With a public server, consider encrypting the files. MobileOrg -version 1.5 supports encryption for the iPhone. Org also requires -@file{openssl} installed on the local computer. To turn on encryption, set -the same password in MobileOrg and in Emacs. Set the password in the -variable @code{org-mobile-use-encryption}@footnote{If Emacs is configured for -safe storing of passwords, then configure the variable, -@code{org-mobile-encryption-password}; please read the docstring of that -variable.}. Note that even after MobileOrg encrypts the file contents, the -file names will remain visible on the file systems of the local computer, the -server, and the mobile device. - -For a server to host files, consider options like -@uref{http://dropbox.com,Dropbox.com} account@footnote{An alternative is to -use webdav server. MobileOrg documentation has details of webdav server -configuration. Additional help is at -@uref{https://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.}. -On first connection, MobileOrg creates a directory @file{MobileOrg/} on -Dropbox. Pass its location to Emacs through an init file variable as -follows: - -@lisp -(setq org-mobile-directory "~/Dropbox/MobileOrg") -@end lisp - -Org copies files to the above directory for MobileOrg. Org also uses the -same directory for sharing notes between Org and MobileOrg. - -@node Pushing to MobileOrg -@section Pushing to MobileOrg - -Org pushes files listed in @code{org-mobile-files} to -@code{org-mobile-directory}. Files include agenda files (as listed in -@code{org-agenda-files}). Customize @code{org-mobile-files} to add other -files. File names will be staged with paths relative to -@code{org-directory}, so all files should be inside this -directory@footnote{Symbolic links in @code{org-directory} should have the -same name as their targets.}. - -Push creates a special Org file @file{agendas.org} with custom agenda views -defined by the user@footnote{While creating the agendas, Org mode will force -ID properties on all referenced entries, so that these entries can be -uniquely identified if MobileOrg flags them for further action. To avoid -setting properties configure the variable -@code{org-mobile-force-id-on-agenda-items} to @code{nil}. Org mode will then -rely on outline paths, assuming they are unique.}. - -Org writes the file @file{index.org}, containing links to other files. -MobileOrg reads this file first from the server to determine what other files -to download for agendas. For faster downloads, MobileOrg will read only -those files whose checksums@footnote{Checksums are stored automatically in -the file @file{checksums.dat}.} have changed. - -@node Pulling from MobileOrg -@section Pulling from MobileOrg - -When MobileOrg synchronizes with the server, it pulls the Org files for -viewing. It then appends to the file @file{mobileorg.org} on the server the -captured entries, pointers to flagged and changed entries. Org integrates -its data in an inbox file format. - -@enumerate -@item -Org moves all entries found in -@file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this -operation.} and appends them to the file pointed to by the variable -@code{org-mobile-inbox-for-pull}. Each captured entry and each editing event -is a top-level entry in the inbox file. -@item -After moving the entries, Org attempts changes to MobileOrg. Some changes -are applied directly and without user interaction. Examples include changes -to tags, TODO state, headline and body text. Entries for further action are -tagged as @code{:FLAGGED:}. Org marks entries with problems with an error -message in the inbox. They have to be resolved manually. -@item -Org generates an agenda view for flagged entries for user intervention to -clean up. For notes stored in flagged entries, MobileOrg displays them in -the echo area when the cursor is on the corresponding agenda item. - -@table @kbd -@kindex ? -@item ? -Pressing @kbd{?} displays the entire flagged note in another window. Org -also pushes it to the kill ring. To store flagged note as a normal note, use -@kbd{? z C-y C-c C-c}. Pressing @kbd{?} twice does these things: first it -removes the @code{:FLAGGED:} tag; second, it removes the flagged note from -the property drawer; third, it signals that manual editing of the flagged -entry is now finished. -@end table -@end enumerate - -@kindex C-c a ? -@kbd{C-c a ?} returns to the agenda view to finish processing flagged -entries. Note that these entries may not be the most recent since MobileOrg -searches files that were last pulled. To get an updated agenda view with -changes since the last pull, pull again. - @node History and acknowledgments @appendix History and acknowledgments @cindex acknowledgments From 3a2b5a713f92ffba3bdb52725e98030ad5b43a67 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 1 Oct 2018 10:19:27 +0300 Subject: [PATCH 009/567] ; * lisp/bindings.el (bindings--define-key): Doc fix. (Bug#32885) --- lisp/bindings.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/bindings.el b/lisp/bindings.el index 3e202b9b78c3..a1af4389beec 100644 --- a/lisp/bindings.el +++ b/lisp/bindings.el @@ -265,7 +265,10 @@ Normally nil in most modes, since there is no process to display.") (make-variable-buffer-local 'mode-line-process) (defun bindings--define-key (map key item) - "Make as much as possible of the menus pure." + "Define KEY in keymap MAP according to ITEM from a menu. +This is like `define-key', but it takes the definition from the +specified menu item, and makes pure copies of as much as possible +of the menu's data." (declare (indent 2)) (define-key map key (cond From 9c028d6965c7bb3024ada4f59be133b940438127 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 1 Oct 2018 10:45:33 +0300 Subject: [PATCH 010/567] * lisp/savehist.el (savehist-mode): Doc fix. (Bug#32889) --- lisp/savehist.el | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/lisp/savehist.el b/lisp/savehist.el index fbb5f533902f..893590ce8096 100644 --- a/lisp/savehist.el +++ b/lisp/savehist.el @@ -172,13 +172,30 @@ minibuffer history.") (define-minor-mode savehist-mode "Toggle saving of minibuffer history (Savehist mode). With a prefix argument ARG, enable Savehist mode if ARG is -positive, and disable it otherwise. If called from Lisp, enable -the mode if ARG is omitted or nil. +positive, and disable it otherwise. If called from Lisp, +also enable the mode if ARG is omitted or nil. When Savehist mode is enabled, minibuffer history is saved -periodically and when exiting Emacs. When Savehist mode is -enabled for the first time in an Emacs session, it loads the -previous minibuffer history from `savehist-file'. +to `savehist-file' periodically and when exiting Emacs. When +Savehist mode is enabled for the first time in an Emacs session, +it loads the previous minibuffer histories from `savehist-file'. +The variable `savehist-autosave-interval' controls the +periodicity of saving minibuffer histories. + +If `savehist-save-minibuffer-history' is non-nil (the default), +all recorded minibuffer histories will be saved. You can arrange +for additional history variables to be saved and restored by +customizing `savehist-additional-variables', which by default is +an empty list. For example, to save the history of commands +invoked via \\[execute-extended-command], add `command-history' to the list in +`savehist-additional-variables'. + +Alternatively, you could customize `savehist-save-minibuffer-history' +to nil, and add to `savehist-additional-variables' only those +history variables you want to save. + +To ignore some history variables, add their symbols to the list +in `savehist-ignored-variables'. This mode should normally be turned on from your Emacs init file. Calling it at any other time replaces your current minibuffer From 35b56a24a09792a0e966f861aa01c07ed1826a82 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 1 Oct 2018 06:23:16 -0400 Subject: [PATCH 011/567] ; Auto-commit of loaddefs files. --- lisp/ldefs-boot.el | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 2ff94d333ba7..a9ea74102dbf 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -28927,13 +28927,30 @@ or call the function `savehist-mode'.") (autoload 'savehist-mode "savehist" "\ Toggle saving of minibuffer history (Savehist mode). With a prefix argument ARG, enable Savehist mode if ARG is -positive, and disable it otherwise. If called from Lisp, enable -the mode if ARG is omitted or nil. +positive, and disable it otherwise. If called from Lisp, +also enable the mode if ARG is omitted or nil. When Savehist mode is enabled, minibuffer history is saved -periodically and when exiting Emacs. When Savehist mode is -enabled for the first time in an Emacs session, it loads the -previous minibuffer history from `savehist-file'. +to `savehist-file' periodically and when exiting Emacs. When +Savehist mode is enabled for the first time in an Emacs session, +it loads the previous minibuffer histories from `savehist-file'. +The variable `savehist-autosave-interval' controls the +periodicity of saving minibuffer histories. + +If `savehist-save-minibuffer-history' is non-nil (the default), +all recorded minibuffer histories will be saved. You can arrange +for additional history variables to be saved and restored by +customizing `savehist-additional-variables', which by default is +an empty list. For example, to save the history of commands +invoked via \\[execute-extended-command], add `command-history' to the list in +`savehist-additional-variables'. + +Alternatively, you could customize `savehist-save-minibuffer-history' +to nil, and add to `savehist-additional-variables' only those +history variables you want to save. + +To ignore some history variables, add their symbols to the list +in `savehist-ignored-variables'. This mode should normally be turned on from your Emacs init file. Calling it at any other time replaces your current minibuffer @@ -33666,8 +33683,10 @@ Return the number at point, or nil if none is found. (autoload 'list-at-point "thingatpt" "\ Return the Lisp list at point, or nil if none is found. +If IGNORE-COMMENT-OR-STRING is non-nil comments and strings are +treated as white space. -\(fn)" nil nil) +\(fn &optional IGNORE-COMMENT-OR-STRING)" nil nil) (if (fboundp 'register-definition-prefixes) (register-definition-prefixes "thingatpt" '("form-at-point" "thing-at-point-" "sentence-at-point" "word-at-point" "in-string-p" "end-of-thing" "beginning-of-thing"))) From 508c40ef1dd625b9c9a58c863995ed241f4a5184 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Mon, 1 Oct 2018 14:17:27 +0200 Subject: [PATCH 012/567] Comple fix for Bug#32550 * lisp/net/tramp.el (tramp-rfn-eshadow-update-overlay): Use `save-excursion'. This completes the fix of Bug#32550. --- lisp/net/tramp.el | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 452e70ec3533..98ec8415c746 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -1941,21 +1941,20 @@ been set up by `rfn-eshadow-setup-minibuffer'." (minibuffer-prompt-end))) ;; We do not want to send any remote command. (non-essential t)) - (when - (tramp-tramp-file-p - (buffer-substring-no-properties end (point-max))) - (save-restriction - (narrow-to-region - (1+ (or (string-match - (tramp-rfn-eshadow-update-overlay-regexp) - (buffer-string) end) - end)) - (point-max)) - (let ((rfn-eshadow-overlay tramp-rfn-eshadow-overlay) - (rfn-eshadow-update-overlay-hook nil) - file-name-handler-alist) - (move-overlay rfn-eshadow-overlay (point-max) (point-max)) - (rfn-eshadow-update-overlay))))))) + (when (tramp-tramp-file-p (buffer-substring end (point-max))) + (save-excursion + (save-restriction + (narrow-to-region + (1+ (or (string-match + (tramp-rfn-eshadow-update-overlay-regexp) + (buffer-string) end) + end)) + (point-max)) + (let ((rfn-eshadow-overlay tramp-rfn-eshadow-overlay) + (rfn-eshadow-update-overlay-hook nil) + file-name-handler-alist) + (move-overlay rfn-eshadow-overlay (point-max) (point-max)) + (rfn-eshadow-update-overlay)))))))) (add-hook 'rfn-eshadow-update-overlay-hook 'tramp-rfn-eshadow-update-overlay) From cdca208932a1d7f81a31f858f5f9fa55760b8323 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 2 Oct 2018 19:56:43 -0400 Subject: [PATCH 013/567] Fix note about interactive advice (Bug#32905) * doc/lispref/functions.texi (Core Advising Primitives): Add missing ':', and finish the sentence fragment. --- doc/lispref/functions.texi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index 93059e8e3a6b..9b8057080ea3 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -1674,7 +1674,9 @@ Note: The interactive spec of @var{function} will apply to the combined function and should hence obey the calling convention of the combined function rather than that of @var{function}. In many cases, it makes no difference since they are identical, but it does matter for @code{:around}, -@code{:filter-args}, and @code{filter-return}, where @var{function}. +@code{:filter-args}, and @code{:filter-return}, where @var{function} +receives different arguments than the original function stored in +@var{place}. @end defmac @defmac remove-function place function From f8df6f23070d506e64e3f5079940ca5bef2f1b7e Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Sun, 30 Sep 2018 15:58:40 +0000 Subject: [PATCH 014/567] * etc/NEWS: Note setting make-cursor-line-fully-visible to nil in follow-mode Also re-insert the "temporary note" explaining --- and +++. --- etc/NEWS | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index bfd7db016f2f..440741b9b8f9 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -15,6 +15,12 @@ in older Emacs versions. You can narrow news to a specific version by calling 'view-emacs-news' with a prefix argument or by typing C-u C-h C-n. +Temporary note: ++++ indicates that all necessary documentation updates are complete. + (This means all relevant manuals in doc/ AND lisp doc-strings.) +--- means no change in the manuals is needed. +When you add a new item, use the appropriate mark if you are sure it applies, + * Installation Changes in Emacs 26.2 @@ -45,6 +51,14 @@ often cause crashes. Set it to nil if you really need those fonts. * Changes in Specialized Modes and Packages in Emacs 26.2 +--- +** Follow mode +Follow mode now sets a buffer local value of nil for +make-cursor-line-fully-visible in any buffer using it. This ensures +correct operation if point is moved by C-n to the next window when +there is a partially displayed line at the bottom of the original +window. + ** Ibuffer --- From 2c8ea4654dc72ccb93ef63632a888ea3d395f599 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Wed, 3 Oct 2018 12:08:27 +0000 Subject: [PATCH 015/567] Revert "* etc/NEWS: Note setting make-cursor-line-fully-visible to nil in follow-mode" This reverts commit f3c8f4bde2de2b9d42c44f5e44f34c427bebdc58. --- etc/NEWS | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 440741b9b8f9..bfd7db016f2f 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -15,12 +15,6 @@ in older Emacs versions. You can narrow news to a specific version by calling 'view-emacs-news' with a prefix argument or by typing C-u C-h C-n. -Temporary note: -+++ indicates that all necessary documentation updates are complete. - (This means all relevant manuals in doc/ AND lisp doc-strings.) ---- means no change in the manuals is needed. -When you add a new item, use the appropriate mark if you are sure it applies, - * Installation Changes in Emacs 26.2 @@ -51,14 +45,6 @@ often cause crashes. Set it to nil if you really need those fonts. * Changes in Specialized Modes and Packages in Emacs 26.2 ---- -** Follow mode -Follow mode now sets a buffer local value of nil for -make-cursor-line-fully-visible in any buffer using it. This ensures -correct operation if point is moved by C-n to the next window when -there is a partially displayed line at the bottom of the original -window. - ** Ibuffer --- From ea77c6594e5ccc9057ca664ef1dea766ca291b8e Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Wed, 3 Oct 2018 12:08:59 +0000 Subject: [PATCH 016/567] Revert "Temporary workaround for bug #32848 for branch emacs-26" This reverts commit 6650751ce73413d05599df07a9c5bc70744260f3. --- lisp/follow.el | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lisp/follow.el b/lisp/follow.el index 7942901bb4f0..fd397c077bb1 100644 --- a/lisp/follow.el +++ b/lisp/follow.el @@ -438,10 +438,7 @@ Keys specific to Follow mode: (setq pos-visible-in-window-group-p-function 'follow-pos-visible-in-window-p) (setq selected-window-group-function 'follow-all-followers) - (setq move-to-window-group-line-function 'follow-move-to-window-line) - - ;; Crude workaround for bug #32848 for the emacs-26 branch, 2018-09-30. - (setq-local make-cursor-line-fully-visible nil)) + (setq move-to-window-group-line-function 'follow-move-to-window-line)) ;; Remove globally-installed hook functions only if there is no ;; other Follow mode buffer. @@ -454,9 +451,6 @@ Keys specific to Follow mode: (remove-hook 'post-command-hook 'follow-post-command-hook) (remove-hook 'window-size-change-functions 'follow-window-size-change))) - ;; Second part of crude workaround for bug #32848. - (kill-local-variable 'make-cursor-line-fully-visible) - (kill-local-variable 'move-to-window-group-line-function) (kill-local-variable 'selected-window-group-function) (kill-local-variable 'pos-visible-in-window-group-p-function) From 99f45ee42c5554d606407f6da37700e9bf86bd35 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Wed, 3 Oct 2018 15:57:15 +0000 Subject: [PATCH 017/567] In follow mode, prevent the cursor resting on a partially displayed line Don't merge to master. This fixes bug #32848 * lisp/follow.el (follow-adjust-window): If point ends up in a partially displayed line in a left hand or middle window, move it one line forward, to prevent unwanted scrolling should make-cursor-line-fully-visible be non-nil. --- lisp/follow.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/follow.el b/lisp/follow.el index fd397c077bb1..eb48ec179cff 100644 --- a/lisp/follow.el +++ b/lisp/follow.el @@ -1385,7 +1385,13 @@ non-first windows in Follow mode." (unless (eq win (selected-window)) (let ((p (window-point win))) (set-window-start win (window-start win) nil) - (set-window-point win p)))) + (if (nth 2 (pos-visible-in-window-p p win t)) + ;; p is in a partially visible line. We can't leave + ;; window-point there, because C-x o back into WIN + ;; would then fail. + (with-selected-window win + (forward-line)) ; redisplay will recenter it in WIN. + (set-window-point win p))))) (unless visible ;; If point may not be visible in the selected window, From ac3622c81acb93fa340a1e0e73188b1587b3970a Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Wed, 3 Oct 2018 19:59:34 +0200 Subject: [PATCH 018/567] Improve documentation of 'read-hide-char' * src/minibuf.c (syms_of_minibuf) : Clarify documentation and mention where else the variable is used. * doc/lispref/minibuf.texi (Reading a Password): Add an index entry for 'read-hide-char'. --- doc/lispref/minibuf.texi | 1 + src/minibuf.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi index 2951ef5aaecb..97797d00096e 100644 --- a/doc/lispref/minibuf.texi +++ b/doc/lispref/minibuf.texi @@ -2236,6 +2236,7 @@ Here is an example of using this function: To read a password to pass to another program, you can use the function @code{read-passwd}. +@vindex read-hide-char @defun read-passwd prompt &optional confirm default This function reads a password, prompting with @var{prompt}. It does not echo the password as the user types it; instead, it echoes diff --git a/src/minibuf.c b/src/minibuf.c index 691fad07b790..f1bde913fc9a 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -2107,8 +2107,11 @@ properties. */); DEFVAR_LISP ("read-hide-char", Vread_hide_char, doc: /* Whether to hide input characters in noninteractive mode. -It must be a character, which will be used to mask the input -characters. This variable should never be set globally. */); +If non-nil, it must be a character, which will be used to mask the +input characters. This variable should never be set globally. + +This variable also overrides the default character that `read-passwd' +uses to hide passwords. */); Vread_hide_char = Qnil; defsubr (&Sactive_minibuffer_window); From 86d2169ac3458412a084c7fc4047c3a389924cad Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 4 Oct 2018 19:13:17 +0300 Subject: [PATCH 019/567] Avoid ridiculously high stack limit requests on macOS * src/emacs.c (main): Avoid wraparound in subtraction of rlim_t values, in case rlim_t is an unsigned type. (Bug#32338) --- src/emacs.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/emacs.c b/src/emacs.c index 483e848f6dbe..f80047e89e70 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -875,7 +875,8 @@ main (int argc, char **argv) newlim = rlim.rlim_max; newlim -= newlim % pagesize; - if (pagesize <= newlim - lim) + if (newlim > lim /* in case rlim_t is an unsigned type */ + && pagesize <= newlim - lim) { rlim.rlim_cur = newlim; if (setrlimit (RLIMIT_STACK, &rlim) == 0) @@ -884,9 +885,10 @@ main (int argc, char **argv) } /* If the stack is big enough, let regex.c more of it before falling back to heap allocation. */ - emacs_re_safe_alloca = max - (min (lim - extra, SIZE_MAX) * (min_ratio / ratio), - MAX_ALLOCA); + if (lim < extra) + lim = extra; /* avoid wrap-around in unsigned subtraction */ + emacs_re_safe_alloca = + max (min (lim - extra, SIZE_MAX) * (min_ratio / ratio), MAX_ALLOCA); } #endif /* HAVE_SETRLIMIT and RLIMIT_STACK and not CYGWIN */ From 2cae1cf6f87a10f9d85d1759b1703abcc421c9a5 Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Sun, 8 Apr 2018 16:49:20 -0700 Subject: [PATCH 020/567] Further fix to eieio-persistent * lisp/emacs-lisp/eieio-base.el (eieio-persistent-validate/fix-slot-value): Make handling of hash tables and vectors recursive. This is necessary because the write process, in `eieio-override-prin1' is also recursive. With any luck, this will be the last fix of its kind. If that's true, cherry-pick to Emacs 26.2 later on. --- lisp/emacs-lisp/eieio-base.el | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el index cba6cab1d4fe..b55bde713962 100644 --- a/lisp/emacs-lisp/eieio-base.el +++ b/lisp/emacs-lisp/eieio-base.el @@ -360,32 +360,30 @@ Second, any text properties will be stripped from strings." proposed-value)))) ;; For hash-tables and vectors, the top-level `read' will not ;; "look inside" member values, so we need to do that - ;; explicitly. + ;; explicitly. Because `eieio-override-prin1' is recursive in + ;; the case of hash-tables and vectors, we recurse + ;; `eieio-persistent-validate/fix-slot-value' here as well. ((hash-table-p proposed-value) (maphash (lambda (key value) - (cond ((class-p (car-safe value)) - (setf (gethash key proposed-value) - (eieio-persistent-convert-list-to-object - value))) - ((and (consp value) - (eq (car value) 'quote)) - (setf (gethash key proposed-value) - (cadr value))))) + (setf (gethash key proposed-value) + (if (class-p (car-safe value)) + (eieio-persistent-convert-list-to-object + value) + (eieio-persistent-validate/fix-slot-value + class slot value)))) proposed-value) proposed-value) ((vectorp proposed-value) (dotimes (i (length proposed-value)) (let ((val (aref proposed-value i))) - (cond ((class-p (car-safe val)) - (aset proposed-value i - (eieio-persistent-convert-list-to-object - (aref proposed-value i)))) - ((and (consp val) - (eq (car val) 'quote)) - (aset proposed-value i - (cadr val)))))) + (aset proposed-value i + (if (class-p (car-safe val)) + (eieio-persistent-convert-list-to-object + val) + (eieio-persistent-validate/fix-slot-value + class slot val))))) proposed-value) ((stringp proposed-value) From 79bda3bc4731c7ac67b499a154c636d8eeb2edee Mon Sep 17 00:00:00 2001 From: Katsumi Yamaoka Date: Fri, 5 Oct 2018 00:22:20 +0000 Subject: [PATCH 021/567] Make nneething allow CRLF-encoded files (bug#32940) * lisp/gnus/nneething.el (nneething-request-article): Bind coding system to raw-text instead of binary when reading a file, that may be CRLF-encoded (bug#32940). --- lisp/gnus/nneething.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/gnus/nneething.el b/lisp/gnus/nneething.el index 9b6a92f10e70..886cbf81461b 100644 --- a/lisp/gnus/nneething.el +++ b/lisp/gnus/nneething.el @@ -123,7 +123,7 @@ included.") (file-exists-p file) ; The file exists. (not (file-directory-p file)) ; It's not a dir. (save-excursion - (let ((nnmail-file-coding-system 'binary)) + (let ((nnmail-file-coding-system 'raw-text)) (nnmail-find-file file)) ; Insert the file in the nntp buf. (unless (nnheader-article-p) ; Either it's a real article... (let ((type From 8c53d9fede22b1929de4b9aaaca6a5611d5c5475 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 5 Oct 2018 16:51:17 +0300 Subject: [PATCH 022/567] Fix a typo in a doc string. * lisp/window.el (display-buffer-alist): Fix a typo in a doc string. Reported by Michael Heerdegen . --- lisp/window.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/window.el b/lisp/window.el index 818bd3dd2bdd..f96c887be480 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -6831,7 +6831,7 @@ See `display-buffer' for details.") (put 'display-buffer-overriding-action 'risky-local-variable t) (defcustom display-buffer-alist nil - "Alist of uder-defined conditional actions for `display-buffer'. + "Alist of user-defined conditional actions for `display-buffer'. Its value takes effect before `display-buffer-base-action' and `display-buffer-fallback-action', but after `display-buffer-overriding-action', which see. From 7e4229411be6064a7dcd95480af6f02faa86751f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 6 Oct 2018 12:38:36 +0300 Subject: [PATCH 023/567] Update the locale and language database * lisp/international/mule-cmds.el (locale-language-names): Update the list of supported locales. Use existing language names where available. --- lisp/international/mule-cmds.el | 52 ++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 333fe2aa917e..88dfa6f34ba5 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -2229,7 +2229,7 @@ See `set-language-info-alist' for use in programs." ("bg" "Bulgarian" cp1251) ; Bulgarian ; bh Bihari ; bi Bislama - ("bn" . "UTF-8") ; Bengali, Bangla + ("bn" "Bengali" utf-8) ; Bengali, Bangla ("bo" . "Tibetan") ("br" . "Latin-1") ; Breton ("bs" . "Latin-2") ; Bosnian @@ -2242,6 +2242,7 @@ See `set-language-info-alist' for use in programs." ("de" "German" iso-8859-1) ; dv Divehi ; dz Bhutani + ("ee" . "Latin-4") ; Ewe ("el" "Greek" iso-8859-7) ;; Users who specify "en" explicitly typically want Latin-1, not ASCII. ;; That's actually what the GNU locales define, modulo things like @@ -2250,10 +2251,10 @@ See `set-language-info-alist' for use in programs." ("en" "English" iso-8859-1) ; English ("eo" . "Esperanto") ; Esperanto ("es" "Spanish" iso-8859-1) - ("et" . "Latin-1") ; Estonian + ("et" . "Latin-9") ; Estonian ("eu" . "Latin-1") ; Basque - ("fa" . "UTF-8") ; Persian - ("fi" . "Latin-1") ; Finnish + ("fa" "Persian" utf-8) ; Persian + ("fi" . "Latin-9") ; Finnish ("fj" . "Latin-1") ; Fiji ("fo" . "Latin-1") ; Faroese ("fr" "French" iso-8859-1) ; French @@ -2263,11 +2264,12 @@ See `set-language-info-alist' for use in programs." ("gez" "Ethiopic" utf-8) ; Geez ("gl" . "Latin-1") ; Gallegan; Galician ; gn Guarani - ("gu" . "UTF-8") ; Gujarati + ("gu" "Gujarati" utf-8) ; Gujarati ("gv" . "Latin-1") ; Manx Gaelic ; ha Hausa ("he" "Hebrew" iso-8859-8) ("hi" "Devanagari" utf-8) ; Hindi + ("hni_IN" . "UTF-8") ; Chhattisgarhi ("hr" "Croatian" iso-8859-2) ; Croatian ("hu" . "Latin-2") ; Hungarian ; hy Armenian @@ -2284,20 +2286,20 @@ See `set-language-info-alist' for use in programs." ("ka" "Georgian" georgian-ps) ; Georgian ; kk Kazakh ("kl" . "Latin-1") ; Greenlandic - ; km Cambodian + ("km" "Khmer" utf-8) ; Cambodian, Khmer ("kn" "Kannada" utf-8) ("ko" "Korean" euc-kr) - ; ks Kashmiri + ("ks" . "UTF-8") ; Kashmiri ; ku Kurdish ("kw" . "Latin-1") ; Cornish - ; ky Kirghiz + ("ky" . "UTF-8") ; Kirghiz ("la" . "Latin-1") ; Latin ("lb" . "Latin-1") ; Luxemburgish - ("lg" . "Laint-6") ; Ganda + ("lg" . "Latin-6") ; Ganda, a.k.a. Luganda ; ln Lingala ("lo" "Lao" utf-8) ; Laothian ("lt" "Lithuanian" iso-8859-13) - ("lv" . "Latvian") ; Latvian, Lettish + ("lv" "Latvian" iso-8859-13) ; Latvian, Lettish ; mg Malagasy ("mi" . "Latin-7") ; Maori ("mk" "Cyrillic-ISO" iso-8859-5) ; Macedonian @@ -2307,24 +2309,29 @@ See `set-language-info-alist' for use in programs." ("mr" "Devanagari" utf-8) ; Marathi ("ms" . "Latin-1") ; Malay ("mt" . "Latin-3") ; Maltese - ; my Burmese + ("my" "Burmese" utf-8) ; Burmese ; na Nauru ("nb" . "Latin-1") ; Norwegian ("ne" "Devanagari" utf-8) ; Nepali ("nl" "Dutch" iso-8859-1) + ("nn" . "Latin-1") ; Norwegian Nynorsk ("no" . "Latin-1") ; Norwegian + ("nr_ZA" . "UTF-8") ; South Ndebele + ("nso_ZA" . "UTF-8") ; Pedi ("oc" . "Latin-1") ; Occitan ("om_ET" . "UTF-8") ; (Afan) Oromo ("om" . "Latin-1") ; (Afan) Oromo - ; or Oriya - ("pa" . "UTF-8") ; Punjabi - ("pl" . "Latin-2") ; Polish + ("or" "Oriya" utf-8) + ("pa" "Punjabi" utf-8) ; Punjabi + ("pl" "Polish" iso-8859-2) ; Polish ; ps Pashto, Pushto + ("pt_BR" "Brazilian Portuguese" iso-8859-1) ; Brazilian Portuguese ("pt" . "Latin-1") ; Portuguese ; qu Quechua ("rm" . "Latin-1") ; Rhaeto-Romanic ; rn Kirundi ("ro" "Romanian" iso-8859-2) + ("ru_RU.koi8r" "Cyrillic-KOI8" koi8-r) ("ru_RU" "Russian" iso-8859-5) ("ru_UA" "Russian" koi8-u) ; rw Kinyarwanda @@ -2333,7 +2340,7 @@ See `set-language-info-alist' for use in programs." ("se" . "UTF-8") ; Northern Sami ; sg Sangho ("sh" . "Latin-2") ; Serbo-Croatian - ; si Sinhalese + ("si" "Sinhala" utf-8) ; Sinhalese ("sid" . "UTF-8") ; Sidamo ("sk" "Slovak" iso-8859-2) ("sl" "Slovenian" iso-8859-2) @@ -2341,7 +2348,7 @@ See `set-language-info-alist' for use in programs." ; sn Shona ("so_ET" "UTF-8") ; Somali ("so" "Latin-1") ; Somali - ("sq" . "Latin-1") ; Albanian + ("sq" . "Latin-2") ; Albanian ("sr" . "Latin-2") ; Serbian (Latin alphabet) ; ss Siswati ("st" . "Latin-1") ; Sesotho @@ -2349,17 +2356,20 @@ See `set-language-info-alist' for use in programs." ("sv" "Swedish" iso-8859-1) ; Swedish ("sw" . "Latin-1") ; Swahili ("ta" "Tamil" utf-8) - ("te" . "UTF-8") ; Telugu + ("te" "Telugu" utf-8) ; Telugu ("tg" "Tajik" koi8-t) - ("th" "Thai" tis-620) + ("th_TH.tis620" "Thai" tis-620) + ("th_TH.TIS-620" "Thai" tis-620) + ("th_TH" "Thai" iso-8859-11) + ("th" "Thai" iso-8859-11) ("ti" "Ethiopic" utf-8) ; Tigrinya ("tig_ER" . "UTF-8") ; Tigre ; tk Turkmen ("tl" . "Latin-1") ; Tagalog - ; tn Setswana + ("tn" . "Latin-9") ; Setswana, Tswana ; to Tonga ("tr" "Turkish" iso-8859-9) - ; ts Tsonga + ("ts" . "Latin-1") ; Tsonga ("tt" . "UTF-8") ; Tatar ; tw Twi ; ug Uighur @@ -2367,6 +2377,7 @@ See `set-language-info-alist' for use in programs." ("ur" . "UTF-8") ; Urdu ("uz_UZ@cyrillic" . "UTF-8"); Uzbek ("uz" . "Latin-1") ; Uzbek + ("ve" . "UTF-8") ; Venda ("vi" "Vietnamese" utf-8) ; vo Volapuk ("wa" . "Latin-1") ; Walloon @@ -2396,7 +2407,6 @@ See `set-language-info-alist' for use in programs." ;; Nonstandard or obsolete language codes ("cz" . "Czech") ; e.g. Solaris 2.6 - ("ee" . "Latin-4") ; Estonian, e.g. X11R6.4 ("iw" . "Hebrew") ; e.g. X11R6.4 ("sp" . "Cyrillic-ISO") ; Serbian (Cyrillic alphabet), e.g. X11R6.4 ("su" . "Latin-1") ; Finnish, e.g. Solaris 2.6 From b99192fe24fc5dd75340083403e95a65cb4a6d79 Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Sat, 6 Oct 2018 21:24:32 +0200 Subject: [PATCH 024/567] * lisp/simple.el (transient-mark-mode): Correct documentation. (Bug#32956) --- lisp/simple.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index d5674aae9b43..8bbafe49d322 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -5793,10 +5793,10 @@ Transient Mark mode if ARG is omitted or nil. Transient Mark mode is a global minor mode. When enabled, the region is highlighted with the `region' face whenever the mark -is active. The mark is \"deactivated\" by changing the buffer, -and after certain other operations that set the mark but whose -main purpose is something else--for example, incremental search, -\\[beginning-of-buffer], and \\[end-of-buffer]. +is active. The mark is \"deactivated\" after certain non-motion +commands, including those that change the text in the buffer, and +during shift or mouse selection by any unshifted cursor motion +command (see Info node `Shift Selection' for more details). You can also deactivate the mark by typing \\[keyboard-quit] or \\[keyboard-escape-quit]. From 14c032d5f8d4ccb608cc906db34ddf17ce465449 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 7 Oct 2018 17:45:12 +0300 Subject: [PATCH 025/567] Avoid assertion violations in nonsensical calls to 'signal' * src/eval.c (Fsignal): If both arguments are nil, replace the first one with 'error', to avoid assertion violations further down the line. (Bug#32961) --- src/eval.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/eval.c b/src/eval.c index f9563a3f80c1..e90a9861a1a6 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1503,7 +1503,7 @@ DEFUN ("signal", Fsignal, Ssignal, 2, 2, 0, This function does not return. An error symbol is a symbol with an `error-conditions' property -that is a list of condition names. +that is a list of condition names. The symbol should be non-nil. A handler for any of those names will get to handle this signal. The symbol `error' should normally be one of them. @@ -1515,6 +1515,9 @@ See also the function `condition-case'. */ attributes: noreturn) (Lisp_Object error_symbol, Lisp_Object data) { + /* If they call us with nonsensical arguments, produce "peculiar error". */ + if (NILP (error_symbol) && NILP (data)) + error_symbol = Qerror; signal_or_quit (error_symbol, data, false); eassume (false); } From 940ae156043c27101759c1577697d3a09d5bc948 Mon Sep 17 00:00:00 2001 From: Scott Corley Date: Sun, 7 Oct 2018 23:21:40 -0700 Subject: [PATCH 026/567] Fix overflow lockup with frames > 255 lines Backport from master. * src/scroll.c (struct matrix_elt): Change unsigned char fields to int to handle frames with more than 255 lines (Bug#32951). Copyright-paperwork-exempt: yes --- src/scroll.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/scroll.c b/src/scroll.c index 8a53f9614f74..7751a0885a1b 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -47,13 +47,13 @@ struct matrix_elt int deletecost; /* Number of inserts so far in this run of inserts, for the cost in insertcost. */ - unsigned char insertcount; + int insertcount; /* Number of deletes so far in this run of deletes, for the cost in deletecost. */ - unsigned char deletecount; + int deletecount; /* Number of writes so far since the last insert or delete for the cost in writecost. */ - unsigned char writecount; + int writecount; }; static void do_direct_scrolling (struct frame *, From 3f1470d96fa8f71a6b5fe87396b2054309c6a59c Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Mon, 8 Oct 2018 19:21:41 +0200 Subject: [PATCH 027/567] * doc/emacs/mark.texi (Mark): Index "(de)activating the mark". (Bug#32956) --- doc/emacs/mark.texi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 0ffa9f74ac67..10505873c537 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi @@ -17,11 +17,13 @@ one comes earlier in the text; each time you move point, the region changes. @cindex active region +@cindex activating the mark Setting the mark at a position in the text also @dfn{activates} it. When the mark is active, we say also that the region is active; Emacs indicates its extent by highlighting the text within it, using the @code{region} face (@pxref{Face Customization}). +@cindex deactivating the mark After certain non-motion commands, including any command that changes the text in the buffer, Emacs automatically @dfn{deactivates} the mark; this turns off the highlighting. You can also explicitly From 4cf1eb8062d258338ceb83d5c0703f4000cd8181 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 8 Oct 2018 23:14:59 +0300 Subject: [PATCH 028/567] ; * src/data.c (Fkeywordp): Remove inaccurate commentary. (Bug#32979) --- src/data.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/data.c b/src/data.c index 4569f0024206..8d58cbd94103 100644 --- a/src/data.c +++ b/src/data.c @@ -344,8 +344,6 @@ DEFUN ("symbolp", Fsymbolp, Ssymbolp, 1, 1, 0, return Qnil; } -/* Define this in C to avoid unnecessarily consing up the symbol - name. */ DEFUN ("keywordp", Fkeywordp, Skeywordp, 1, 1, 0, doc: /* Return t if OBJECT is a keyword. This means that it is a symbol with a print name beginning with `:' From 19f705c438034d10bd206c142faea83a02c8a885 Mon Sep 17 00:00:00 2001 From: Mauro Aranda Date: Tue, 9 Oct 2018 18:20:53 -0300 Subject: [PATCH 029/567] Fix typo in 'timerp' documentation * doc/lispref/os.texi (Timers): Fix typo in 'timerp' documentation. (Bug#32999) Copyright-paperwork-exempt: yes --- doc/lispref/os.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index fd1cf638e78e..e60a2c5a708a 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -1766,7 +1766,7 @@ special object that stores the information about the next invocation times and the function to invoke. @defun timerp object -This predicate function returns non-@code{nil} of @code{object} is a +This predicate function returns non-@code{nil} if @code{object} is a timer. @end defun From 6e54762c3726be9e11b4beb21214abcd4192783a Mon Sep 17 00:00:00 2001 From: Alan Third Date: Sun, 7 Oct 2018 16:15:17 +0100 Subject: [PATCH 030/567] Fix Apple Script permissions error * nextstep/templates/Info.plist.in: Add NSAppleEventsUsageDescription message to enable AppleEvents usage. --- nextstep/templates/Info.plist.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nextstep/templates/Info.plist.in b/nextstep/templates/Info.plist.in index 9960f085f6f3..406d6f773137 100644 --- a/nextstep/templates/Info.plist.in +++ b/nextstep/templates/Info.plist.in @@ -675,5 +675,7 @@ along with GNU Emacs. If not, see . NSAppleScriptEnabled YES + NSAppleEventsUsageDescription + Emacs requires permission to send AppleEvents to other applications. From 0d2bf76d3d8a9d05e3b9ff4228608aa446352e7e Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Thu, 11 Oct 2018 09:39:12 +0200 Subject: [PATCH 031/567] Adapt Tramp version. Do not merge with master * lisp/net/trampver.el: Change version to "2.3.5.26.2". (customize-package-emacs-version-alist): Add Tramp version integrated in Emacs 26.2. --- lisp/net/trampver.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 6454b5b8f8b6..7badcd19f848 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -7,7 +7,7 @@ ;; Maintainer: Michael Albinus ;; Keywords: comm, processes ;; Package: tramp -;; Version: 2.3.4.26.2 +;; Version: 2.3.5.26.2 ;; This file is part of GNU Emacs. @@ -33,7 +33,7 @@ ;; should be changed only there. ;;;###tramp-autoload -(defconst tramp-version "2.3.4.26.2" +(defconst tramp-version "2.3.5.26.2" "This version of Tramp.") ;;;###tramp-autoload @@ -55,7 +55,7 @@ ;; Check for Emacs version. (let ((x (if (>= emacs-major-version 24) "ok" - (format "Tramp 2.3.4.26.2 is not fit for %s" + (format "Tramp 2.3.5.26.2 is not fit for %s" (when (string-match "^.*$" (emacs-version)) (match-string 0 (emacs-version))))))) (unless (string-match "\\`ok\\'" x) (error "%s" x))) @@ -70,7 +70,7 @@ ("2.2.9-24.4" . "24.4") ("2.2.11-24.5" . "24.5") ("2.2.13.25.1" . "25.1") ("2.2.13.25.2" . "25.2") ("2.2.13.25.2" . "25.3") - ("2.3.3.26.1" . "26.1") ("2.3.4.26.2" . "26.2"))) + ("2.3.3.26.1" . "26.1") ("2.3.5.26.2" . "26.2"))) (add-hook 'tramp-unload-hook (lambda () From a7ebc6bf633bd3849ccab032dad6b1fd31b1ef43 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Thu, 11 Oct 2018 17:23:30 +0900 Subject: [PATCH 032/567] dired-do-shell-command: Notify users after abort the command * lisp/dired-aux.el (dired-do-shell-command): Notify users that the command have aborted when they answer 'n' to the prompt (Bug#32969). --- lisp/dired-aux.el | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 516cd2c5672c..e40627309d75 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -757,16 +757,17 @@ can be produced by `dired-get-marked-files', for example." (y-or-n-p (format-message "Confirm--do you mean to use `?' as a wildcard? "))) (t)))) - (when ok - (if on-each - (dired-bunch-files (- 10000 (length command)) - (lambda (&rest files) - (dired-run-shell-command - (dired-shell-stuff-it command files t arg))) - nil file-list) - ;; execute the shell command - (dired-run-shell-command - (dired-shell-stuff-it command file-list nil arg))))))) + (cond ((not ok) (message "Command canceled")) + (t + (if on-each + (dired-bunch-files (- 10000 (length command)) + (lambda (&rest files) + (dired-run-shell-command + (dired-shell-stuff-it command files t arg))) + nil file-list) + ;; execute the shell command + (dired-run-shell-command + (dired-shell-stuff-it command file-list nil arg)))))))) ;; Might use {,} for bash or csh: (defvar dired-mark-prefix "" From ce8b4584a3c69e5c4abad8a0a9c3781ce8c0c1f8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 11 Oct 2018 20:53:05 +0300 Subject: [PATCH 033/567] Document in the ELisp manual how to write loadable modules * doc/lispref/internals.texi (Writing Dynamic Modules) (Module Initialization, Module Functions, Module Values) (Module Misc, Module Nonlocal): New nodes. * doc/lispref/loading.texi (Dynamic Modules): Add cross-reference to the new node. * doc/lispref/internals.texi (GNU Emacs Internals): * doc/lispref/elisp.texi (Top): Update menus for the new nodes. --- doc/lispref/elisp.texi | 9 + doc/lispref/internals.texi | 703 +++++++++++++++++++++++++++++++++++++ doc/lispref/loading.texi | 33 +- 3 files changed, 734 insertions(+), 11 deletions(-) diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index 6c3182b0c702..7dd1e89de5e8 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi @@ -1588,9 +1588,18 @@ GNU Emacs Internals * Memory Usage:: Info about total size of Lisp objects made so far. * C Dialect:: What C variant Emacs is written in. * Writing Emacs Primitives:: Writing C code for Emacs. +* Writing Dynamic Modules:: Writing loadable modules for Emacs. * Object Internals:: Data formats of buffers, windows, processes. * C Integer Types:: How C integer types are used inside Emacs. +Writing Dynamic Modules + +* Module Initialization:: +* Module Functions:: +* Module Values:: +* Module Misc:: +* Module Nonlocal:: + Object Internals * Buffer Internals:: Components of a buffer structure. diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index 45c3b87c0ac5..8db8c06161bd 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -18,6 +18,7 @@ internal aspects of GNU Emacs that may be of interest to C programmers. * Memory Usage:: Info about total size of Lisp objects made so far. * C Dialect:: What C variant Emacs is written in. * Writing Emacs Primitives:: Writing C code for Emacs. +* Writing Dynamic Modules:: Writing loadable modules for Emacs. * Object Internals:: Data formats of buffers, windows, processes. * C Integer Types:: How C integer types are used inside Emacs. @end menu @@ -980,6 +981,708 @@ in @file{byte-opt.el} that binds @code{side-effect-free-fns} and @code{side-effect-and-error-free-fns} so that the compiler optimizer knows about it. +@node Writing Dynamic Modules +@section Writing Dynamically-Loaded Modules +@cindex writing emacs modules +@cindex dynamic modules, writing + +@cindex module @acronym{API} + This section describes the Emacs module @acronym{API} and how to use +it as part of writing extension modules for Emacs. The module +@acronym{API} is defined in the C programming language, therefore the +description and the examples in this section assume the module is +written in C@. For other programming languages, you will need to use +the appropriate bindings, interfaces and facilities for calling C code. +Emacs C code requires a C99 or later compiler (@pxref{C Dialect}), and +so the code examples in this section also follow that standard. + +Writing a module and integrating it into Emacs comprises the following +tasks: + +@itemize @bullet +@item +Writing initialization code for the module. + +@item +Writing one or more module functions. + +@item +Communicating values and objects between Emacs and your module +functions. + +@item +Handling of error conditions and nonlocal exits. +@end itemize + +@noindent +The following subsections describe these tasks and the @acronym{API} +itself in more detail. + +Once your module is written, compile it to produce a shared library, +according to the conventions of the underlying platform. Then place +the shared library in a directory mentioned in @code{load-path} +(@pxref{Library Search}), where Emacs will find it. + +If you wish to verify the conformance of a modue to the Emacs dynamic +module @acronym{API}, invoke Emacs with the @kbd{--module-assertions} +option. @xref{Initial Options,,,emacs, The GNU Emacs Manual}. + +@menu +* Module Initialization:: +* Module Functions:: +* Module Values:: +* Module Misc:: +* Module Nonlocal:: +@end menu + +@node Module Initialization +@subsection Module Initialization Code +@cindex module initialization + + Begin your module by including the header file @file{emacs-module.h} +and defining the GPL compatibility symbol: + +@example +#include + +int plugin_is_GPL_compatible; +@end example + +The @file{emacs-module.h} file is installed into your system's include +tree as part of the Emacs installation. Alternatively, you can find +it in the Emacs source tree. + +@anchor{module initialization function} +Next, write an initialization function for the module. + +@deftypefn Function int emacs_module_init (struct emacs_runtime *@var{runtime}) +Emacs calls this function when it loads a module. If a module does +not export a function named @code{emacs_module_init}, trying to load +the module will signal an error. The initialization function should +return zero if the initialization succeeds, non-zero otherwise. In +the latter case, Emacs will signal an error, and the loading of the +module will fail. If the user presses @kbd{C-g} during the +initialization, Emacs ignores the return value of the initialization +function and quits (@pxref{Quitting}). (If needed, you can catch user +quitting inside the initialization function, @pxref{should_quit}.) + +The argument @var{runtime} is a pointer to a C @code{struct} that +includes 2 public fields: @code{size}, which provides the size of the +structure in bytes; and @code{get_environment}, which provides a +pointer to a function that allows the module initialization function +access to the Emacs environment object and its interfaces. + +The initialization function should perform whatever initialization is +required for the module. In addition, it can perform the following +tasks: + +@table @asis +@cindex compatibility, between modules and Emacs +@item Compatibility verification +A module can verify that the Emacs executable which loads the module +is compatible with the module, by comparing the @code{size} member of +the @var{runtime} structure with the value compiled into the module: + +@example +int +emacs_module_init (struct emacs_runtime *ert) +@{ + if (ert->size < sizeof (*ert)) + return 1; +@} +@end example + +@noindent +If the size of the runtime object passed to the module is smaller than +what it expects, it means the module was compiled for an Emacs version +newer (later) than the one which attempts to load it, i.e.@: the +module might be incompatible with the Emacs binary. + +In addition, a module can verify the compatibility of the module +@acronym{API} with what the module expects. The following sample code +assumes it is part of the @code{emacs_module_init} function shown +above: + +@example + emacs_env *env = ert->get_environment (ert); + if (env->size < sizeof (*env)) + return 2; +@end example + +@noindent +@cindex module runtime environment +This calls the @code{get_environment} function using the pointer +provided in the @code{runtime} structure to retrieve a pointer to the +@acronym{API}'s @dfn{environment}, a C @code{struct} which also has a +@code{size} field holding the size of the structure in bytes. + +Finally, you can write a module that will work with older versions of +Emacs, by comparing the size of the environment passed by Emacs with +known sizes, like this: + +@example + emacs_env *env = ert->get_environment (ert); + if (env->size >= sizeof (struct emacs_env_26)) + emacs_version = 26; /* Emacs 26 or later. */ + else if (env->size >= sizeof (struct emacs_env_25)) + emacs_version = 25; + else + return 2; /* Unknown or unsupported version. */ +@end example + +@noindent +This works because later Emacs versions always @emph{add} members to +the environment, never @emph{remove} any members, so the size can only +grow with new Emacs releases. Given the version of Emacs, the module +can use only the parts of the module @acronym{API} that existed in +that version, since those parts are identical in later versions. + +We recommend that modules always perform the compatibility +verification, unless they do their job entirely in the initialization +function, and don't access any Lisp objects or use any Emacs functions +accessible through the environment structure. + +@item Binding module functions to Lisp symbols +This gives the module functions names so that Lisp code could call it +by that name. We describe how to do this in @ref{Module Functions} +below. +@end table +@end deftypefn + +@node Module Functions +@subsection Writing Module Functions +@cindex writing module functions +@cindex module functions + + The main reason for writing an Emacs module is to make additional +functions available to Lisp programs that load the module. This +subsection describes how to write such @dfn{module functions}. + +A module function has the following general form and signature: + +@deftypefn Function emacs_value module_func (emacs_env *@var{env}, ptrdiff_t @var{nargs}, emacs_value *@var{args}, void *@var{data}) +The @var{env} argument provides a pointer to the @acronym{API} +environment, needed to access Emacs objects and functions. The +@var{nargs} argument is the required number of arguments, which can be +zero (see @code{make_function} below for more flexible specification +of the argument number), and @var{args} is a pointer to the array of +the function arguments. The argument @var{data} points to additional +data required by the function, which was arranged when +@code{make_function} (see below) was called to create an Emacs +function from @code{module_func}. + +Module functions use the type @code{emacs_value} to communicate Lisp +objects between Emacs and the module (@pxref{Module Values}). The +@acronym{API}, described below and in the following subsections, +provides facilities for conversion between basic C data types and the +corresponding @code{emacs_value} objects. + +A module function always returns a value. If the function returns +normally, the Lisp code which called it will see the Lisp object +corresponding to the @code{emacs_value} value the function returned. +However, if the user typed @kbd{C-g}, or if the module function or its +callees signaled an error or exited nonlocally (@pxref{Module +Nonlocal}), Emacs will ignore the returned value and quit or throw as +it does when Lisp code encounters the same situations. +@end deftypefn + +After writing your C code for a module function, you should make a +Lisp function object from it using @code{make_function}. This is +normally done in the module initialization function (@pxref{module +initialization function}), after verifying the @acronym{API} +compatibility, and uses the pointer to @code{make_function} provided +in the environment (recall that the pointer to the environment is +returned by @code{get_environment}). + +@deftypefn Function emacs_value make_function (emacs_env *@var{env}, ptrdiff_t @var{min_arity}, ptrdiff_t @var{max_arity}, subr @var{func}, const char *@var{docstring}, void *@var{data}) +@vindex emacs_variadic_function +This returns an Emacs function created from the C function @var{func}, +whose signature is as described for @code{module_func} above (assumed +here to be @code{typedef}'ed as @code{subr}). The arguments +@var{min_arity} and @var{max_arity} specify the minimum and maximum +number of arguments that @var{func} can accept. The @var{max_arity} +argument can have the special value @code{emacs_variadic_function}, +which makes the function accept an unlimited number of arguments, like +the @code{&rest} keyword in Lisp (@pxref{Argument List}). + +The argument @var{data} is a way to arrange for arbitrary additional +data to be passed to @var{func} when it is called. Whatever pointer +is passed to @code{make_function} will be passed unaltered to +@var{func}. + +The argument @var{docstring} specifies the documentation string for +the function. It should be either an @acronym{ASCII} string, or a +UTF-8 encoded non-@acronym{ASCII} string, or a @code{NULL} pointer; in +the latter case the function will have no documentation. The +documentation string can end with a line that specifies the advertised +calling convention, see @ref{Function Documentation}. + +Since every module function must accept the pointer to the environment +as its first argument, the call to @code{make_function} could be made +from any module function, but you will normally want to do that from +the module initialization function, so that all the module functions +are known to Emacs once the module is loaded. +@end deftypefn + +Finally, you should bind the Lisp function to a symbol, so that Lisp +code could call your function by name. For that, use the module +@acronym{API} function @code{intern} (@pxref{intern}) whose pointer is +also provided in the environment that module functions can access. + +Combining the above steps, code that arranges for a C function +@code{module_func} to be callable as @code{module-func} from Lisp will +look like this, as part of the module initialization function: + +@example + emacs_env *env = ert->get_environment (ert); + emacs_value func = env->make_function (env, min_arity, max_arity, + module_func, docstring, data); + emacs_value symbol = env->intern (env, "module-func"); + emacs_value args[] = @{symbol, func@}; + env->funcall (env, env->intern (env, "defalias"), 2, args); +@end example + +@noindent +This makes the symbol @code{module-func} known to Emacs by calling +@code{env->intern}, then invokes @code{defalias} from Emacs to bind +the function to that symbol. Note that it is possible to use +@code{fset} instead of @code{defalias}; the differences are described +in @ref{Defining Functions, defalias}. + +Using the module @acronym{API}, it is possible to define more complex +function and data types: interactive functions, inline functions, +macros, etc. However, the resulting C code will be cumbersome and +hard to read. Therefore, we recommend that you limit the module code +which creates functions and data structures to the absolute minimum, +and leave the rest for a Lisp package that will accompany your module, +because doing these additional tasks in Lisp is much easier, and will +produce a much more readable code. For example, given a module +function @code{module-func} defined as above, one way of making an +interactive command @code{module-cmd} based on it is with the +following simple Lisp wrapper: + +@lisp +(defun module-cmd (&rest args) + "Documentation string for the command." + (interactive @var{spec}) + (apply 'module-func args)) +@end lisp + +The Lisp package which goes with your module could then load the +module using the @code{module-load} primitive (@pxref{Dynamic +Modules}) when the package is loaded into Emacs. + +@node Module Values +@subsection Conversion Between Lisp and Module Values +@cindex module values, conversion + +@cindex @code{emacs_value} data type + With very few exceptions, most modules need to exchange data with +Lisp programs that call them: accept arguments to module functions and +return values from module functions. For this purpose, the module +@acronym{API} provides the @code{emacs_value} type, which represents +Emacs Lisp objects communicated via the @acronym{API}; it is the +functional equivalent of the @code{Lisp_Object} type used in Emacs C +primitives (@pxref{Writing Emacs Primitives}). This section describes +the parts of the module @acronym{API} that allow to create +@code{emacs_value} objects corresponding to basic Lisp data types, and +how to access from C data in @code{emacs_value} objects that +correspond to Lisp objects. + +All of the functions described below are actually @emph{function +pointers} provided via the pointer to the environment which every +module function accepts. Therefore, module code should call these +functions through the environment pointer, like this: + +@example +emacs_env *env; /* the environment pointer */ +env->some_function (arguments@dots{}); +@end example + +@noindent +The @code{emacs_env} pointer will usually come from the first argument +to the module function, or from the call to @code{get_environment} if +you need the environment in the module initialization function. + +Most of the functions described below became available in Emacs 25, +the first Emacs release that supported dynamic modules. For the few +functions that became available in later Emacs releases, we mention +the first Emacs version that supported them. + +The following @acronym{API} functions extract values of various C data +types from @code{emacs_value} objects. They all raise the +@code{wrong-type-argument} error condition (@pxref{Type Predicates}) +if the argument @code{emacs_value} object is not of the type expected +by the function. @xref{Module Nonlocal}, for details of how signaling +errors works in Emacs modules, and how to catch error conditions +inside the module before they are reported to Emacs. The +@acronym{API} function @code{type_of} (@pxref{Module Misc, type_of}) +can be used to obtain the type of a @code{emacs_value} object. + +@deftypefn Function intmax_t extract_integer (emacs_env *@var{env}, emacs_value @var{arg}) +This function returns the value of a Lisp integer specified by +@var{arg}. The C data type of the return value, @code{intmax_t}, is +the widest integral data type supported by the C compiler, typically +@w{@code{long long}}. +@end deftypefn + +@deftypefn Function double extract_float (emacs_env *@var{env}, emacs_value @var{arg}) +This function returns the value of a Lisp float specified by +@var{arg}, as a C @code{double} value. +@end deftypefn + +@deftypefn Function bool copy_string_contents (emacs_env *@var{env}, emacs_value @var{arg}, char *@var{buf}, ptrdiff_t *@var{len}) +This function stores the UTF-8 encoded text of a Lisp string specified +by @var{arg} in the array of @code{char} pointed by @var{buf}, which +should have enough space to hold at least @code{*@var{len}} bytes, +including the terminating null byte. The argument @var{len} must not +be a @code{NULL} pointer, and, when the function is called, it should +point to a value that specifies the size of @var{buf} in bytes. + +If the buffer size specified by @code{*@var{len}} is large enough to +hold the string's text, the function stores in @code{*@var{len}} the +actual number of bytes copied to @var{buf}, including the terminating +null byte, and returns @code{true}. If the buffer is too small, the +function raises the @code{args-out-of-range} error condition, stores +the required number of bytes in @code{*@var{len}}, and returns +@code{false}. @xref{Module Nonlocal}, for how to handle pending error +conditions. + +The argument @var{buf} can be a @code{NULL} pointer, in which case the +function stores in @code{*@var{len}} the number of bytes required for +storing the contents of @var{arg}, and returns @code{true}. This is +how you can determine the size of @var{buf} needed to store a +particular string: first call @code{copy_string_contents} with +@code{NULL} as @var{buf}, then allocate enough memory to hold the +number of bytes stored by the function in @code{*@var{len}}, and call +the function again with non-@code{NULL} @var{buf} to actually perform +the text copying. +@end deftypefn + +@deftypefn Function emacs_value vec_get (emacs_env *@var{env}, emacs_value @var{vector}, ptrdiff_t @var{index}) +This function returns the element of @var{vector} at @var{index}. The +@var{index} of the first vector element is zero. The function raises +the @code{args-out-of-range} error condition if the value of +@var{index} is invalid. To extract C data from the value the function +returns, use the other extraction functions described here, as +appropriate for the Lisp data type stored in that element of the +vector. +@end deftypefn + +@deftypefn Function ptrdiff_t vec_size (emacs_env *@var{env}, emacs_value @var{vector}) +This function returns the number of elements in @var{vector}. +@end deftypefn + +@deftypefn Function void vec_set (emacs_env *@var{env}, emacs_value @var{vector}, ptrdiff_t @var{index}, emacs_value @var{value}) +This function stores @var{value} in the element of @var{vector} whose +index is @var{index}. It raises the @code{args-out-of-range} error +condition if the value of @var{index} is invalid. +@end deftypefn + +The following @acronym{API} functions create @code{emacs_value} +objects from basic C data types. They all return the created +@code{emacs_value} object. + +@deftypefn Function emacs_value make_integer (emacs_env *@var{env}, intmax_t @var{n}) +This function takes an integer argument @var{n} and returns the +corresponding @code{emacs_value} object. It raises the +@code{overflow-error} error condition if the value of @var{n} cannot +be represented as an Emacs integer, i.e.@: is not inside the limits +set by @code{most-negative-fixnum} and @code{most-positive-fixnum} +(@pxref{Integer Basics}). +@end deftypefn + +@deftypefn Function emacs_value make_float (emacs_env *@var{env}, double @var{d}) +This function takes a @code{double} argument @var{d} and returns the +corresponding Emacs floating-point value. +@end deftypefn + +@deftypefn Function emacs_value make_string (emacs_env *@var{env}, const char *@var{str}, ptrdiff_t @var{strlen}) +This function creates an Emacs string from C text string pointed by +@var{str} whose length in bytes, not including the terminating null +byte, is @var{strlen}. The original string in @var{str} can be either +an @acronym{ASCII} string or a UTF-8 encoded non-@acronym{ASCII} +string; it can include embedded null bytes, and doesn't have to end in +a terminating null byte at @code{@var{str}[@var{strlen}]}. The +function raises the @code{overflow-error} error condition if +@var{strlen} is negative or exceeds the maximum length of an Emacs +string. +@end deftypefn + +The @acronym{API} does not provide functions to manipulate Lisp data +structures, for example, create lists with @code{cons} and @code{list} +(@pxref{Building Lists}), extract list members with @code{car} and +@code{cdr} (@pxref{List Elements}), create vectors with @code{vector} +(@pxref{Vector Functions}), etc. For these, use @code{intern} and +@code{funcall}, described in the next subsection, to call the +corresponding Lisp functions. + +Normally, @code{emacs_value} objects have a rather short lifetime: it +ends when the @code{emacs_env} pointer used for their creation goes +out of scope. Occasionally, you may need to create @dfn{global +references}: @code{emacs_value} objects that live as long as you +wish. Use the following two functions to manage such objects. + +@deftypefn Function emacs_value make_global_ref (emacs_env *@var{env}, emacs_value @var{value}) +This function returns a global reference for @var{value}. +@end deftypefn + +@deftypefn Function void free_global_ref (emacs_env *@var{env}, emacs_value @var{global_value}) +This function frees the @var{global_value} previously created by +@code{make_global_ref}. The @var{global_value} is no longer valid +after the call. Your module code should pair each call to +@code{make_global_ref} with the corresponding @code{free_global_ref}. +@end deftypefn + +@cindex user pointer, using in module functions +An alternative to keeping around C data structures that need to be +passed to module functions later is to create @dfn{user pointer} +objects. A user pointer, or @code{user-ptr}, object is a Lisp object +that encapsulates a C pointer and can have an associated finalizer +function, which is called when the object is garbage-collected +(@pxref{Garbage Collection}). The module @acronym{API} provides +functions to create and access @code{user-ptr} objects. These +functions raise the @code{wrong-type-argument} error condition if they +are called on @code{emacs_value} that doesn't represent a +@code{user-ptr} object. + +@deftypefn Function emacs_value make_user_ptr (emacs_env *@var{env}, emacs_finalizer @var{fin}, void *@var{ptr}) +This function creates and returns a @code{user-ptr} object which wraps +the C pointer @var{ptr}. The finalizer function @var{fin} can be a +@code{NULL} pointer (meaning no finalizer), or it can be a function of +the following signature: + +@example +typedef void (*emacs_finalizer) (void *@var{ptr}); +@end example + +@noindent +If @var{fin} is not a @code{NULL} pointer, it will be called with the +@var{ptr} as the argument when the @code{user-ptr} object is +garbage-collected. Don't run any expensive code in a finalizer, +because GC must finish quickly to keep Emacs responsive. +@end deftypefn + +@deftypefn Function void *get_user_ptr (emacs_env *@var{env}, emacs_value val) +This function extracts the C pointer from the Lisp object represented +by @var{val}. +@end deftypefn + +@deftypefn Function void set_user_ptr (emacs_env *@var{env}, emacs_value @var{value}, void *@var{ptr}) +This function sets the C pointer embedded in the @code{user-ptr} +object represented by @var{value} to @var{ptr}. +@end deftypefn + +@deftypefn Function emacs_finalizer get_user_finalizer (emacs_env *@var{env}, emacs_value val) +This function returns the finalizer of the @code{user-ptr} object +represented by @var{val}, or @code{NULL} if it doesn't have a finalizer. +@end deftypefn + +@deftypefn Function void set_user_finalizer (emacs_env *@var{env}, emacs_value @var{val}, emacs_finalizer @var{fin}) +This function changes the finalizer of the @code{user-ptr} object +represented by @var{val} to be @var{fin}. If @var{fin} is a +@code{NULL} pointer, the @code{user-ptr} object will have no finalizer. +@end deftypefn + +@node Module Misc +@subsection Miscellaneous Convenience Functions for Modules + + This subsection describes a few convenience functions provided by +the module @acronym{API}. Like the functions described in previous +subsections, all of them are actually function pointers, and need to +be called via the @code{emacs_env} pointer. Description of functions +that were introduced after Emacs 25 calls out the first version where +they became available. + +@deftypefn Function bool eq (emacs_env *@var{env}, emacs_value @var{val1}, emacs_value @var{val2}) +This function returns @code{true} if the Lisp objects represented by +@var{val1} and @var{val2} are identical, @code{false} otherwise. This +is the same as the Lisp function @code{eq} (@pxref{Equality +Predicates}), but avoids the need to intern the objects represented by +the arguments. + +There are no @acronym{API} functions for other equality predicates, so +you will need to use @code{intern} and @code{funcall}, described +below, to perform more complex equality tests. +@end deftypefn + +@deftypefn Function bool is_not_nil (emacs_env *@var{env}, emacs_value @var{val}) +This function tests whether the Lisp object represented by @var{val} +is non-@code{nil}; it returns @code{true} or @code{false} accordingly. + +Note that you could implement an equivalent test by using +@code{intern} to get an @code{emacs_value} representing @code{nil}, +then use @code{eq}, described above, to test for equality. But using +this function is more convenient. +@end deftypefn + +@deftypefn Function emacs_value type_of (emacs_env *@var{env}, emacs_value @code{object}) +This function returns the type of @var{object} as a value that +represents a symbol: @code{string} for a string, @code{integer} for an +integer, @code{process} for a process, etc. @xref{Type Predicates}. +You can use @code{intern} and @code{eq} to compare against known type +symbols, if your code needs to depend on the object type. +@end deftypefn + +@anchor{intern} +@deftypefn Function emacs_value intern (emacs_env *@var{env}, const char *name) +This function returns an interned Emacs symbol whose name is +@var{name}, which should be an @acronym{ASCII} null-terminated string. +It creates a new symbol if one does not already exist. + +Together with @code{funcall}, described below, this function provides +a means for invoking any Lisp-callable Emacs function, provided that +its name is a pure @acronym{ASCII} string. For example, here's how to +intern a symbol whose name @code{name_str} is non-@acronym{ASCII}, by +calling the more powerful Emacs @code{intern} function +(@pxref{Creating Symbols}): + +@example +emacs_value fintern = env->intern (env, "intern"); +emacs_value sym_name = + env->make_string (env, name_str, strlen (name_str)); +emacs_value intern_args[] = @{ sym_name, env->intern (env, "nil") @}; +emacs_value symbol = env->funcall (env, fintern, 2, intern_args); +@end example + +@end deftypefn + +@deftypefn Function emacs_value funcall (emacs_env *@var{env}, emacs_value @var{func}, ptrdiff_t @var{nargs}, emacs_value *@var{args}) +This function calls the specified @var{func} passing it @var{nargs} +arguments from the array pointed to by @var{args}. The argument +@var{func} can be a function symbol (e.g., returned by @code{intern} +described above), a module function returned by @code{make_function} +(@pxref{Module Functions}), a subroutine written in C, etc. If +@var{nargs} is zero, @var{args} can be a @code{NULL} pointer. + +The function returns the value that @var{func} returned. +@end deftypefn + +If your module includes potentially long-running code, it is a good +idea to check from time to time in that code whether the user wants to +quit, e.g., by typing @kbd{C-g} (@pxref{Quitting}). The following +function, which is available since Emacs 26.1, is provided for that +purpose. + +@anchor{should_quit} +@deftypefn Function bool should_quit (emacs_env *@var{env}) +This function returns @code{true} if the user wants to quit. In that +case, we recommend that your module function aborts any on-going +processing and returns as soon as possible. +@end deftypefn + +@node Module Nonlocal +@subsection Nonlocal Exits in Modules +@cindex nonlocal exits, in modules + + Emacs Lisp supports nonlocal exits, whereby program control is +transfered from one point in a program to another remote point. +@xref{Nonlocal Exits}. Thus, Lisp functions called by your module +might exit nonlocally by calling @code{signal} or @code{throw}, and +your module functions must handle such nonlocal exits properly. Such +handling is needed because C programs will not automatically release +resources and perform other cleanups in these cases; your module code +must itself do it. The module @acronym{API} provides facilities for +that, described in this subsection. They are generally available +since Emacs 25; those of them that became available in later releases +explicitly call out the first Emacs version where they became part of +the @acronym{API}. + +When some Lisp code called by a module function signals an error or +throws, the nonlocal exit is trapped, and the pending exit and its +associated data are stored in the environment. Whenever a nonlocal +exit is pending in the environment, any module @acronym{API} function +called with a pointer to that environment will return immediately +without any processing (the functions @code{non_local_exit_check}, +@code{non_local_exit_get}, and @code{non_local_exit_clear} are +exceptions from this rule). If your module function then does nothing +and returns to Emacs, a pending nonlocal exit will cause Emacs to act +on it: signal an error or throw to the corresponding @code{catch}. + +So the simplest ``handling'' of nonlocal exits in module functions is +to do nothing special and let the rest of your code to run as if +nothing happened. However, this can cause two classes of problems: + +@itemize @minus +@item +Your module function might use uninitialized or undefined values, +since @acronym{API} functions return immediately without producing the +expected results. + +@item +Your module might leak resources, because it might not have the +opportunity to release them. +@end itemize + +Therefore, we recommend that your module functions check for nonlocal +exit conditions and recover from them, using the functions described +below. + +@deftypefn Function enum emacs_funcall_exit non_local_exit_check (emacs_env *@var{env}) +This function returns the kind of nonlocal exit condition stored in +@var{env}. The possible values are: + +@vindex emacs_funcall_exit@r{, enumeration} +@vtable @code +@item emacs_funcall_exit_return +The last @acronym{API} function exited normally. +@item emacs_funcall_exit_signal +The last @acronym{API} function signaled an error. +@item emacs_funcall_exit_throw +The last @acronym{API} function exited via @code{throw}. +@end vtable +@end deftypefn + +@deftypefn Function emacs_funcall_exit non_local_exit_get (emacs_env *@var{env}, emacs_value *@var{symbol}, emacs_value *@var{data}) +This function returns the kind of nonlocal exit condition stored in +@var{env}, like @code{non_local_exit_check} does, but it also returns +the full information about the nonlocal exit, if any. If the return +value is @code{emacs_funcall_exit_signal}, the function stores the +error symbol in @code{*@var{symbol}} and the error data in +@code{*@var{data}} (@pxref{Signaling Errors}). If the return value is +@code{emacs_funcall_exit_throw}, the function stores the @code{catch} +tag symbol in @code{*@var{symbol}} and the @code{throw} value in +@code{*@var{data}}. The function doesn't store anything in memory +pointed by these arguments when the return value is +@code{emacs_funcall_exit_return}. +@end deftypefn + +You should check nonlocal exit conditions where it matters: before you +allocated some resource or after you allocated a resource that might +need freeing, or where a failure means further processing is +impossible or infeasible. + +Once your module function detected that a nonlocal exit is pending, it +can either return to Emacs (after performing the necessary local +cleanup), or it can attempt to recover from the nonlocal exit. The +following @acronym{API} functions will help with these tasks. + +@deftypefn Function void non_local_exit_clear (emacs_env *@var{env}) +This function clears the pending nonlocal exit conditions and data +from @var{env}. After calling it, the module @acronym{API} functions +will work normally. Use this function if your module function can +recover from nonlocal exits of the Lisp functions it calls and +continue, and also before calling any of the following two functions +(or any other @acronym{API} functions, if you want them to perform +their intended processing when a nonlocal exit is pending). +@end deftypefn + +@deftypefn Function void non_local_exit_throw (emacs_env *@var{env}, emacs_value @var{tag}, emacs_value @var{value}) +This function throws to the Lisp @code{catch} symbol represented by +@var{tag}, passing it @var{value} as the value to return. Your module +function should in general return soon after calling this function. +One use of this function is when you want to re-throw a non-local exit +from one of the called @acronym{API} or Lisp functions. +@end deftypefn + +@deftypefn Function void non_local_exit_signal (emacs_env *@var{env}, emacs_value @var{error}, emacs_value @var{data}) +This function signals the error represented by @var{error} with the +specified error data @var{data}. The module function should return +soon after calling this function. This function could be useful, +e.g., for signaling errors from module functions to Emacs. +@end deftypefn + + @node Object Internals @section Object Internals @cindex object internals diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 80b75729c130..cbb2f701ed95 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -1139,8 +1139,6 @@ Features}). @section Emacs Dynamic Modules @cindex dynamic modules -@c FIXME: This is intentionally incomplete, as the module integration -@c is not yet finished. To be refined later. A @dfn{dynamic Emacs module} is a shared library that provides additional functionality for use in Emacs Lisp programs, just like a package written in Emacs Lisp would. @@ -1162,30 +1160,43 @@ Every dynamic module should export a C-callable function named @code{load} or @code{require} which loads the module. It should also export a symbol named @code{plugin_is_GPL_compatible} to indicate that its code is released under the GPL or compatible license; Emacs will -refuse to load modules that don't export such a symbol. +signal an error if your program tries to load modules that don't +export such a symbol. If a module needs to call Emacs functions, it should do so through the -API defined and documented in the header file @file{emacs-module.h} -that is part of the Emacs distribution. +@acronym{API} (Application Programming Interface) defined and +documented in the header file @file{emacs-module.h} that is part of +the Emacs distribution. @xref{Writing Dynamic Modules}, for details +of using that API when writing your own modules. @cindex user-ptr object +@cindex user pointer object Modules can create @code{user-ptr} Lisp objects that embed pointers to C struct's defined by the module. This is useful for keeping around complex data structures created by a module, to be passed back to the module's functions. User-ptr objects can also have associated @dfn{finalizers} -- functions to be run when the object is GC'ed; this is useful for freeing any resources allocated for the underlying data -structure, such as memory, open file descriptors, etc. +structure, such as memory, open file descriptors, etc. @xref{Module +Values}. @defun user-ptrp object This function returns @code{t} if its argument is a @code{user-ptr} object. @end defun +@defun module-load file +Emacs calls this low-level primitive to load a module from the +specified @var{file} and perform the necessary initialization of the +module. This is the primitive which makes sure the module exports the +@code{plugin_is_GPL_compatible} symbol, calls the module's +@code{emacs_module_init} function, and signals an error if that +function returns an error indication, or if the use typed @kbd{C-g} +during the initialization. If the initialization succeeds, +@code{module-load} returns @code{t}. Note that @var{file} must +already have the proper file-name extension, as this function doesn't +try looking for files with known extensions, unlike @code{load}. +@end defun + Loadable modules in Emacs are enabled by using the @kbd{--with-modules} option at configure time. - -If you write your own dynamic modules, you may wish to verify their -conformance to the Emacs dynamic module API. Invoking Emacs with the -@kbd{--module-assertions} option will help you in this matter. -@xref{Initial Options,,,emacs, The GNU Emacs Manual}. From a108eaa13c8f2af4d7de9fc788d1b780a5571cd6 Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Thu, 11 Oct 2018 11:20:29 -0700 Subject: [PATCH 034/567] Fix bug with precious entries in Gnus registry * lisp/registry.el (registry-collect-prune-candidates): This `cdr' was an error: it meant that the last key in the precious list, would be considered a nil. Since the precious list only contains the symbol 'mark by default, marks were never considered precious. * doc/misc/gnus.texi (Store arbitrary data): Fix typo: "marks" should be "mark". --- doc/misc/gnus.texi | 2 +- lisp/registry.el | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index db0534e8a68a..7be888f3f264 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -26159,7 +26159,7 @@ Get the data under @code{key} for message @code{id}. If any extra entries are precious, their presence will make the registry keep the whole entry forever, even if there are no groups for the Message-ID and if the size limit of the registry is reached. By -default this is just @code{(marks)} so the custom registry marks are +default this is just @code{(mark)} so the custom registry marks are precious. @end defvar diff --git a/lisp/registry.el b/lisp/registry.el index 95097a4f1b77..04f3e7b974c0 100644 --- a/lisp/registry.el +++ b/lisp/registry.el @@ -358,7 +358,7 @@ return LIMIT such candidates. If SORTFUNC is provided, sort entries first and return candidates from beginning of list." (let* ((precious (oref db precious)) (precious-p (lambda (entry-key) - (cdr (memq (car entry-key) precious)))) + (memq (car entry-key) precious))) (data (oref db data)) (candidates (cl-loop for k being the hash-keys of data using (hash-values v) From 89a73016f71beabbd0617e0963010d5d353e30f1 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 11 Oct 2018 21:48:10 +0300 Subject: [PATCH 035/567] ; * doc/lispref/internals.texi (Writing Dynamic Modules): Fix a typo. --- doc/lispref/internals.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index 8db8c06161bd..311eb6b26201 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -1023,7 +1023,7 @@ according to the conventions of the underlying platform. Then place the shared library in a directory mentioned in @code{load-path} (@pxref{Library Search}), where Emacs will find it. -If you wish to verify the conformance of a modue to the Emacs dynamic +If you wish to verify the conformance of a module to the Emacs dynamic module @acronym{API}, invoke Emacs with the @kbd{--module-assertions} option. @xref{Initial Options,,,emacs, The GNU Emacs Manual}. From af80b1061293dc98433ee7b444ddde7979b7883d Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 12 Oct 2018 11:31:09 +0300 Subject: [PATCH 036/567] Improve indexing of 'C-SPC C-SPC' * doc/emacs/mark.texi (Disabled Transient Mark): Fix indexing. (Bug#32959) --- doc/emacs/mark.texi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 10505873c537..9747d0261f6c 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi @@ -444,12 +444,13 @@ from point to the end of the buffer. Commands that act this way are identified in their own documentation. @end itemize +@cindex enabling Transient Mark mode temporarily While Transient Mark mode is off, you can activate it temporarily using @kbd{C-@key{SPC} C-@key{SPC}} or @kbd{C-u C-x C-x}. @table @kbd @item C-@key{SPC} C-@key{SPC} -@kindex C-SPC C-SPC@r{, disabling Transient Mark} +@kindex C-SPC C-SPC@r{, enabling Transient Mark temporarily} Set the mark at point (like plain @kbd{C-@key{SPC}}) and enable Transient Mark mode just once, until the mark is deactivated. (This is not really a separate command; you are using the @kbd{C-@key{SPC}} From d0eca49e3c811d43dfc9bc407bf608d7a955ced8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 12 Oct 2018 11:33:31 +0300 Subject: [PATCH 037/567] ; * doc/emacs/mark.texi (Disabled Transient Mark): Fix last change. --- doc/emacs/mark.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 9747d0261f6c..626f9dda25f2 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi @@ -450,7 +450,7 @@ using @kbd{C-@key{SPC} C-@key{SPC}} or @kbd{C-u C-x C-x}. @table @kbd @item C-@key{SPC} C-@key{SPC} -@kindex C-SPC C-SPC@r{, enabling Transient Mark temporarily} +@kindex C-SPC C-SPC@r{, enabling Transient Mark mode temporarily} Set the mark at point (like plain @kbd{C-@key{SPC}}) and enable Transient Mark mode just once, until the mark is deactivated. (This is not really a separate command; you are using the @kbd{C-@key{SPC}} From 643df633ea8afafce661a20b54676691f59a68ce Mon Sep 17 00:00:00 2001 From: Alex Branham Date: Fri, 5 Oct 2018 09:07:13 -0500 Subject: [PATCH 038/567] Avoid byte-compiler warning in em-rebind.el * lisp/eshell/em-rebind.el (eshell-delete-backward-char): Use 'delete-char' instead of delete-backward-char. (Bug#32945) --- lisp/eshell/em-rebind.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/eshell/em-rebind.el b/lisp/eshell/em-rebind.el index e6f04b68e0c2..064dcc762d2a 100644 --- a/lisp/eshell/em-rebind.el +++ b/lisp/eshell/em-rebind.el @@ -223,7 +223,7 @@ lock it at that." (interactive "P") (let ((count (prefix-numeric-value n))) (if (eshell-point-within-input-p (- (point) count)) - (delete-backward-char count n) + (delete-char (- count) n) (beep)))) (defun eshell-delchar-or-maybe-eof (arg) From a6ab8db3a3dc5ec107ef023c6659620584309c97 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Fri, 12 Oct 2018 21:45:03 +0100 Subject: [PATCH 039/567] Ensure NS frame is redrawn correctly after scroll * src/nsterm.m (ns_copy_bits): Set needsDisplay so the previous cursor position is redrawn. --- src/nsterm.m | 1 + 1 file changed, 1 insertion(+) diff --git a/src/nsterm.m b/src/nsterm.m index d92d6c32448d..8c355a89f8f1 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -2721,6 +2721,7 @@ so some key presses (TAB) are swallowed by the system. */ [FRAME_NS_VIEW (f) scrollRect: src by: NSMakeSize (dest.origin.x - src.origin.x, dest.origin.y - src.origin.y)]; + [FRAME_NS_VIEW (f) setNeedsDisplay:YES]; } } From 18b42c6b4b411c217a4a2a16ccfe48640f6582e8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 13 Oct 2018 09:44:09 +0300 Subject: [PATCH 040/567] Use the 'line-number' face for line-number fields past EOB * src/xdisp.c (get_phys_cursor_geometry): Treat rows at and beyond ZV specially. Don't let the cursor exceed the vertical dimensions of the row. (maybe_produce_line_number): Use the 'line-number' face instead of 'default' for blank fields beyond ZV. Don't update the IT metrics when displaying blank line-number fields beyond ZV. (Bug#32337) --- src/xdisp.c | 58 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index eccefa41cf33..357f0fb30cd8 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -2304,7 +2304,10 @@ get_phys_cursor_geometry (struct window *w, struct glyph_row *row, ascent value, lest the hollow cursor looks funny. */ y = w->phys_cursor.y; ascent = row->ascent; - if (row->ascent < glyph->ascent) + /* The test for row at ZV is for when line numbers are displayed and + point is at EOB: the cursor could then be smaller or larger than + the default face's font. */ + if (!row->ends_at_zv_p && row->ascent < glyph->ascent) { y -= glyph->ascent - row->ascent; ascent = glyph->ascent; @@ -2314,6 +2317,9 @@ get_phys_cursor_geometry (struct window *w, struct glyph_row *row, h0 = min (FRAME_LINE_HEIGHT (f), row->visible_height); h = max (h0, ascent + glyph->descent); + /* Don't let the cursor exceed the dimensions of the row, so that + the upper/lower side of the box aren't clipped. */ + h = min (h, row->height); h0 = min (h0, ascent + glyph->descent); y0 = WINDOW_HEADER_LINE_HEIGHT (w); @@ -21175,14 +21181,11 @@ maybe_produce_line_number (struct it *it) for (const char *p = lnum_buf; *p; p++) { /* For continuation lines and lines after ZV, instead of a line - number, produce a blank prefix of the same width. Use the - default face for the blank field beyond ZV. */ - if (beyond_zv) - tem_it.face_id = it->base_face_id; - else if (lnum_face_id != current_lnum_face_id - && (EQ (Vdisplay_line_numbers, Qvisual) - ? this_line == 0 - : this_line == it->pt_lnum)) + number, produce a blank prefix of the same width. */ + if (lnum_face_id != current_lnum_face_id + && (EQ (Vdisplay_line_numbers, Qvisual) + ? this_line == 0 + : this_line == it->pt_lnum)) tem_it.face_id = current_lnum_face_id; else tem_it.face_id = lnum_face_id; @@ -21235,23 +21238,30 @@ maybe_produce_line_number (struct it *it) } } - /* Update IT's metrics due to glyphs produced for line numbers. */ - if (it->glyph_row) + /* Update IT's metrics due to glyphs produced for line numbers. + Don't do that for rows beyond ZV, to avoid displaying a cursor of + different dimensions there. */ + if (!beyond_zv) { - struct glyph_row *row = it->glyph_row; + if (it->glyph_row) + { + struct glyph_row *row = it->glyph_row; - it->max_ascent = max (row->ascent, tem_it.max_ascent); - it->max_descent = max (row->height - row->ascent, tem_it.max_descent); - it->max_phys_ascent = max (row->phys_ascent, tem_it.max_phys_ascent); - it->max_phys_descent = max (row->phys_height - row->phys_ascent, - tem_it.max_phys_descent); - } - else - { - it->max_ascent = max (it->max_ascent, tem_it.max_ascent); - it->max_descent = max (it->max_descent, tem_it.max_descent); - it->max_phys_ascent = max (it->max_phys_ascent, tem_it.max_phys_ascent); - it->max_phys_descent = max (it->max_phys_descent, tem_it.max_phys_descent); + it->max_ascent = max (row->ascent, tem_it.max_ascent); + it->max_descent = max (row->height - row->ascent, tem_it.max_descent); + it->max_phys_ascent = max (row->phys_ascent, tem_it.max_phys_ascent); + it->max_phys_descent = max (row->phys_height - row->phys_ascent, + tem_it.max_phys_descent); + } + else + { + it->max_ascent = max (it->max_ascent, tem_it.max_ascent); + it->max_descent = max (it->max_descent, tem_it.max_descent); + it->max_phys_ascent = max (it->max_phys_ascent, + tem_it.max_phys_ascent); + it->max_phys_descent = max (it->max_phys_descent, + tem_it.max_phys_descent); + } } it->line_number_produced_p = true; From 91c4c46fd5538c1c8dbe00f272e2a65175940de8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 13 Oct 2018 11:36:04 +0300 Subject: [PATCH 041/567] Update the description of startup in ELisp manual * doc/lispref/os.texi (Startup Summary): Remove stale reference to window-system-initialization-alist. Reported by Zhang Haijun . --- doc/lispref/os.texi | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index e60a2c5a708a..44fc9a1eea2d 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -96,24 +96,29 @@ if requested by environment variables such as @env{LANG}. It does some basic parsing of the command-line arguments. @vindex initial-window-system@r{, and startup} -@vindex window-system-initialization-alist +@findex window-system-initialization @item If not running in batch mode, it initializes the window system that the variable @code{initial-window-system} specifies (@pxref{Window -Systems, initial-window-system}). The initialization function for -each supported window system is specified by -@code{window-system-initialization-alist}. If the value -of @code{initial-window-system} is @var{windowsystem}, then the -appropriate initialization function is defined in the file -@file{term/@var{windowsystem}-win.el}. This file should have been -compiled into the Emacs executable when it was built. +Systems, initial-window-system}). The initialization function, +@code{window-system-initialization}, is a @dfn{generic function} +(@pxref{Generic Functions}) whose actual implementation is different +for each supported window system. If the value of +@code{initial-window-system} is @var{windowsystem}, then the +appropriate implementation of the initialization function is defined +in the file @file{term/@var{windowsystem}-win.el}. This file should +have been compiled into the Emacs executable when it was built. @item It runs the normal hook @code{before-init-hook}. @item -If appropriate, it creates a graphical frame. This is not done in -batch (noninteractive) or daemon mode. +If appropriate, it creates a graphical frame. As part of creating the +graphical frame, it initializes the window system specified by +@code{initial-frame-alist} and @code{default-frame-alist} +(@pxref{Initial Parameters}) for the graphical frame, by calling the +@code{window-system-initialization} function for that window system. +This is not done in batch (noninteractive) or daemon mode. @item It initializes the initial frame's faces, and sets up the menu bar From 80e0bfa96da69e5d1484c5031f42b1b1742567db Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Thu, 11 Oct 2018 16:02:51 +0200 Subject: [PATCH 042/567] Call GTK functions only on GTK scrollbars * src/gtkutil.c (xg_set_background_color) [USE_TOOLKIT_SCROLL_BARS]: Don't call GTK functions on non-GTK scrollbars (Bug#32975). --- src/gtkutil.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gtkutil.c b/src/gtkutil.c index 6b72671da910..5879ab683ea1 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -1498,6 +1498,7 @@ xg_set_background_color (struct frame *f, unsigned long bg) block_input (); xg_set_widget_bg (f, FRAME_GTK_WIDGET (f), FRAME_BACKGROUND_PIXEL (f)); +#ifdef USE_TOOLKIT_SCROLL_BARS Lisp_Object bar; for (bar = FRAME_SCROLL_BARS (f); !NILP (bar); @@ -1508,7 +1509,7 @@ xg_set_background_color (struct frame *f, unsigned long bg) GtkWidget *webox = gtk_widget_get_parent (scrollbar); xg_set_widget_bg (f, webox, FRAME_BACKGROUND_PIXEL (f)); } - +#endif unblock_input (); } } From 8fc892df37700d899d2851ef4918c56c5201ea19 Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Sat, 13 Oct 2018 10:52:06 +0200 Subject: [PATCH 043/567] Update --without-toolkit-scroll-bars doc * configure.ac (--without-toolkit-scroll-bars): Update list of affected toolkits. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 029f451cd4a1..acea74094db6 100644 --- a/configure.ac +++ b/configure.ac @@ -360,7 +360,7 @@ OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts]) OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support]) OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping]) -OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars]) +OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif/Xaw3d/GTK toolkit scroll bars]) OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d]) OPTION_DEFAULT_ON([xim],[at runtime, default X11 XIM to off]) AC_ARG_WITH([ns],[AS_HELP_STRING([--with-ns], From e724a8f6694280fcb4753a87011abf9dc1c2771e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 13 Oct 2018 19:47:01 +0300 Subject: [PATCH 044/567] Fix redisplay of glyphless characters * src/conf_post.h (bool_bf): Use 'unsigned int' in the MinGW builds. Suggested by Tom Tromey . (Bug#33017) * src/dispnew.c (scrolling_window): Update commentary regarding xwidget builds. --- src/conf_post.h | 8 +++++--- src/dispnew.c | 7 ++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/conf_post.h b/src/conf_post.h index 69f686d72df3..a09e529fc90c 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -48,9 +48,11 @@ along with GNU Emacs. If not, see . */ #endif /* The type of bool bitfields. Needed to compile Objective-C with - standard GCC. It was also needed to port to pre-C99 compilers, - although we don't care about that any more. */ -#if NS_IMPL_GNUSTEP + standard GCC, and to make sure adjacent bool_bf fields are packed + into the same 1-, 2-, or 4-byte allocation unit in the MinGW + builds. It was also needed to port to pre-C99 compilers, although + we don't care about that any more. */ +#if NS_IMPL_GNUSTEP || defined(__MINGW32__) typedef unsigned int bool_bf; #else typedef bool bool_bf; diff --git a/src/dispnew.c b/src/dispnew.c index a81d6f64d1e5..d3a31967ae0f 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -4125,7 +4125,12 @@ scrolling_window (struct window *w, bool header_line_p) } #ifdef HAVE_XWIDGETS - /* Currently this seems needed to detect xwidget movement reliably. */ + /* Currently this seems needed to detect xwidget movement reliably. + This is most probably because an xwidget glyph is represented in + struct glyph's 'union u' by a pointer to a struct, which takes 8 + bytes in 64-bit builds, and thus the comparison of u.val values + done by GLYPH_EQUAL_P doesn't work reliably, since it assumes the + size of the union is 4 bytes. FIXME. */ return 0; #endif From 190245035f3cc9a2183954d046d1e6bacb0cf229 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 14 Oct 2018 19:12:49 +0300 Subject: [PATCH 045/567] Fix wording in module API documentation * doc/lispref/internals.texi (Module Functions): Fix confusing wording. Reported by Basil L. Contovounesios . --- doc/lispref/internals.texi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index 311eb6b26201..b68c94d5c780 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -1187,12 +1187,12 @@ it does when Lisp code encounters the same situations. @end deftypefn After writing your C code for a module function, you should make a -Lisp function object from it using @code{make_function}. This is +Lisp function object from it using the @code{make_function} function, +whose pointer is provided in the environment (recall that the pointer +to the environment is returned by @code{get_environment}). This is normally done in the module initialization function (@pxref{module initialization function}), after verifying the @acronym{API} -compatibility, and uses the pointer to @code{make_function} provided -in the environment (recall that the pointer to the environment is -returned by @code{get_environment}). +compatibility. @deftypefn Function emacs_value make_function (emacs_env *@var{env}, ptrdiff_t @var{min_arity}, ptrdiff_t @var{max_arity}, subr @var{func}, const char *@var{docstring}, void *@var{data}) @vindex emacs_variadic_function From 700acbd9917732ec35b7cd90d908bf6db6ff6d28 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Sun, 14 Oct 2018 18:20:01 +0000 Subject: [PATCH 046/567] doc/lispref/edebug.texi (Specification List) Remove obstrusive blank line --- doc/lispref/edebug.texi | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index 5af48fe09633..5c47945e5563 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -1309,7 +1309,6 @@ succeeds. @item &define @c @kindex &define @r{(Edebug)} - Indicates that the specification is for a defining form. Edebug's definition of a defining form is a form containing one or more code forms which are saved and executed later, after the execution of the From b20c51d62fe8f64b4b39183d23ec9cffd12f6852 Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Mon, 15 Oct 2018 19:51:47 +0200 Subject: [PATCH 047/567] * lisp/isearch.el (isearch-cmds): Recall absent isearch--state slot. --- lisp/isearch.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/isearch.el b/lisp/isearch.el index 3725779703e6..31571e11cd56 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -590,7 +590,7 @@ variable by the command `isearch-toggle-lax-whitespace'.") "Stack of search status elements. Each element is an `isearch--state' struct where the slots are [STRING MESSAGE POINT SUCCESS FORWARD OTHER-END WORD - ERROR WRAPPED BARRIER CASE-FOLD-SEARCH]") + ERROR WRAPPED BARRIER CASE-FOLD-SEARCH POP-FUN]") (defvar isearch-string "") ; The current search string. (defvar isearch-message "") ; text-char-description version of isearch-string From 73babba26aa714c34aa8d9473ba5b55ce110a215 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Mon, 15 Oct 2018 19:04:05 +0000 Subject: [PATCH 048/567] Clarify documentation of fractional vertical scrolling and some doc strings * doc/lispref/windows.texi (vertical scrolling): Clarify the meaning of vertical scrolling by referring to tall screen lines, images, and the display action. Clarify an ambiguous English tense. * src/window.c (window-vscroll, set-window-vscroll): Amend doc strings to refer to display. --- doc/lispref/windows.texi | 20 +++++++++++--------- src/window.c | 4 ++++ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 265067146dac..960573d8653c 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -4200,18 +4200,20 @@ point at the middle, top, and bottom of the window. @cindex vertical scroll position @dfn{Vertical fractional scrolling} means shifting text in a window -up or down by a specified multiple or fraction of a line. Each window -has a @dfn{vertical scroll position}, which is a number, never less than -zero. It specifies how far to raise the contents of the window. -Raising the window contents generally makes all or part of some lines -disappear off the top, and all or part of some other lines appear at the -bottom. The usual value is zero. +up or down by a specified multiple or fraction of a line. Emacs uses +it, for example, on images and screen lines which are taller than the +window. Each window has a @dfn{vertical scroll position}, which is a +number, never less than zero. It specifies how far to raise the +contents of the window when displaying them. Raising the window +contents generally makes all or part of some lines disappear off the +top, and all or part of some other lines appear at the bottom. The +usual value is zero. The vertical scroll position is measured in units of the normal line height, which is the height of the default font. Thus, if the value is -.5, that means the window contents are scrolled up half the normal line -height. If it is 3.3, that means the window contents are scrolled up -somewhat over three times the normal line height. +.5, that means the window contents will be scrolled up half the normal +line height. If it is 3.3, that means the window contents are scrolled +up somewhat over three times the normal line height. What fraction of a line the vertical scrolling covers, or how many lines, depends on what the lines contain. A value of .5 could scroll a diff --git a/src/window.c b/src/window.c index 409b01f302e7..9026a7b5f2a3 100644 --- a/src/window.c +++ b/src/window.c @@ -7322,6 +7322,8 @@ value. */) DEFUN ("window-vscroll", Fwindow_vscroll, Swindow_vscroll, 0, 2, 0, doc: /* Return the amount by which WINDOW is scrolled vertically. +This takes effect when displaying tall lines or images. + If WINDOW is omitted or nil, it defaults to the selected window. Normally, value is a multiple of the canonical character height of WINDOW; optional second arg PIXELS-P means value is measured in pixels. */) @@ -7344,6 +7346,8 @@ optional second arg PIXELS-P means value is measured in pixels. */) DEFUN ("set-window-vscroll", Fset_window_vscroll, Sset_window_vscroll, 2, 3, 0, doc: /* Set amount by which WINDOW should be scrolled vertically to VSCROLL. +This takes effect when displaying tall lines or images. + WINDOW nil means use the selected window. Normally, VSCROLL is a non-negative multiple of the canonical character height of WINDOW; optional third arg PIXELS-P non-nil means that VSCROLL is in pixels. From 1dce1b2ffb67907afff2cac62bb05361dac815e4 Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Thu, 20 Sep 2018 14:03:29 +0200 Subject: [PATCH 049/567] Install emacs-module.h (Bug#31929) * Makefile.in (includedir): New variable. (install-arch-indep): Install emacs-module.h. (uninstall): Uninstall emacs-module.h. (cherry picked from commit 00ea749f2af44bff6ea8c1259477fbf0ead8a306) --- Makefile.in | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Makefile.in b/Makefile.in index 19bf7c423ffd..77498181650f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -151,6 +151,9 @@ libexecdir=@libexecdir@ # Currently only used for the systemd service file. libdir=@libdir@ +# Where to install emacs-module.h. +includedir=@includedir@ + # Where to install Emacs's man pages. # Note they contain cross-references that expect them to be in section 1. mandir=@mandir@ @@ -558,6 +561,8 @@ set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \ ## See also these comments from 2004 about cp -r working fine: ## https://lists.gnu.org/r/autoconf-patches/2004-11/msg00005.html install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA} + umask 022 && $(MKDIR_P) -m 0755 $(includedir) + $(INSTALL_DATA) src/emacs-module.h $(includedir)/emacs-module.h -set ${COPYDESTS} ; \ unset CDPATH; \ $(set_installuser); \ @@ -741,6 +746,7 @@ install-strip: ### ### Don't delete the lisp and etc directories if they're in the source tree. uninstall: uninstall-$(NTDIR) uninstall-doc + rm -f $(includedir)/emacs-module.h $(MAKE) -C lib-src uninstall -unset CDPATH; \ for dir in "$(DESTDIR)${lispdir}" "$(DESTDIR)${etcdir}" ; do \ From e456ddaa304edbe5cca3c5561764ebf9dd4b6732 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 3 Oct 2018 16:47:01 -0400 Subject: [PATCH 050/567] Tweak Makefile emacs-module.h handling * Makefile.in (install-arch-indep, uninstall): Respect DESTDIR. Handle whitespace. Remove non-portable mkdir argument. (cherry picked from commit c1d0dbd6ca92cb221024382b19654e4fbf1d1ed3) --- Makefile.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.in b/Makefile.in index 77498181650f..f48f785fccaa 100644 --- a/Makefile.in +++ b/Makefile.in @@ -561,8 +561,8 @@ set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \ ## See also these comments from 2004 about cp -r working fine: ## https://lists.gnu.org/r/autoconf-patches/2004-11/msg00005.html install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA} - umask 022 && $(MKDIR_P) -m 0755 $(includedir) - $(INSTALL_DATA) src/emacs-module.h $(includedir)/emacs-module.h + umask 022 && $(MKDIR_P) "$(DESTDIR)$(includedir)" + $(INSTALL_DATA) src/emacs-module.h "$(DESTDIR)$(includedir)/emacs-module.h" -set ${COPYDESTS} ; \ unset CDPATH; \ $(set_installuser); \ @@ -746,7 +746,7 @@ install-strip: ### ### Don't delete the lisp and etc directories if they're in the source tree. uninstall: uninstall-$(NTDIR) uninstall-doc - rm -f $(includedir)/emacs-module.h + rm -f "$(DESTDIR)$(includedir)/emacs-module.h" $(MAKE) -C lib-src uninstall -unset CDPATH; \ for dir in "$(DESTDIR)${lispdir}" "$(DESTDIR)${etcdir}" ; do \ From 433e364add25dcc32f5103ec28f58298e00204d5 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 16 Oct 2018 18:48:21 +0300 Subject: [PATCH 051/567] ; * etc/NEWS: Announce that emacs-module.h is now installed. --- etc/NEWS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index bfd7db016f2f..dfafe7c5c940 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -25,6 +25,12 @@ webkit2gtk-4.0 package; version 2.12 or later is required. (This change was actually made in Emacs 26.1, but was not called out in its NEWS.) ++++ +** Installing Emacs now installs the emacs-module.h file. +The emacs-module.h file is now installed in the system-wide include +directory as part of the Emacs installation. This allows to build +Emacs modules outside of the Emacs source tree. + * Startup Changes in Emacs 26.2 From eb6768977effe5994b6fe3afcfa262465ba631ab Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Thu, 18 Oct 2018 01:24:43 +0300 Subject: [PATCH 052/567] * lisp/mail/smtpmail.el (smtpmail-send-queued-mail): Load file with .el suffix. For the case when load-prefer-newer is t, ensure loading the right file by explicitly adding the .el suffix. Use the same variable names as in the function smtpmail-send-it. (Bug#33055) --- lisp/mail/smtpmail.el | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el index 571089d2144f..baf50dd01b7f 100644 --- a/lisp/mail/smtpmail.el +++ b/lisp/mail/smtpmail.el @@ -402,21 +402,22 @@ The list is in preference order.") (with-temp-buffer ;; Get index, get first mail, send it, update index, get second ;; mail, send it, etc... - (let ((file-msg "") + (let (file-data file-elisp (qfile (expand-file-name smtpmail-queue-index-file smtpmail-queue-dir)) result) (insert-file-contents qfile) (goto-char (point-min)) (while (not (eobp)) - (setq file-msg (buffer-substring (point) (line-end-position))) - (load file-msg) + (setq file-data (buffer-substring (point) (line-end-position))) + (setq file-elisp (concat file-data ".el")) + (load file-elisp) ;; Insert the message literally: it is already encoded as per ;; the MIME headers, and code conversions might guess the ;; encoding wrongly. (with-temp-buffer (let ((coding-system-for-read 'no-conversion)) - (insert-file-contents file-msg)) + (insert-file-contents file-data)) (let ((smtpmail-mail-address (or (and mail-specify-envelope-from (mail-envelope-from)) user-mail-address))) @@ -426,8 +427,8 @@ The list is in preference order.") (current-buffer))) (error "Sending failed: %s" result)) (error "Sending failed; no recipients")))) - (delete-file file-msg) - (delete-file (concat file-msg ".el")) + (delete-file file-data) + (delete-file file-elisp) (delete-region (point-at-bol) (point-at-bol 2))) (write-region (point-min) (point-max) qfile)))) From f632ecbb998ccec6442cbf1e6d76a2d63af3e9e2 Mon Sep 17 00:00:00 2001 From: Mauro Aranda Date: Thu, 18 Oct 2018 11:28:18 -0300 Subject: [PATCH 053/567] Update revert-buffer documentation * doc/emacs/files.texi (Reverting): Document that revert-buffer does keep undo history. (Bug#33084) Copyright-paperwork-exempt: yes --- doc/emacs/files.texi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index e950767c3843..c1d25af35c9a 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -926,10 +926,10 @@ way that, if the file was edited only slightly, you will be at approximately the same part of the text as before. But if you have made major changes, point may end up in a totally different location. - Reverting marks the buffer as not modified. It also clears the -buffer's undo history (@pxref{Undo}). Thus, the reversion cannot be -undone---if you change your mind yet again, you can't use the undo -commands to bring the reverted changes back. + Reverting marks the buffer as not modified. However, it adds the +reverted changes as a single modification to the buffer's undo +history (@pxref{Undo}). Thus, after reverting, you can do @kbd{C-/} +to bring the reverted changes back, if you happen to change your mind. Some kinds of buffers that are not associated with files, such as Dired buffers, can also be reverted. For them, reverting means From a4e40f6cb091f06d3edf5b9c4a2700f6eea88432 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 19 Oct 2018 11:58:53 +0300 Subject: [PATCH 054/567] ; * doc/emacs/files.texi (Reverting): Improve wording in last change. --- doc/emacs/files.texi | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index c1d25af35c9a..61aa2fc3016a 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -927,9 +927,10 @@ approximately the same part of the text as before. But if you have made major changes, point may end up in a totally different location. Reverting marks the buffer as not modified. However, it adds the -reverted changes as a single modification to the buffer's undo -history (@pxref{Undo}). Thus, after reverting, you can do @kbd{C-/} -to bring the reverted changes back, if you happen to change your mind. +reverted changes as a single modification to the buffer's undo history +(@pxref{Undo}). Thus, after reverting, you can type @kbd{C-/} or its +aliases to bring the reverted changes back, if you happen to change +your mind. Some kinds of buffers that are not associated with files, such as Dired buffers, can also be reverted. For them, reverting means From cf7932712a1dac49fb299b20762d2f3329f9786b Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 20 Oct 2018 11:26:33 +0300 Subject: [PATCH 055/567] Fix a pasto in a Gnus doc string * lisp/gnus/gnus-art.el (gnus-article-treat-fold-newsgroups): Doc string fix. (Bug#33081) --- lisp/gnus/gnus-art.el | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 15e88a342276..b712cf53efbf 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -2254,9 +2254,7 @@ This only works if the article in question is HTML." start end))))))) (defun gnus-article-treat-fold-newsgroups () - "Unfold folded message headers. -Only the headers that fit into the current window width will be -unfolded." + "Fold the Newsgroups and Followup-To message headers." (interactive) (gnus-with-article-headers (while (gnus-article-goto-header "newsgroups\\|followup-to") From 1531bca523ea84c20eec9ce1dde0202a78956313 Mon Sep 17 00:00:00 2001 From: Michael Heerdegen Date: Tue, 4 Sep 2018 22:00:11 +0200 Subject: [PATCH 056/567] Fix help-form binding in dired-create-files This fixes Bug#32630: since "dired-aux" moved to lexical binding mode, the free variable TO in the constructed HELP-FORM got out of scope of the surrounding 'let'. * lisp/dired-aux.el (dired-create-files): Make the binding of HELP-FORM a string. --- lisp/dired-aux.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index e40627309d75..eaf5f257012c 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1712,7 +1712,7 @@ or with the current marker character if MARKER-CHAR is t." (let* ((overwrite (file-exists-p to)) (dired-overwrite-confirmed ; for dired-handle-overwrite (and overwrite - (let ((help-form '(format-message "\ + (let ((help-form (format-message "\ Type SPC or `y' to overwrite file `%s', DEL or `n' to skip to next, ESC or `q' to not overwrite any of the remaining files, From 6239016ca68ebf283f41c24e1828d35ad4e1cda5 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 22 Oct 2018 08:47:18 +0300 Subject: [PATCH 057/567] * doc/misc/dired-x.texi (Omitting Variables): Fix wording. (Bug#33112) --- doc/misc/dired-x.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi index 60915e299627..4f843a04deaf 100644 --- a/doc/misc/dired-x.texi +++ b/doc/misc/dired-x.texi @@ -322,8 +322,8 @@ Default: @code{nil} @cindex How to make omitting the default in Dired If non-@code{nil}, ``uninteresting'' files are not listed. -Uninteresting files are those whose files whose names match regexp -@code{dired-omit-files}, plus those ending with extensions in +Uninteresting files are files whose names match regexp +@code{dired-omit-files}, plus files whose names end with extension in @code{dired-omit-extensions}. @kbd{C-x M-o} (@code{dired-omit-mode}) toggles its value, which is buffer-local. Put From 2efd40076c8977aaf54d7478db96e5dbf623f37d Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Tue, 23 Oct 2018 12:19:19 +0200 Subject: [PATCH 058/567] Correct typo in GNU ELPA url * doc/misc/efaq.texi (Packages that do not come with Emacs): Correct typo in GNU ELPA url (Bug#33072). Change other url references to use https scheme. --- doc/misc/efaq.texi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index 8bdd40c71cf9..4f42de9c422d 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi @@ -3506,7 +3506,7 @@ see @ref{Packages that do not come with Emacs}. The easiest way to add more features to your Emacs is to use the command @kbd{M-x list-packages}. This contacts the -@uref{https:///elpa.gnu.org, GNU ELPA} (``Emacs Lisp Package Archive'') +@uref{https://elpa.gnu.org, GNU ELPA} (``Emacs Lisp Package Archive'') server and fetches the list of additional packages that it offers. These are GNU packages that are available for use with Emacs, but are distributed separately from Emacs itself, for reasons of space, etc. @@ -3515,8 +3515,8 @@ available, and then Emacs can automatically download and install the packages that you select. @xref{Packages,,, emacs, The GNU Emacs Manual}. There are other, non-GNU, Emacs Lisp package servers, including: -@uref{http://melpa.org/, MELPA}; and -@uref{https://marmalade-repo.org/, Marmalade}. To use additional +@uref{https://melpa.org, MELPA}; and +@uref{https://marmalade-repo.org, Marmalade}. To use additional package servers, customize the @code{package-archives} variable. Be aware that installing a package can run arbitrary code, so only add sources that you trust. @@ -3527,8 +3527,8 @@ GNU Emacs sources mailing list}, which is gatewayed to the connection between the two can be unreliable) is an official place where people can post or announce their extensions to Emacs. -The @uref{http://emacswiki.org, Emacs Wiki} contains pointers to some -additional extensions. @uref{http://wikemacs.org, WikEmacs} is an +The @uref{https://emacswiki.org, Emacs Wiki} contains pointers to some +additional extensions. @uref{https://wikemacs.org, WikEmacs} is an alternative wiki for Emacs. @uref{http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html, The Emacs From c97a5f1f44a6ae3eb7729d32aa53c9b27e899716 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 23 Oct 2018 21:46:01 -0400 Subject: [PATCH 059/567] * doc/misc/calc.texi (Summary): The +/- key is 'p', not 'P'. --- doc/misc/calc.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index fdec65a9a7f2..28dadc94c04d 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -35832,7 +35832,7 @@ keystrokes are not listed in this summary. @r{ @: _ @:number @: @:-@:number} @r{ @: e @:number @: @:@:1e number} @r{ @: # @:number @: @:@:current-radix@tfn{#}number} -@r{ @: P @:(in number) @: @:+/-@:} +@r{ @: p @:(in number) @: @:+/-@:} @r{ @: M @:(in number) @: @:mod@:} @r{ @: @@ ' " @: (in number)@: @:@:HMS form} @r{ @: h m s @: (in number)@: @:@:HMS form} From d72975a654e5effe86625126ba7f2923c8e2f9d2 Mon Sep 17 00:00:00 2001 From: Katsumi Yamaoka Date: Wed, 24 Oct 2018 10:09:51 +0000 Subject: [PATCH 060/567] * lisp/gnus/mm-util.el (mm-decompress-buffer): Fix split-string args. --- lisp/gnus/mm-util.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el index fcd97f2b27cd..91c5f0e90705 100644 --- a/lisp/gnus/mm-util.el +++ b/lisp/gnus/mm-util.el @@ -843,7 +843,8 @@ decompressed data. The buffer's multibyteness must be turned off." (prog2 (insert-file-contents err-file) (buffer-string) - (erase-buffer)) t) + (erase-buffer)) + nil t) " ") "\n") (setq err-msg From 7e8eee60a9dbb0c59cf26f237b21efe7fd1043c9 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Sun, 14 Oct 2018 19:12:00 +0100 Subject: [PATCH 061/567] Fix some NS drawing issues (bug#32932) * src/nsterm.m (ns_clip_to_rect): (ns_reset_clipping): Remove gsaved variable and associated code. (ns_flush_display): Remove function. (ns_copy_bits): use translateRectsNeedingDisplayInRect:by: to copy any pending drawing actions along with the image. ([EmacsView windowWillResize:toSize:]): Remove unneeded call. ([EmacsView drawRect:]): Remove redundant call to ns_clear_frame_area, and optimize the exposed rectangles. (ns_draw_window_cursor): Remove unneeded disabling of screen updates. --- src/nsterm.m | 80 ++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 43 deletions(-) diff --git a/src/nsterm.m b/src/nsterm.m index 8c355a89f8f1..4b5d025ee3cc 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -277,7 +277,6 @@ - (NSColor *)colorUsingDefaultColorSpace /* display update */ static int ns_window_num = 0; -static BOOL gsaved = NO; static BOOL ns_fake_keydown = NO; #ifdef NS_IMPL_COCOA static BOOL ns_menu_bar_is_hidden = NO; @@ -1180,7 +1179,6 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) NSRectClipList (r, 2); else NSRectClip (*r); - gsaved = YES; return YES; } @@ -1204,11 +1202,7 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) { NSTRACE_WHEN (NSTRACE_GROUP_FOCUS, "ns_reset_clipping"); - if (gsaved) - { - [[NSGraphicsContext currentContext] restoreGraphicsState]; - gsaved = NO; - } + [[NSGraphicsContext currentContext] restoreGraphicsState]; } @@ -1234,19 +1228,6 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) return ns_clip_to_rect (f, &clip_rect, 1); } - -static void -ns_flush_display (struct frame *f) -/* Force the frame to redisplay. If areas have previously been marked - dirty by setNeedsDisplayInRect (in ns_clip_to_rect), then this will call - draw_rect: which will "expose" those areas. */ -{ - block_input (); - [FRAME_NS_VIEW (f) displayIfNeeded]; - unblock_input (); -} - - /* ========================================================================== Visible bell and beep. @@ -2710,6 +2691,8 @@ so some key presses (TAB) are swallowed by the system. */ static void ns_copy_bits (struct frame *f, NSRect src, NSRect dest) { + NSSize delta = NSMakeSize (dest.origin.x - src.origin.x, + dest.origin.y - src.origin.y) NSTRACE ("ns_copy_bits"); if (FRAME_NS_VIEW (f)) @@ -2718,10 +2701,21 @@ so some key presses (TAB) are swallowed by the system. */ /* FIXME: scrollRect:by: is deprecated in macOS 10.14. There is no obvious replacement so we may have to come up with our own. */ - [FRAME_NS_VIEW (f) scrollRect: src - by: NSMakeSize (dest.origin.x - src.origin.x, - dest.origin.y - src.origin.y)]; - [FRAME_NS_VIEW (f) setNeedsDisplay:YES]; + [FRAME_NS_VIEW (f) scrollRect: src by: delta]; + +#ifdef NS_IMPL_COCOA + /* As far as I can tell from the documentation, scrollRect:by:, + above, should copy the dirty rectangles from our source + rectangle to our destination, however it appears it clips the + operation to src. As a result we need to use + translateRectsNeedingDisplayInRect:by: below, and we have to + union src and dest so it can pick up the dirty rectangles, + and place them, as it also clips to the rectangle. + + FIXME: We need a GNUstep equivalent. */ + [FRAME_NS_VIEW (f) translateRectsNeedingDisplayInRect:NSUnionRect (src, dest) + by:delta]; +#endif } } @@ -3106,15 +3100,6 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar cursors. else [FRAME_CURSOR_COLOR (f) set]; -#ifdef NS_IMPL_COCOA - /* TODO: This makes drawing of cursor plus that of phys_cursor_glyph - atomic. Cleaner ways of doing this should be investigated. - One way would be to set a global variable DRAWING_CURSOR - when making the call to draw_phys..(), don't focus in that - case, then move the ns_reset_clipping() here after that call. */ - NSDisableScreenUpdates (); -#endif - switch (cursor_type) { case DEFAULT_CURSOR: @@ -3148,10 +3133,6 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar cursors. /* draw the character under the cursor */ if (cursor_type != NO_CURSOR) draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR); - -#ifdef NS_IMPL_COCOA - NSEnableScreenUpdates (); -#endif } } @@ -4977,7 +4958,7 @@ static Lisp_Object ns_string_to_lispmod (const char *s) ns_after_update_window_line, ns_update_window_begin, ns_update_window_end, - ns_flush_display, /* flush_display */ + 0, /* flush_display */ x_clear_window_mouse_face, x_get_glyph_overhangs, x_fix_overlapping_area, @@ -7046,7 +7027,6 @@ - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize size_title = xmalloc (strlen (old_title) + 40); esprintf (size_title, "%s — (%d x %d)", old_title, cols, rows); [window setTitle: [NSString stringWithUTF8String: size_title]]; - [window display]; xfree (size_title); } } @@ -8095,8 +8075,8 @@ - (instancetype)toggleToolbar: (id)sender - (void)drawRect: (NSRect)rect { - int x = NSMinX (rect), y = NSMinY (rect); - int width = NSWidth (rect), height = NSHeight (rect); + const NSRect *rectList; + NSInteger numRects; NSTRACE ("[EmacsView drawRect:" NSTRACE_FMT_RECT "]", NSTRACE_ARG_RECT(rect)); @@ -8104,9 +8084,23 @@ - (void)drawRect: (NSRect)rect if (!emacsframe || !emacsframe->output_data.ns) return; - ns_clear_frame_area (emacsframe, x, y, width, height); block_input (); - expose_frame (emacsframe, x, y, width, height); + + /* Get only the precise dirty rectangles to avoid redrawing + potentially large areas of the frame that haven't changed. + + I'm not sure this actually provides much of a performance benefit + as it's hard to benchmark, but it certainly doesn't seem to + hurt. */ + [self getRectsBeingDrawn:&rectList count:&numRects]; + for (int i = 0 ; i < numRects ; i++) + { + NSRect r = rectList[i]; + expose_frame (emacsframe, + NSMinX (r), NSMinY (r), + NSWidth (r), NSHeight (r)); + } + unblock_input (); /* From 71a2d509f9d2350c6aacfeed24e1e9d8c7fdfebe Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Thu, 25 Oct 2018 10:55:53 +0200 Subject: [PATCH 062/567] Fix minibuffer-help-form for lexical binding * lisp/simple.el (set-variable): Substitute var into minibuffer-help-form. * lisp/cus-edit.el (custom-prompt-variable): Likewise. --- lisp/cus-edit.el | 2 +- lisp/simple.el | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 3ede483dade9..33efdd92539a 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -917,7 +917,7 @@ the current value of the variable, otherwise `symbol-value' is used. If optional COMMENT argument is non-nil, also prompt for a comment and return it as the third element in the list." (let* ((var (read-variable prompt-var)) - (minibuffer-help-form '(describe-variable var)) + (minibuffer-help-form `(describe-variable ',var)) (val (let ((prop (get var 'variable-interactive)) (type (get var 'custom-type)) diff --git a/lisp/simple.el b/lisp/simple.el index 8bbafe49d322..ba39a49a44ee 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -7930,7 +7930,7 @@ With a prefix argument, set VARIABLE to VALUE buffer-locally." (read-variable (format "Set variable (default %s): " default-var) default-var) (read-variable "Set variable: "))) - (minibuffer-help-form '(describe-variable var)) + (minibuffer-help-form `(describe-variable ',var)) (prop (get var 'variable-interactive)) (obsolete (car (get var 'byte-obsolete-variable))) (prompt (format "Set %s %s to value: " var From f3d01d465398afee11c584a559c6842f575f5a03 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 25 Oct 2018 17:57:34 +0300 Subject: [PATCH 063/567] Avoid infloop in CPerl mode fontification * lisp/progmodes/cperl-mode.el (cperl-font-lock-fontify-region-function): Stop the loop at EOB, to avoid inflooping there. (Bug#33114) --- lisp/progmodes/cperl-mode.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index 6dbdba75de60..b152b9c724d2 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -8884,7 +8884,7 @@ do extra unwind via `cperl-unwind-to-safe'." (goto-char new-beg))) (setq beg (point)) (goto-char end) - (while (and end + (while (and end (< end (point-max)) (progn (or (bolp) (condition-case nil (forward-line 1) From f5f95838bdac9a88ccc00886c6d59d9d5ac73647 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Wed, 24 Oct 2018 12:15:16 +0100 Subject: [PATCH 064/567] Improve XPM load failure message (bug#33126) * src/image.c (xpm_load_image): Only XPM3 is supported, so make that explicit. --- etc/PROBLEMS | 7 +++++++ src/image.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/etc/PROBLEMS b/etc/PROBLEMS index 7dfafe04deb1..29f87e2eaf56 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -2616,6 +2616,13 @@ please call support for your X-server and see if you can get a fix. If you do, please send it to bug-gnu-emacs@gnu.org so we can list it here. +* Runtime problems specific to macOS + +** macOS doesn't come with libxpm, so only XPM3 is supported. + +Libxpm is available for macOS as part of the XQuartz project. + + * Build-time problems ** Configuration diff --git a/src/image.c b/src/image.c index 767979e63bd2..a6b2d9060b10 100644 --- a/src/image.c +++ b/src/image.c @@ -4308,7 +4308,7 @@ xpm_load_image (struct frame *f, return 1; failure: - image_error ("Invalid XPM file (%s)", img->spec); + image_error ("Invalid XPM3 file (%s)", img->spec); x_destroy_x_image (ximg); x_destroy_x_image (mask_img); x_clear_image (f, img); From 6ca71ceb687d238f6bdfd483e32b5c6d54bf6d1a Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Thu, 25 Oct 2018 20:40:49 +0200 Subject: [PATCH 065/567] ; * lisp/help.el (with-help-window): Remove extra space in doc. --- lisp/help.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/help.el b/lisp/help.el index 77e328483185..f49621439477 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -1377,7 +1377,7 @@ puts the buffer specified by BUFFER-OR-NAME in `help-mode' and displays a message about how to delete the help window when it's no longer needed. The help window will be selected if `help-window-select' is non-nil. -Most of this is done by `help-window-setup', which see." +Most of this is done by `help-window-setup', which see." (declare (indent 1) (debug t)) `(progn ;; Make `help-window-point-marker' point nowhere. The only place From c3adbc88a00f2c8fa773d46bfcf4571c9ebde8fb Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Thu, 25 Oct 2018 21:01:53 +0200 Subject: [PATCH 066/567] Improve 'isearch-delete-char' documentation (Bug#32990) * doc/emacs/search.texi (Basic Isearch): Index 'isearch-delete-char', its keybinding and the isearch "input item" concept, and define the latter. (Error in Isearch): Clarify the different uses of DEL and C-M-w during isearch. * lisp/isearch.el (isearch-delete-char): Correct its documentation and link to the Info node '(emacs)Basic Isearch' which explains less technically how this function works in everyday usage. --- doc/emacs/search.texi | 33 +++++++++++++++++++++------------ lisp/isearch.el | 13 ++++++++----- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 053603e54fc1..58a76580d76b 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -99,10 +99,18 @@ text that matches the search string---using the @code{isearch} face that customize this highlighting. The current search string is also displayed in the echo area. - If you make a mistake typing the search string, type @key{DEL}. -Each @key{DEL} cancels the last character of the search string. -@xref{Error in Isearch}, for more about dealing with unsuccessful -search. +@cindex isearch input item +@cindex input item, isearch +@findex isearch-delete-char +@kindex DEL @r{(Incremental search)} + If you make a mistake typing the search string, type @key{DEL} +(@code{isearch-delete-char}). Each @key{DEL} cancels the last input +item entered during the search. Emacs records a new @dfn{input item} +whenever you type a command that changes the search string, the +position of point, the success or failure of the search, the direction +of the search, the position of the other end of the current search +result, or the ``wrappedness'' of the search. @xref{Error in +Isearch}, for more about dealing with unsuccessful search. @cindex exit incremental search @cindex incremental search, exiting @@ -283,14 +291,15 @@ string that failed to match is highlighted using the face @code{isearch-fail}. At this point, there are several things you can do. If your string -was mistyped, you can use @key{DEL} to erase some of it and correct -it, or you can type @kbd{M-e} and edit it. If you like the place you -have found, you can type @key{RET} to remain there. Or you can type -@kbd{C-g}, which removes from the search string the characters that -could not be found (the @samp{T} in @samp{FOOT}), leaving those that -were found (the @samp{FOO} in @samp{FOOT}). A second @kbd{C-g} at -that point cancels the search entirely, returning point to where it -was when the search started. +was mistyped, use @key{DEL} to cancel a previous input item +(@pxref{Basic Isearch}), @kbd{C-M-w} to erase one character at a time, +or @kbd{M-e} to edit it. If you like the place you have found, you +can type @key{RET} to remain there. Or you can type @kbd{C-g}, which +removes from the search string the characters that could not be found +(the @samp{T} in @samp{FOOT}), leaving those that were found (the +@samp{FOO} in @samp{FOOT}). A second @kbd{C-g} at that point cancels +the search entirely, returning point to where it was when the search +started. @cindex quitting (in search) @kindex C-g @r{(Incremental search)} diff --git a/lisp/isearch.el b/lisp/isearch.el index 31571e11cd56..b180e63d8e80 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -1956,11 +1956,14 @@ and reads its face argument using `hi-lock-read-face-name'." (defun isearch-delete-char () - "Discard last input item and move point back. -Last input means the last character or the last isearch command -that added or deleted characters from the search string, -moved point, toggled regexp mode or case-sensitivity, etc. -If no previous match was done, just beep." + "Undo last input item during a search. + +An input item is the result of a command that pushes a new state +of isearch (as recorded by the `isearch--state' structure) to +`isearch-cmds'. Info node `(emacs)Basic Isearch' explains when +Emacs records a new input item. + +If no input items have been entered yet, just beep." (interactive) (if (null (cdr isearch-cmds)) (ding) From 92de44fa1fdeda74a9b8254f968829df4c957da0 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 17 Mar 2018 21:14:11 -0400 Subject: [PATCH 067/567] Don't error when indenting malformed Lisp (Bug#30891) * lisp/emacs-lisp/lisp-mode.el (lisp-indent-calc-next): If we run out of indent stack, reset the parse state. --- lisp/emacs-lisp/lisp-mode.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 205c810b978a..13ad06e4aee8 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -827,6 +827,10 @@ by more than one line to cross a string literal." (prog1 (let (indent) (cond ((= (forward-line 1) 1) nil) + ;; Negative depth, probably some kind of syntax error. + ((null indent-stack) + ;; Reset state. + (setq ppss (parse-partial-sexp (point) (point)))) ((car indent-stack)) ((integerp (setq indent (calculate-lisp-indent ppss))) (setf (car indent-stack) indent)) From 8361292fec233ac59a04743bddff6b89a3460f65 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 27 Oct 2018 09:21:53 +0200 Subject: [PATCH 068/567] ; Fix sorting in admin/MAINTAINERS --- admin/MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS index 1a4157ac53e7..cbf84d55df50 100644 --- a/admin/MAINTAINERS +++ b/admin/MAINTAINERS @@ -210,8 +210,8 @@ Paul Eggert Michael Albinus src/inotify.c lisp/autorevert.el - lisp/files.el (file-name-non-special) lisp/eshell/em-tramp.el + lisp/files.el (file-name-non-special) lisp/net/ange-ftp.el lisp/notifications.el lisp/shadowfile.el From 13132b39932af0139451b9cd77a313c7a023b18e Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 27 Oct 2018 09:22:18 +0200 Subject: [PATCH 069/567] * lisp/net/tramp-sh.el (tramp-inline-compress-commands): Suppress warnings about obsolete environment variable GZIP. --- lisp/net/tramp-sh.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 3f83697c6bf0..c304fcb7aa36 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -4436,7 +4436,8 @@ means discard it)." (if (stringp output) (concat " >" output) "")))) (defconst tramp-inline-compress-commands - '(("gzip" "gzip -d") + '(;; Suppress warnings about obsolete environment variable GZIP. + ("env GZIP= gzip" "env GZIP= gzip -d") ("bzip2" "bzip2 -d") ("xz" "xz -d") ("compress" "compress -d")) From fc2e65ae82d70bb343a7f8b3165f238c13c4e587 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2018 11:24:53 +0300 Subject: [PATCH 070/567] Improve documentation of X resource loading * doc/emacs/cmdargs.texi (Initial Options): * doc/emacs/frames.texi (Frame Parameters): * doc/emacs/xresources.texi (Resources): Document the '--no-x-resources' command-line option and the fact that X resources override .emacs settings of frame parameters. (Bug#32975) --- doc/emacs/cmdargs.texi | 14 ++++++++++---- doc/emacs/frames.texi | 4 ++++ doc/emacs/xresources.texi | 5 +++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index 733919a374a1..f0dd9fffa8c9 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -323,14 +323,20 @@ Do not display a startup screen. You can also achieve this effect by setting the variable @code{inhibit-startup-screen} to non-@code{nil} in your initialization file (@pxref{Entering Emacs}). +@item --no-x-resources +@opindex --no-x-resources +@cindex X resources, not loading +Do not load X resources. You can also achieve this effect by setting +the variable @code{inhibit-x-resources} to @code{t} in your +initialization file (@pxref{Resources}). + @item -Q @opindex -Q @itemx --quick @opindex --quick -Start Emacs with minimum customizations. This is similar to using @samp{-q}, -@samp{--no-site-file}, @samp{--no-site-lisp}, and @samp{--no-splash} -together. This also stops Emacs from processing X resources by -setting @code{inhibit-x-resources} to @code{t} (@pxref{Resources}). +Start Emacs with minimum customizations. This is similar to using +@samp{-q}, @samp{--no-site-file}, @samp{--no-site-lisp}, +@samp{--no-x-resources}, and @samp{--no-splash} together.. @item -daemon @opindex -daemon diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index 9f4c7821e983..6bbaae24b177 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -934,6 +934,10 @@ the initial frame, by customizing the variable specify colors and fonts don't affect menus and the menu bar, since those are drawn by the toolkit and not directly by Emacs. + Frame appearance and behavior can also be customized through X +resources (@pxref{X Resources}); these override the parameters of the +initial frame specified in your init file. + Note that if you are using the desktop library to save and restore your sessions, the frames to be restored are recorded in the desktop file, together with their parameters. When these frames are restored, diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi index db2c6ffafd28..903090f51a9f 100644 --- a/doc/emacs/xresources.texi +++ b/doc/emacs/xresources.texi @@ -46,6 +46,11 @@ this file do not take effect immediately, because the X server stores its own list of resources; to update it, use the command @command{xrdb}---for instance, @samp{xrdb ~/.Xdefaults}. + Settings specified via X resources in general override the +equivalent settings in Emacs init files (@pxref{Init File}), in +particular for parameters of the initial frame (@pxref{Frame +Parameters}). + @cindex registry, setting resources (MS-Windows) (MS-Windows systems do not support X resource files; on such systems, Emacs looks for X resources in the Windows Registry, first under the From 53ae90f4930f20f1dbe7e1e64ed585a45e9c169c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2018 11:40:33 +0300 Subject: [PATCH 071/567] Minor copyedits in cmdargs.texi * doc/emacs/cmdargs.texi (Initial Options): Document '-nsl'. Add a cross-reference to "Writing Dynamic Modules". --- doc/emacs/cmdargs.texi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index f0dd9fffa8c9..2e2767ccada5 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -305,6 +305,8 @@ not disable loading @file{site-start.el}. @item --no-site-file @opindex --no-site-file +@itemx -nsl +@opindex -nsl @cindex @file{site-start.el} file, not loading Do not load @file{site-start.el} (@pxref{Init File}). The @samp{-Q} option does this too, but other options like @samp{-q} do not. @@ -379,6 +381,8 @@ Enable expensive correctness checks when dealing with dynamically loadable modules. This is intended for module authors that wish to verify that their module conforms to the module API requirements. The option makes Emacs abort if a module-related assertion triggers. +@xref{Writing Dynamic Modules,, Writing Dynamically-Loaded Modules, +elisp, The GNU Emacs Lisp Reference Manual}. @end table @node Command Example From 29a76443c9dccb33c9eb59b3cee323557a4254be Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Thu, 18 Oct 2018 11:32:47 -0700 Subject: [PATCH 072/567] Deactivate incorrect hyperlinking in gnus-build-sparse-threads doc * lisp/gnus/gnus-sum.el (gnus-build-sparse-threads): Add the word "symbol" so it doesn't link to the `some' function. (Bug#33090) --- lisp/gnus/gnus-sum.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index a39af45e92e7..2391bd497cef 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -203,9 +203,10 @@ Useful functions to put in this list include: (defcustom gnus-build-sparse-threads nil "If non-nil, fill in the gaps in threads. -If `some', only fill in the gaps that are needed to tie loose threads -together. If `more', fill in all leaf nodes that Gnus can find. If -non-nil and non-`some', fill in all gaps that Gnus manages to guess." +If set to the symbol `some', only fill in the gaps that are +needed to tie loose threads together. If the symbol `more', fill +in all leaf nodes that Gnus can find. If t (or any other value), +fill in all gaps that Gnus manages to guess." :group 'gnus-thread :type '(choice (const :tag "off" nil) (const some) From 2a416161b2dd33018a01511ac475e8ede4555ed8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2018 12:14:35 +0300 Subject: [PATCH 073/567] Doc fix of 'gnus-fetch-old-headers' * lisp/gnus/gnus-sum.el (gnus-fetch-old-headers): Avoid treating 'some' and 'invisible' as symbols that need to be hyperlinked. Reported by Robert Pluim . (Bug#33090) --- lisp/gnus/gnus-sum.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 2391bd497cef..c101130ef4c2 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -83,12 +83,12 @@ If an unread article in the group refers to an older, already read (or just marked as read) article, the old article will not normally be displayed in the Summary buffer. If this variable is t, Gnus will attempt to grab the headers to the old articles, and -thereby build complete threads. If it has the value `some', all -old headers will be fetched but only enough headers to connect +thereby build complete threads. If the value is the symbol `some', +all old headers will be fetched but only enough headers to connect otherwise loose threads will be displayed. This variable can also be a number. In that case, no more than that number of old -headers will be fetched. If it has the value `invisible', all -old headers will be fetched, but none will be displayed. +headers will be fetched. If the value is the symbol `invisible', +all old headers will be fetched, but none will be displayed. The server has to support NOV for any of this to work. From 106b9e138fff3a68cbfa09422441af74cdd0355a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20T=C3=A9choueyres?= Date: Sun, 14 Oct 2018 17:49:12 +0200 Subject: [PATCH 074/567] Unify prompt for gnupg passphrase between GNU/Linux and MS-Windows. * lisp/epg.el (epg--start): Use 'raw-text' for coding system instead of 'binary', in order to avoid spurious carriage return on Microsoft Windows and MS-DOS when prompting for a password. (Bug#33040) --- lisp/epg.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/epg.el b/lisp/epg.el index dc0e2df58386..87b51b284ea2 100644 --- a/lisp/epg.el +++ b/lisp/epg.el @@ -657,7 +657,7 @@ callback data (if any)." :command (cons (epg-context-program context) args) :connection-type 'pipe - :coding '(binary . binary) + :coding 'raw-text :filter #'epg--process-filter :stderr error-process :noquery t))) From 9193db08dea945eb18790f9f9381b9e6317f13fd Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2018 13:18:33 +0300 Subject: [PATCH 075/567] Improve documentation of 'process-connection-type' * doc/lispref/processes.texi (Asynchronous Processes): Clarify better when it is advisable to use pipes for communicating with subprocesses. (Bug#33050) --- doc/lispref/processes.texi | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 34426f339c6f..0868912b1453 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -590,8 +590,8 @@ communication is only partially asynchronous: Emacs sends data to the process only when certain functions are called, and Emacs accepts data from the process only while waiting for input or for a time delay. -@cindex pty -@cindex pipe +@cindex pty, when to use for subprocess communications +@cindex pipe, when to use for subprocess communications An asynchronous process is controlled either via a @dfn{pty} (pseudo-terminal) or a @dfn{pipe}. The choice of pty or pipe is made when creating the process, by default based on the value of the @@ -601,11 +601,13 @@ Shell mode, because they allow for job control (@kbd{C-c}, @kbd{C-z}, etc.)@: between the process and its children, and because interactive programs treat ptys as terminal devices, whereas pipes don't support these features. However, for subprocesses used by Lisp programs for -internal purposes, it is often better to use a pipe, because pipes are +internal purposes (i.e., with no user interaction), where significant +amounts of data need to be exchanged between the subprocess and the +Lisp program, it is often better to use a pipe, because pipes are more efficient, and because they are immune to stray character injections that ptys introduce for large (around 500 byte) messages. -Also, the total number of ptys is limited on many systems and it is -good not to waste them. +Also, the total number of ptys is limited on many systems, and it is +good not to waste them unnecessarily. @defun make-process &rest args This function is the basic low-level primitive for starting @@ -658,7 +660,9 @@ pipe, or @code{nil} to use the default derived from the value of the @code{process-connection-type} variable. This parameter and the value of @code{process-connection-type} are ignored if a non-@code{nil} value is specified for the @code{:stderr} parameter; in that case, the -type will always be @code{pipe}. +type will always be @code{pipe}. On systems where ptys are not +available (MS-Windows), this parameter is likewise ignored, and pipes +are used unconditionally. @item :noquery @var{query-flag} Initialize the process query flag to @var{query-flag}. @@ -863,7 +867,8 @@ around the call to these functions. Note that the value of this variable is ignored when @code{make-process} is called with a non-@code{nil} value of the @code{:stderr} parameter; in that case, Emacs will communicate with -the process using pipes. +the process using pipes. It is also ignored if ptys are unavailable +(MS-Windows). @smallexample @group From 520c486d8bc802cbc31da4455c67af4b8bb01d7b Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2018 13:50:34 +0300 Subject: [PATCH 076/567] * lisp/simple.el (region-bounds): Doc fix. (Bug#33168) --- lisp/simple.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index ba39a49a44ee..0e5dadc81f55 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -5489,8 +5489,10 @@ also checks the value of `use-empty-active-region'." (progn (cl-assert (mark)) t))) (defun region-bounds () - "Return the boundaries of the region as a pair of positions. -Value is a list of cons cells of the form (START . END)." + "Return the boundaries of the region. +Value is a list of one or more cons cells of the form (START . END). +It will have more than one cons cell when the region is non-contiguous, +see `region-noncontiguous-p' and `extract-rectangle-bounds'." (funcall region-extract-function 'bounds)) (defun region-noncontiguous-p () From df64da8eb845c9f07ee93bfbf28af41a01a2e83f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2018 14:08:40 +0300 Subject: [PATCH 077/567] * lisp/simple.el (region-extract-function): Doc fix. (Bug#33167) --- lisp/simple.el | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index 0e5dadc81f55..29bb9cbcfb9f 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -1011,13 +1011,16 @@ instead of deleted." (filter-buffer-substring (region-beginning) (region-end) method))))) "Function to get the region's content. Called with one argument METHOD which can be: -- nil: return the content as a string. +- nil: return the content as a string (list of strings for + non-contiguous regions). - `delete-only': delete the region; the return value is undefined. -- `bounds': return the boundaries of the region as a list of cons - cells of the form (START . END). +- `bounds': return the boundaries of the region as a list of one + or more cons cells of the form (START . END). - anything else: delete the region and return its content - as a string, after filtering it with `filter-buffer-substring', which - is called with METHOD as its 3rd argument.") + as a string (or list of strings for non-contiguous regions), + after filtering it with `filter-buffer-substring', which + is called, for each contiguous sub-region, with METHOD as its + 3rd argument.") (defvar region-insert-function (lambda (lines) From d192c1671cbebb191165169c7add0ade6721e00e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2018 21:47:59 +0300 Subject: [PATCH 078/567] Fix recent change in lispref/processes.texi. * doc/lispref/processes.texi (Asynchronous Processes): Clarify wording. Suggested by Thomas Fitzsimmons . (Bug#33050) --- doc/lispref/processes.texi | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 0868912b1453..e7d61bd5faa0 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -601,13 +601,13 @@ Shell mode, because they allow for job control (@kbd{C-c}, @kbd{C-z}, etc.)@: between the process and its children, and because interactive programs treat ptys as terminal devices, whereas pipes don't support these features. However, for subprocesses used by Lisp programs for -internal purposes (i.e., with no user interaction), where significant -amounts of data need to be exchanged between the subprocess and the -Lisp program, it is often better to use a pipe, because pipes are -more efficient, and because they are immune to stray character -injections that ptys introduce for large (around 500 byte) messages. -Also, the total number of ptys is limited on many systems, and it is -good not to waste them unnecessarily. +internal purposes (i.e., no user interaction with the subprocess is +required), where significant amounts of data need to be exchanged +between the subprocess and the Lisp program, it is often better to use +a pipe, because pipes are more efficient, and because they are immune +to stray character injections that ptys introduce for large (around +500 byte) messages. Also, the total number of ptys is limited on many +systems, and it is good not to waste them unnecessarily. @defun make-process &rest args This function is the basic low-level primitive for starting From de2818432acacea4eec35d5a92f240856de7b765 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 27 Oct 2018 15:27:45 -0400 Subject: [PATCH 079/567] * lisp/simple.el (filter-buffer-substring): Clarify doc (Bug#33179). --- lisp/simple.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/simple.el b/lisp/simple.el index 29bb9cbcfb9f..08f622ad8e01 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4232,7 +4232,7 @@ unless a hook has been set. Use `filter-buffer-substring' instead of `buffer-substring', `buffer-substring-no-properties', or `delete-and-extract-region' when you want to allow filtering to take place. For example, major or minor -modes can use `filter-buffer-substring-function' to extract characters +modes can use `filter-buffer-substring-function' to exclude text properties that are special to a buffer, and should not be copied into other buffers." (funcall filter-buffer-substring-function beg end delete)) From 10e0fd8ca955070682d5f09231a7a386ef185fa5 Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Sun, 28 Oct 2018 18:07:01 +0100 Subject: [PATCH 080/567] Add index entries for more isearch commands/bindings (Bug#32990) * doc/emacs/search.texi (Basic Isearch): Index isearch-exit, isearch-abort, isearch-cancel, isearch-repeat-forward, isearch-repeat-backward and their bindings. (Repeat Isearch): Index isearch-ring-advance, isearch-ring-retreat and isearch-edit-string. (Special Isearch): Index isearch-quote-char, isearch-char-by-name and their bindings. Index isearch-query-replace and isearch-query-replace-regexp, and the latter's binding. Explain what isearch-query-replace-regexp does. Index isearch-complete. (Word Search): Index isearch-toggle-word. --- doc/emacs/search.texi | 117 ++++++++++++++++++++++++++---------------- 1 file changed, 74 insertions(+), 43 deletions(-) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 58a76580d76b..33aa0dd1c7b4 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -114,24 +114,30 @@ Isearch}, for more about dealing with unsuccessful search. @cindex exit incremental search @cindex incremental search, exiting +@findex isearch-exit +@kindex RET @r{(Incremental search)} When you are satisfied with the place you have reached, type -@key{RET}. This stops searching, leaving the cursor where the search -brought it. Also, any command not specially meaningful in searches -stops the searching and is then executed. Thus, typing @kbd{C-a} -exits the search and then moves to the beginning of the line; typing -one of the arrow keys exits the search and performs the respective -movement command; etc. @key{RET} is necessary only if the next -command you want to type is a printing character, @key{DEL}, -@key{RET}, or another character that is special within searches -(@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s}, @kbd{C-y}, @kbd{M-y}, -@kbd{M-r}, @kbd{M-c}, @kbd{M-e}, and some others described below). -You can fine-tune the commands that exit the search; see @ref{Not -Exiting Isearch}. +@key{RET} (@code{isearch-exit}). This stops searching, leaving the +cursor where the search brought it. Also, any command not specially +meaningful in searches stops the searching and is then executed. +Thus, typing @kbd{C-a} exits the search and then moves to the +beginning of the line; typing one of the arrow keys exits the search +and performs the respective movement command; etc. @key{RET} is +necessary only if the next command you want to type is a printing +character, @key{DEL}, @key{RET}, or another character that is special +within searches (@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s}, +@kbd{C-y}, @kbd{M-y}, @kbd{M-r}, @kbd{M-c}, @kbd{M-e}, and some others +described below). You can fine-tune the commands that exit the +search; see @ref{Not Exiting Isearch}. As a special exception, entering @key{RET} when the search string is empty launches nonincremental search (@pxref{Nonincremental Search}). (This can be customized; see @ref{Search Customizations}.) +@findex isearch-abort +@findex isearch-cancel +@kindex C-g C-g @r{(Incremental Search)} +@kindex ESC ESC ESC @r{(Incremental Search)} To abandon the search and return to the place where you started, type @kbd{@key{ESC} @key{ESC} @key{ESC}} (@code{isearch-cancel}) or @kbd{C-g C-g} (@code{isearch-abort}). @@ -154,13 +160,18 @@ matches that begin after it. @node Repeat Isearch @subsection Repeating Incremental Search +@kindex C-s @r{(Incremental Search)} +@kindex C-r @r{(Incremental Search)} +@findex isearch-repeat-forward +@findex isearch-repeat-backward Suppose you search forward for @samp{FOO} and find a match, but not the one you expected to find: the @samp{FOO} you were aiming for -occurs later in the buffer. In this event, type another @kbd{C-s} to -move to the next occurrence of the search string. You can repeat this -any number of times. If you overshoot, you can cancel some @kbd{C-s} -characters with @key{DEL}. Similarly, each @kbd{C-r} in a backward -incremental search repeats the backward search. +occurs later in the buffer. In this event, type another @kbd{C-s} +(@code{isearch-repeat-forward}) to move to the next occurrence of the +search string. You can repeat this any number of times. If you +overshoot, you can cancel some @kbd{C-s} commands with @key{DEL}. +Similarly, each @kbd{C-r} (@code{isearch-repeat-backward}) in a +backward incremental search repeats the backward search. @cindex lazy search highlighting If you pause for a little while during incremental search, Emacs @@ -200,12 +211,15 @@ going past the original starting point of the search, it changes to you have already seen. @cindex search ring +@findex isearch-ring-advance +@findex isearch-ring-retreat @kindex M-n @r{(Incremental search)} @kindex M-p @r{(Incremental search)} @vindex search-ring-max To reuse earlier search strings, use the @dfn{search ring}. The -commands @kbd{M-p} and @kbd{M-n} move through the ring to pick a -search string to reuse. These commands leave the selected search ring +commands @kbd{M-p} (@code{isearch-ring-retreat}) and @kbd{M-n} +(@code{isearch-ring-advance}) move through the ring to pick a search +string to reuse. These commands leave the selected search ring element in the minibuffer, where you can edit it. Type @kbd{C-s}/@kbd{C-r} or @key{RET} to accept the string and start searching for it. The number of most recently used search strings @@ -214,14 +228,16 @@ saved in the search ring is specified by the variable @cindex incremental search, edit search string @cindex interactively edit search string +@findex isearch-edit-string @kindex M-e @r{(Incremental search)} @kindex mouse-1 @r{in the minibuffer (Incremental Search)} To edit the current search string in the minibuffer without -replacing it with items from the search ring, type @kbd{M-e} or click -@kbd{mouse-1} in the minibuffer. Type @key{RET}, @kbd{C-s} or -@kbd{C-r} to finish editing the string and search for it. Type -@kbd{C-f} or @kbd{@key{RIGHT}} to add to the search string characters -following point from the buffer from which you started the search. +replacing it with items from the search ring, type @kbd{M-e} +(@code{isearch-edit-string}) or click @kbd{mouse-1} in the minibuffer. +Type @key{RET}, @kbd{C-s} or @kbd{C-r} to finish editing the string +and search for it. Type @kbd{C-f} or @kbd{@key{RIGHT}} to add to the +search string characters following point from the buffer from which +you started the search. @node Isearch Yank @subsection Isearch Yanking @@ -357,17 +373,22 @@ following methods: @itemize @bullet @item -Type @kbd{C-q}, followed by a non-graphic character or a sequence of -octal digits. This adds a character to the search string, similar to -inserting into a buffer using @kbd{C-q} (@pxref{Inserting Text}). For -example, @kbd{C-q C-s} during incremental search adds the -@samp{control-S} character to the search string. +@findex isearch-quote-char +@kindex C-q @r{(Incremental Search)} +Type @kbd{C-q} (@code{isearch-quote-char}), followed by a non-graphic +character or a sequence of octal digits. This adds a character to the +search string, similar to inserting into a buffer using @kbd{C-q} +(@pxref{Inserting Text}). For example, @kbd{C-q C-s} during +incremental search adds the @samp{control-S} character to the search +string. @item -Type @kbd{C-x 8 @key{RET}}, followed by a Unicode name or code-point -in hex. This adds the specified character into the search string, -similar to the usual @code{insert-char} command (@pxref{Inserting -Text}). +@findex isearch-char-by-name +@kindex C-x 8 RET @r{(Incremental Search)} +Type @kbd{C-x 8 @key{RET}} (@code{isearch-char-by-name}), followed by +a Unicode name or code-point in hex. This adds the specified +character into the search string, similar to the usual +@code{insert-char} command (@pxref{Inserting Text}). @item @kindex C-^ @r{(Incremental Search)} @@ -400,12 +421,20 @@ current buffer afterwards. @code{isearch-occur}, which runs @code{occur} with the current search string. @xref{Other Repeating Search, occur}. +@findex isearch-query-replace +@findex isearch-query-replace-regexp @kindex M-% @r{(Incremental search)} - Typing @kbd{M-%} in incremental search invokes @code{query-replace} -or @code{query-replace-regexp} (depending on search mode) with the -current search string used as the string to replace. A negative -prefix argument means to replace backward. @xref{Query Replace}. - +@kindex C-M-% @r{(Incremental search)} + Typing @kbd{M-%} (@code{isearch-query-replace}) in incremental +search invokes @code{query-replace} or @code{query-replace-regexp} +(depending on search mode) with the current search string used as the +string to replace. A negative prefix argument means to replace +backward. @xref{Query Replace}. Typing @kbd{C-M-%} +(@code{isearch-query-replace-regexp}) invokes +@code{query-replace-regexp} with the current search string used as the +regexp to replace. + +@findex isearch-complete @kindex M-TAB @r{(Incremental search)} Typing @kbd{M-@key{TAB}} in incremental search invokes @code{isearch-complete}, which attempts to complete the search string @@ -599,15 +628,17 @@ Search backward for @var{words}, using a nonincremental word search. Search the Web for the text in region. @end table -@kindex M-s w @findex isearch-forward-word +@findex isearch-toggle-word +@kindex M-s w To begin a forward incremental word search, type @kbd{M-s w}. If incremental search is not already active, this runs the command @code{isearch-forward-word}. If incremental search is already active -(whether a forward or backward search), @kbd{M-s w} switches to a word -search while keeping the direction of the search and the current -search string unchanged. You can toggle word search back off by -typing @kbd{M-s w} again. +(whether a forward or backward search), @kbd{M-s w} runs the command +@code{isearch-toggle-word}, which switches to a word search while +keeping the direction of the search and the current search string +unchanged. You can toggle word search back off by typing @kbd{M-s w} +again. @findex word-search-forward @findex word-search-backward From 5aeddfac2a55824f700c8913536d665e23afd73d Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Sun, 28 Oct 2018 20:29:45 +0100 Subject: [PATCH 081/567] * lisp/mail/rmailsum.el (rmail-summary-output): Add lost word to doc. --- lisp/mail/rmailsum.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el index 692f67b87d2a..667b72b1b342 100644 --- a/lisp/mail/rmailsum.el +++ b/lisp/mail/rmailsum.el @@ -1692,7 +1692,7 @@ Deleted messages are skipped and don't count. When called from Lisp code, N may be omitted and defaults to 1. This command always outputs the complete message header, -even the header display is currently pruned." +even if the header display is currently pruned." (interactive (progn (require 'rmailout) (list (rmail-output-read-file-name) From 38f88a7f00c654a1710b1156150e93e298a0e217 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 30 Oct 2018 12:14:19 +0200 Subject: [PATCH 082/567] Document that generic functions cannot be commands * doc/lispref/commands.texi (Defining Commands): * doc/lispref/functions.texi (Generic Functions): Document that generic functions cannot be turned into commands. (Bug#33170) --- doc/lispref/commands.texi | 3 +++ doc/lispref/functions.texi | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index 49c839a89714..427379bc79c6 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@ -136,6 +136,9 @@ start with a capital, e.g., @code{"use (system-name) instead."}); @code{t}; any other symbol, which should be an alternative function to use in Lisp code. +Generic functions (@pxref{Generic Functions}) cannot be turned into +commands by adding the @code{interactive} form to them. + @menu * Using Interactive:: General rules for @code{interactive}. * Interactive Codes:: The standard letter-codes for reading arguments diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index 9b8057080ea3..242d754dea90 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -1345,6 +1345,13 @@ to invoke the other auxiliary or primary methods. This allows you to add more methods, distinguished by @var{string}, for the same specializers and qualifiers. @end table + +Functions defined using @code{cl-defmethod} cannot be made +interactive, i.e.@: commands (@pxref{Defining Commands}), by adding +the @code{interactive} form to them. If you need a polymorphic +command, we recommend defining a normal command that calls a +polymorphic function defined via @code{cl-defgeneric} and +@code{cl-defmethod}. @end defmac @cindex dispatch of methods for generic function From ced58d3e15ae4c085b8246bbf0ef9f1a9b39c456 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 30 Oct 2018 13:08:28 +0200 Subject: [PATCH 083/567] Improve doc string of 'call-process' * src/callproc.c (Fcall_process): Clarify DESTINATION in the doc string. --- src/callproc.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/callproc.c b/src/callproc.c index 973f324139c7..8f1da2fd7a58 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -221,15 +221,20 @@ DEFUN ("call-process", Fcall_process, Scall_process, 1, MANY, 0, doc: /* Call PROGRAM synchronously in separate process. The remaining arguments are optional. The program's input comes from file INFILE (nil means `/dev/null'). -Insert output in DESTINATION before point; t means current buffer; nil for DESTINATION - means discard it; 0 means discard and don't wait; and `(:file FILE)', where - FILE is a file name string, means that it should be written to that file - (if the file already exists it is overwritten). + +Third argument DESTINATION specifies how to handle program's output. +If DESTINATION is a buffer, or t that stands for the current buffer, + it means insert output in that buffer before point. +If DESTINATION is nil, it means discard output; 0 means discard + and don't wait for the program to terminate. +If DESTINATION is `(:file FILE)', where FILE is a file name string, + it means that output should be written to that file (if the file + already exists it is overwritten). DESTINATION can also have the form (REAL-BUFFER STDERR-FILE); in that case, -REAL-BUFFER says what to do with standard output, as above, -while STDERR-FILE says what to do with standard error in the child. -STDERR-FILE may be nil (discard standard error output), -t (mix it with ordinary output), or a file name string. + REAL-BUFFER says what to do with standard output, as above, + while STDERR-FILE says what to do with standard error in the child. + STDERR-FILE may be nil (discard standard error output), + t (mix it with ordinary output), or a file name string. Fourth arg DISPLAY non-nil means redisplay buffer as output is inserted. Remaining arguments are strings passed as command arguments to PROGRAM. From 86abbb3cb8490f73eb00023cf1c9ea7b5a8fffaf Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 30 Oct 2018 19:25:14 +0200 Subject: [PATCH 084/567] * lisp/emacs-lisp/rx.el (rx): Fix typo in doc string. (Bug#33205) --- lisp/emacs-lisp/rx.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el index 5fa0eaf194f2..de0a9276a815 100644 --- a/lisp/emacs-lisp/rx.el +++ b/lisp/emacs-lisp/rx.el @@ -1058,7 +1058,7 @@ CHAR `chinese-two-byte' (\\cC) `greek-two-byte' (\\cG) `japanese-hiragana-two-byte' (\\cH) - `indian-tow-byte' (\\cI) + `indian-two-byte' (\\cI) `japanese-katakana-two-byte' (\\cK) `korean-hangul-two-byte' (\\cN) `cyrillic-two-byte' (\\cY) From eb903d8f20ab0c31daa27a08b0acfd30115c7b5e Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 30 Oct 2018 14:24:31 -0400 Subject: [PATCH 085/567] * lisp/emacs-lisp/pcase.el: Improve docstrings. --- lisp/emacs-lisp/pcase.el | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el index fa7b1de8b4df..2e89ae0779aa 100644 --- a/lisp/emacs-lisp/pcase.el +++ b/lisp/emacs-lisp/pcase.el @@ -266,7 +266,8 @@ variable name being but a special case of it)." (defmacro pcase-let* (bindings &rest body) "Like `let*' but where you can use `pcase' patterns for bindings. BODY should be an expression, and BINDINGS should be a list of bindings -of the form (PAT EXP)." +of the form (PATTERN EXP). +See `pcase-let' for discussion of how PATTERN is matched." (declare (indent 1) (debug ((&rest (pcase-PAT &optional form)) body))) (let ((cached (gethash bindings pcase--memoize))) @@ -281,10 +282,11 @@ of the form (PAT EXP)." (defmacro pcase-let (bindings &rest body) "Like `let' but where you can use `pcase' patterns for bindings. BODY should be a list of expressions, and BINDINGS should be a list of bindings -of the form (PAT EXP). -The macro is expanded and optimized under the assumption that those -patterns *will* match, so a mismatch may go undetected or may cause -any kind of error." +of the form (PATTERN EXP). +The PATTERNs are only used to extract data, so the code does not test +whether the data does match the corresponding patterns: a mismatch +may signal an error or may go undetected, binding variables to arbitrary +values, such as nil." (declare (indent 1) (debug pcase-let*)) (if (null (cdr bindings)) `(pcase-let* ,bindings ,@body) @@ -302,7 +304,11 @@ any kind of error." ;;;###autoload (defmacro pcase-dolist (spec &rest body) - "Like `dolist' but where the binding can be a `pcase' pattern. + "Superset of `dolist' where the VAR binding can be a `pcase' PATTERN. +More specifically, this is just a shorthand for the following combination +of `dolist' and `pcase-let': + + (dolist (x LIST) (pcase-let ((PATTERN x)) BODY...)) \n(fn (PATTERN LIST) BODY...)" (declare (indent 1) (debug ((pcase-PAT form) body))) (if (pcase--trivial-upat-p (car spec)) From 1ad2903a48b682985a2bd0709ec05f67a1351a8e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 30 Oct 2018 21:14:10 -0700 Subject: [PATCH 086/567] Refer to bytecode constant vectors (Bug#33014) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backport from master. * src/bytecode.c (exec_byte_code): Save VECTOR into stack slot so that it survives GC. The stack slot was otherwise unused, so this doesn’t cost us memory, only a store insn. --- src/bytecode.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bytecode.c b/src/bytecode.c index e51f9095b367..538cd4f3ca7d 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -367,6 +367,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, SAFE_ALLOCA_LISP_EXTRA (stack_base, stack_items, bytestr_length); Lisp_Object *stack_lim = stack_base + stack_items; Lisp_Object *top = stack_base; + *top = vector; /* Ensure VECTOR survives GC (Bug#33014). */ memcpy (stack_lim, SDATA (bytestr), bytestr_length); void *void_stack_lim = stack_lim; unsigned char const *bytestr_data = void_stack_lim; From c3cf85b1c186e13c2d588aa35ffa57981ca481d7 Mon Sep 17 00:00:00 2001 From: Gemini Lasswell Date: Tue, 30 Oct 2018 21:15:51 -0700 Subject: [PATCH 087/567] Add regression test for Bug#33014 Backport from master. * test/src/eval-tests.el: (eval-tests-byte-code-being-evaluated-is-protected-from-gc): New test. (eval-tests-33014-var): New variable. (eval-tests-33014-func, eval-tests-33014-redefine): New functions. --- test/src/eval-tests.el | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/src/eval-tests.el b/test/src/eval-tests.el index e68fd136113e..eeb98b09948b 100644 --- a/test/src/eval-tests.el +++ b/test/src/eval-tests.el @@ -99,4 +99,34 @@ crash/abort/malloc assert failure on the next test." (signal-hook-function #'ignore)) (should-error (eval-tests--exceed-specbind-limit)))) +(ert-deftest eval-tests-byte-code-being-evaluated-is-protected-from-gc () + "Regression test for Bug#33014. +Check that byte-compiled objects being executed by exec-byte-code +are found on the stack and therefore not garbage collected." + (should (string= (eval-tests-33014-func) + "before after: ok foo: (e) bar: (a b c d e) baz: a bop: c"))) + +(defvar eval-tests-33014-var "ok") +(defun eval-tests-33014-func () + "A function which has a non-trivial constants vector when byte-compiled." + (let ((result "before ")) + (eval-tests-33014-redefine) + (garbage-collect) + (setq result (concat result (format "after: %s" eval-tests-33014-var))) + (let ((vals '(0 1 2 3)) + (things '(a b c d e))) + (dolist (val vals) + (setq result + (concat result " " + (cond + ((= val 0) (format "foo: %s" (last things))) + ((= val 1) (format "bar: %s" things)) + ((= val 2) (format "baz: %s" (car things))) + (t (format "bop: %s" (nth 2 things)))))))) + result)) + +(defun eval-tests-33014-redefine () + "Remove the Lisp reference to the byte-compiled object." + (setf (symbol-function #'eval-tests-33014-func) nil)) + ;;; eval-tests.el ends here From 9962cf959fd2edf7a68036ca9a81c0bbe35b67df Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 31 Oct 2018 15:34:45 -0400 Subject: [PATCH 088/567] * doc/lispref/control.texi (Destructuring patterns): New subsection. --- doc/lispref/control.texi | 89 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 5be4b298b46d..06c6622bf011 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -477,6 +477,7 @@ returns non-@code{nil}, the pattern matches the value * The @code{pcase} macro: pcase Macro. Plus examples and caveats. * Extending @code{pcase}: Extending pcase. Define new kinds of patterns. * Backquote-Style Patterns: Backquote Patterns. Structural matching. +* Destructuring patterns:: Using pcase patterns to extract subfields. @end menu @node pcase Macro @@ -497,6 +498,10 @@ of the last of @var{body-forms} in the successful clause. Otherwise, @code{pcase} evaluates to @code{nil}. @end defmac +Each @var{pattern} has to be a @dfn{pcase pattern}, which can either +use one of the core patterns defined below, or use one of the patterns +defined via @code{pcase-defmacro}. + The rest of this subsection describes different forms of core patterns, presents some examples, @@ -1168,6 +1173,90 @@ evaluation results: (evaluate '(sub 1 2) nil) @result{} error @end example +@node Destructuring patterns +@subsection Destructuring Patterns +@cindex destructuring patterns + +Pcase patterns not only express a condition on the form of the objects +they can match but they can also extract sub-fields of those objects. +Say we have a list and want to extract 2 elements from it with the +following code: + +@example + (pcase l + (`(add ,x ,y) (message "Contains %S and %S" x y))) +@end example + +This will not only extract @code{x} and @code{y} but will additionally +test that @code{l} is a list containing exactly 3 elements and whose +first element is the symbol @code{add}. If any of those tests fail, +@code{pcase} will directly return @code{nil} without calling +@code{message}. + +@dfn{Destructuring} of an object is an operation that extracts +multiple values stored in the object, e.g., the 2nd and the 3rd +element of a list or a vector. @dfn{Destructuring binding} is +similar to a local binding (@pxref{Local Variables}), but it gives +values to multiple elements of a variable by extracting those values +from an object of compatible structure. + +The macros described in this section use @dfn{destructuring +patterns}, which are normal Pcase patterns used in a context where we +presume that the object does match the pattern, and we only want +to extract some subfields. For example: + +@example + (pcase-let ((`(add ,x ,y) l)) + (message "Contains %S and %S" x y)) +@end example + +@noindent +does the same as the previous example, except that it directly tries +to extract @code{x} and @code{y} from @code{l} without first verifying +if @code{l} is a list which has the right number of elements and has +@code{add} as its first element. +The precise behavior when the object does not actually match the +pattern is undefined, although the body will not be silently skipped: +either an error is signaled or the body is run with some of the +variables potentially bound to arbitrary values like @code{nil}. + +@defmac pcase-let bindings body@dots{} +Bind variables according to @var{bindings} and then eval @var{body}. + +@var{bindings} is a list of bindings of the form @w{@code{(@var{pattern} +@var{exp})}}, where @var{exp} is an expression to evaluate and +@var{pattern} is a destructuring pattern. + +All @var{exp}s are evaluated first after which they are matched +against their respective @var{pattern}, introducing new variable +bindings which can then be used inside @var{body}. +@end defmac + +@defmac pcase-let* bindings body@dots{} +Bind variables according to @var{bindings} and then eval @var{body}. + +@var{bindings} is a list of bindings of the form @code{(@var{pattern} +@var{exp})}, where @var{exp} is an expression to evaluate and +@var{pattern} is a destructuring pattern. + +Unlike @code{pcase-let}, but like @code{let*}, each @var{exp} is +matched against its corresponding @var{pattern} before passing to the +next element of @var{bindings}, so the variables introduced in each +binding are available in the @var{exp}s that follow it, additionally +to being available in @var{body}. +@end defmac + +@findex dolist +@defmac pcase-dolist (pattern list) body@dots{} +This construct executes @var{body} once for each element of +@var{list}, in a context where the variables appearing in the the +destructuring pattern @var{pattern} are bound to the corresponding +values found in the element. +When @var{pattern} is a simple variable, this ends up being equivalent +to @code{dolist}. +@end defmac + + @node Iteration @section Iteration @cindex iteration From d53a2b65db9952580efcf5ffe75a313bcb49a99e Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 1 Nov 2018 06:24:27 -0400 Subject: [PATCH 089/567] ; Auto-commit of loaddefs files. --- lisp/ldefs-boot.el | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index a9ea74102dbf..56a6283f7084 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -24952,7 +24952,8 @@ variable name being but a special case of it). (autoload 'pcase-let* "pcase" "\ Like `let*' but where you can use `pcase' patterns for bindings. BODY should be an expression, and BINDINGS should be a list of bindings -of the form (PAT EXP). +of the form (PATTERN EXP). +See `pcase-let' for discussion of how PATTERN is matched. \(fn BINDINGS &rest BODY)" nil t) @@ -24961,17 +24962,22 @@ of the form (PAT EXP). (autoload 'pcase-let "pcase" "\ Like `let' but where you can use `pcase' patterns for bindings. BODY should be a list of expressions, and BINDINGS should be a list of bindings -of the form (PAT EXP). -The macro is expanded and optimized under the assumption that those -patterns *will* match, so a mismatch may go undetected or may cause -any kind of error. +of the form (PATTERN EXP). +The PATTERNs are only used to extract data, so the code does not test +whether the data does match the corresponding patterns: a mismatch +may signal an error or may go undetected, binding variables to arbitrary +values, such as nil. \(fn BINDINGS &rest BODY)" nil t) (function-put 'pcase-let 'lisp-indent-function '1) (autoload 'pcase-dolist "pcase" "\ -Like `dolist' but where the binding can be a `pcase' pattern. +Superset of `dolist' where the VAR binding can be a `pcase' PATTERN. +More specifically, this is just a shorthand for the following combination +of `dolist' and `pcase-let': + + (dolist (x LIST) (pcase-let ((PATTERN x)) BODY...)) \(fn (PATTERN LIST) BODY...)" nil t) @@ -28752,7 +28758,7 @@ CHAR `chinese-two-byte' (\\cC) `greek-two-byte' (\\cG) `japanese-hiragana-two-byte' (\\cH) - `indian-tow-byte' (\\cI) + `indian-two-byte' (\\cI) `japanese-katakana-two-byte' (\\cK) `korean-hangul-two-byte' (\\cN) `cyrillic-two-byte' (\\cY) @@ -34624,7 +34630,7 @@ Reenable Ange-FTP, when Tramp is unloaded. ;;;### (autoloads nil "trampver" "net/trampver.el" (0 0 0 0)) ;;; Generated autoloads from net/trampver.el -(push (purecopy '(tramp 2 3 4 26 2)) package--builtin-versions) +(push (purecopy '(tramp 2 3 5 26 2)) package--builtin-versions) (if (fboundp 'register-definition-prefixes) (register-definition-prefixes "trampver" '("tramp-"))) From 96f055bb4b89af240d7151185d8759e9b26d4fdc Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 1 Nov 2018 20:56:31 +0200 Subject: [PATCH 090/567] Fix a typo in autoload.el * lisp/emacs-lisp/autoload.el (update-directory-autoloads): Remove stray backslashes. (Bug#33231) --- lisp/emacs-lisp/autoload.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 92ad6155b539..a0ca0440fbbd 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el @@ -1034,7 +1034,7 @@ write its autoloads into the specified file instead." ;; we don't want to depend on whether Emacs was ;; built with or without modules support, nor ;; what is the suffix for the underlying OS. - (unless (string-match "\\.\\(elc\\|\\so\\|dll\\)" suf) + (unless (string-match "\\.\\(elc\\|so\\|dll\\)" suf) (push suf tmp))) (concat "^[^=.].*" (regexp-opt tmp t) "\\'"))) (files (apply #'nconc From 97660fa9d60ef138bea7ec5f7a6b5d2880497066 Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Thu, 1 Nov 2018 13:21:27 -0700 Subject: [PATCH 091/567] Doc fix for checkdoc-continue * lisp/emacs-lisp/checkdoc.el (checkdoc-continue): There is no second optional argument, and the function always starts from point. --- lisp/emacs-lisp/checkdoc.el | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index f2bf15d72def..f8f6a5c236f7 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el @@ -901,9 +901,8 @@ a separate buffer." ;;;###autoload (defun checkdoc-continue (&optional take-notes) "Find the next doc string in the current buffer which has a style error. -Prefix argument TAKE-NOTES means to continue through the whole buffer and -save warnings in a separate buffer. Second optional argument START-POINT -is the starting location. If this is nil, `point-min' is used instead." +Prefix argument TAKE-NOTES means to continue through the whole +buffer and save warnings in a separate buffer." (interactive "P") (let ((wrong nil) (msg nil) ;; Assign a flag to spellcheck flag From c9390423d609969193de1ea3228e259e22451719 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 2 Nov 2018 12:07:47 +0200 Subject: [PATCH 092/567] Avoid crashes with remapped default face in Org mode * src/xfaces.c (face_at_buffer_position): Look up BASE_FACE_ID anew if it is not in the frame's face cache. This avoids crashes when Org mode sets up for a new major mode in embedded code fragment, and the default face is remapped. (Bug#33222) --- src/xfaces.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/xfaces.c b/src/xfaces.c index f1fc6bb632f1..98a46dcb872e 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -5943,7 +5943,14 @@ face_at_buffer_position (struct window *w, ptrdiff_t pos, int face_id; if (base_face_id >= 0) - face_id = base_face_id; + { + face_id = base_face_id; + /* Make sure the base face ID is usable: if someone freed the + cached faces since we've looked up the base face, we need + to look it up again. */ + if (!FACE_FROM_ID_OR_NULL (f, face_id)) + face_id = lookup_basic_face (f, DEFAULT_FACE_ID); + } else if (NILP (Vface_remapping_alist)) face_id = DEFAULT_FACE_ID; else From 88ef31abd4716fad14889b08686d42ebbb7dc6c0 Mon Sep 17 00:00:00 2001 From: Jordan Wilson Date: Wed, 10 Oct 2018 11:45:57 +0100 Subject: [PATCH 093/567] Avoid file-name errors when viewing PDF from Gnus * lisp/doc-view.el (doc-view-mode): Run the output file name through 'convert-standard-filename', to avoid problems with characters that are not allowed in file names on some systems. (Bug#32989) Copyright-paperwork-exempt: yes --- lisp/doc-view.el | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/lisp/doc-view.el b/lisp/doc-view.el index 4a4862f8280f..6ad47fc792d5 100644 --- a/lisp/doc-view.el +++ b/lisp/doc-view.el @@ -1772,27 +1772,28 @@ toggle between displaying the document or editing it as text. (doc-view-make-safe-dir doc-view-cache-directory) ;; Handle compressed files, remote files, files inside archives (setq-local doc-view--buffer-file-name - (cond - (jka-compr-really-do-compress - ;; FIXME: there's a risk of name conflicts here. - (expand-file-name - (file-name-nondirectory - (file-name-sans-extension buffer-file-name)) - doc-view-cache-directory)) - ;; Is the file readable by local processes? - ;; We used to use `file-remote-p' but it's unclear what it's - ;; supposed to return nil for things like local files accessed - ;; via `su' or via file://... - ((let ((file-name-handler-alist nil)) - (not (and buffer-file-name - (file-readable-p buffer-file-name)))) - ;; FIXME: there's a risk of name conflicts here. - (expand-file-name - (if buffer-file-name - (file-name-nondirectory buffer-file-name) - (buffer-name)) - doc-view-cache-directory)) - (t buffer-file-name))) + (convert-standard-filename + (cond + (jka-compr-really-do-compress + ;; FIXME: there's a risk of name conflicts here. + (expand-file-name + (file-name-nondirectory + (file-name-sans-extension buffer-file-name)) + doc-view-cache-directory)) + ;; Is the file readable by local processes? + ;; We used to use `file-remote-p' but it's unclear what it's + ;; supposed to return nil for things like local files accessed + ;; via `su' or via file://... + ((let ((file-name-handler-alist nil)) + (not (and buffer-file-name + (file-readable-p buffer-file-name)))) + ;; FIXME: there's a risk of name conflicts here. + (expand-file-name + (if buffer-file-name + (file-name-nondirectory buffer-file-name) + (buffer-name)) + doc-view-cache-directory)) + (t buffer-file-name)))) (when (not (string= doc-view--buffer-file-name buffer-file-name)) (write-region nil nil doc-view--buffer-file-name)) From bd1d61753d90ef47af1e9a3b7a92ee77b7d43ed0 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Thu, 25 Oct 2018 03:35:57 +0100 Subject: [PATCH 094/567] Avoid race in rcirc process filter (bug#33145) * lisp/net/rcirc.el (rcirc-filter): Clear rcirc-process-output before processing its constituent lines. Otherwise, if rcirc-filter runs again before the last rcirc-process-server-response is finished, the contents of rcirc-process-output could be duplicated. --- lisp/net/rcirc.el | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index c09bff765b22..f57f7555c32f 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -753,12 +753,12 @@ Function is called with PROCESS, COMMAND, SENDER, ARGS and LINE.") (with-rcirc-process-buffer process (setq rcirc-last-server-message-time (current-time)) (setq rcirc-process-output (concat rcirc-process-output output)) - (when (= (aref rcirc-process-output - (1- (length rcirc-process-output))) ?\n) - (mapc (lambda (line) - (rcirc-process-server-response process line)) - (split-string rcirc-process-output "[\n\r]" t)) - (setq rcirc-process-output nil)))) + (when (= ?\n (aref rcirc-process-output + (1- (length rcirc-process-output)))) + (let ((lines (split-string rcirc-process-output "[\n\r]" t))) + (setq rcirc-process-output nil) + (dolist (line lines) + (rcirc-process-server-response process line)))))) (defun rcirc-reschedule-timeout (process) (with-rcirc-process-buffer process From 74bc0e16b7f9fdc5011c28182a2c8d828ee426d8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Nov 2018 10:49:51 +0200 Subject: [PATCH 095/567] Avoid byte compilation warning in rcirc.el * lisp/net/rcirc.el (rcirc-prompt-start-marker): Move definition before 1st use to avoild byte-compiler warning. --- lisp/net/rcirc.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index f57f7555c32f..7fc3e349287a 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -182,6 +182,8 @@ underneath each nick." :type '(repeat string) :group 'rcirc) +(defvar rcirc-prompt-start-marker nil) + (define-minor-mode rcirc-omit-mode "Toggle the hiding of \"uninteresting\" lines. With a prefix argument ARG, enable Rcirc-Omit mode if ARG is @@ -401,7 +403,6 @@ will be killed." (defvar rcirc-nick nil) -(defvar rcirc-prompt-start-marker nil) (defvar rcirc-prompt-end-marker nil) (defvar rcirc-nick-table nil) From e824c914dabd92537a0d6e44eaa10bb4699c312f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Nov 2018 15:11:33 +0200 Subject: [PATCH 096/567] Improve documentation of destructuring-binding macros * lisp/emacs-lisp/pcase.el (pcase-dolist, pcase-let) (pcase-let*): Improve the doc strings. * doc/lispref/sequences.texi (Sequence Functions): Improve wording and rename arguments of seq-let to be more descriptive. Add a cross-reference to "Destructuring with pcase Patterns". * doc/lispref/control.texi (Pattern-Matching Conditional): Improve wording and the menu. (pcase Macro): Incorporate patch suggested by Paul Eggert . Reformat text. (Destructuring with pcase Patterns): Rename from "Destructuring patterns", and improve wording and indexing. --- doc/lispref/control.texi | 228 +++++++++++++++++++------------------ doc/lispref/sequences.texi | 20 ++-- lisp/emacs-lisp/pcase.el | 43 ++++--- 3 files changed, 160 insertions(+), 131 deletions(-) diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 06c6622bf011..f80622e60256 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -419,65 +419,68 @@ This is not completely equivalent because it can evaluate @var{arg1} or @node Pattern-Matching Conditional @section Pattern-Matching Conditional @cindex pcase -@cindex pattern matching +@cindex pattern matching, programming style Aside from the four basic conditional forms, Emacs Lisp also has a pattern-matching conditional form, the @code{pcase} macro, a hybrid of @code{cond} and @code{cl-case} (@pxref{Conditionals,,,cl,Common Lisp Extensions}) that overcomes their limitations and introduces -the @dfn{pattern matching} programming style. -First, the limitations: +the @dfn{pattern matching programming style}. +The limitations that @code{pcase} overcomes are: @itemize -@item The @code{cond} form chooses among alternatives -by evaluating the predicate @var{condition} of each -of its clauses (@pxref{Conditionals}). -The primary limitation is that variables let-bound in @var{condition} -are not available to the clause's @var{body-forms}. +@item +The @code{cond} form chooses among alternatives by evaluating the +predicate @var{condition} of each of its clauses +(@pxref{Conditionals}). The primary limitation is that variables +let-bound in @var{condition} are not available to the clause's +@var{body-forms}. Another annoyance (more an inconvenience than a limitation) is that when a series of @var{condition} predicates implement -equality tests, there is a lot of repeated code. -For that, why not use @code{cl-case}? +equality tests, there is a lot of repeated code. (@code{cl-case} +solves this inconvenience.) @item The @code{cl-case} macro chooses among alternatives by evaluating the equality of its first argument against a set of specific values. -The limitations are two-fold: + +Its limitations are two-fold: @enumerate -@item The equality tests use @code{eql}. -@item The values must be known and written in advance. +@item +The equality tests use @code{eql}. +@item +The values must be known and written in advance. @end enumerate @noindent These render @code{cl-case} unsuitable for strings or compound -data structures (e.g., lists or vectors). -For that, why not use @code{cond}? -(And here we end up in a circle.) +data structures (e.g., lists or vectors). (@code{cond} doesn't have +these limitations, but it has others, see above.) @end itemize @noindent Conceptually, the @code{pcase} macro borrows the first-arg focus of @code{cl-case} and the clause-processing flow of @code{cond}, replacing @var{condition} with a generalization of -the equality test called @dfn{matching}, +the equality test which is a variant of @dfn{pattern matching}, and adding facilities so that you can concisely express a clause's predicate, and arrange to share let-bindings between a clause's predicate and @var{body-forms}. The concise expression of a predicate is known as a @dfn{pattern}. -When the predicate, called on the value of the first arg, -returns non-@code{nil}, the pattern matches the value -(or sometimes ``the value matches the pattern''). +When the predicate, called on the value of the first arg, returns +non-@code{nil}, we say that ``the pattern matches the value'' (or +sometimes ``the value matches the pattern''). @menu -* The @code{pcase} macro: pcase Macro. Plus examples and caveats. +* The @code{pcase} macro: pcase Macro. Includes examples and caveats. * Extending @code{pcase}: Extending pcase. Define new kinds of patterns. -* Backquote-Style Patterns: Backquote Patterns. Structural matching. -* Destructuring patterns:: Using pcase patterns to extract subfields. +* Backquote-Style Patterns: Backquote Patterns. Structural patterns matching. +* Destructuring with pcase Patterns:: Using pcase patterns to extract subfields. @end menu @node pcase Macro @@ -498,30 +501,30 @@ of the last of @var{body-forms} in the successful clause. Otherwise, @code{pcase} evaluates to @code{nil}. @end defmac -Each @var{pattern} has to be a @dfn{pcase pattern}, which can either -use one of the core patterns defined below, or use one of the patterns -defined via @code{pcase-defmacro}. +@cindex pcase pattern +Each @var{pattern} has to be a @dfn{pcase pattern}, which can use +either one of the core patterns defined below, or one of the patterns +defined via @code{pcase-defmacro} (@pxref{Extending pcase}). -The rest of this subsection -describes different forms of core patterns, -presents some examples, -and concludes with important caveats on using the -let-binding facility provided by some pattern forms. -A core pattern can have the following forms: +The rest of this subsection describes different forms of core +patterns, presents some examples, and concludes with important caveats +on using the let-binding facility provided by some pattern forms. A +core pattern can have the following forms: @table @code @item _ Matches any @var{expval}. -This is known as @dfn{don't care} or @dfn{wildcard}. +This is also known as @dfn{don't care} or @dfn{wildcard}. @item '@var{val} -Matches if @var{expval} is @code{equal} to @var{val}. +Matches if @var{expval} is equals @var{val}. The comparison is done +as if by @code{equal} (@pxref{Equality Predicates}). @item @var{keyword} @itemx @var{integer} @itemx @var{string} -Matches if @var{expval} is @code{equal} to the literal object. +Matches if @var{expval} equals the literal object. This is a special case of @code{'@var{val}}, above, possible because literal objects of these types are self-quoting. @@ -533,17 +536,17 @@ Matches any @var{expval}, and additionally let-binds @var{symbol} to If @var{symbol} is part of a sequencing pattern @var{seqpat} (e.g., by using @code{and}, below), the binding is also available to the portion of @var{seqpat} following the appearance of @var{symbol}. -This usage has some caveats (@pxref{pcase-symbol-caveats,,caveats}). +This usage has some caveats, see @ref{pcase-symbol-caveats,,caveats}. Two symbols to avoid are @code{t}, which behaves like @code{_} -(above) and is deprecated, and @code{nil}, which signals error. +(above) and is deprecated, and @code{nil}, which signals an error. Likewise, it makes no sense to bind keyword symbols (@pxref{Constant Variables}). @item (pred @var{function}) Matches if the predicate @var{function} returns non-@code{nil} when called on @var{expval}. -@var{function} can have one of the possible forms: +the predicate @var{function} can have one of the following forms: @table @asis @item function name (a symbol) @@ -570,20 +573,17 @@ the actual function call becomes: @w{@code{(= 42 @var{expval})}}. @item (app @var{function} @var{pattern}) Matches if @var{function} called on @var{expval} returns a value that matches @var{pattern}. -@var{function} can take one of the -forms described for @code{pred}, above. -Unlike @code{pred}, however, -@code{app} tests the result against @var{pattern}, -rather than against a boolean truth value. +@var{function} can take one of the forms described for @code{pred}, +above. Unlike @code{pred}, however, @code{app} tests the result +against @var{pattern}, rather than against a boolean truth value. @item (guard @var{boolean-expression}) Matches if @var{boolean-expression} evaluates to non-@code{nil}. @item (let @var{pattern} @var{expr}) -Evaluates @var{expr} to get @var{exprval} -and matches if @var{exprval} matches @var{pattern}. -(It is called @code{let} because -@var{pattern} can bind symbols to values using @var{symbol}.) +Evaluates @var{expr} to get @var{exprval} and matches if @var{exprval} +matches @var{pattern}. (It is called @code{let} because @var{pattern} +can bind symbols to values using @var{symbol}.) @end table @cindex sequencing pattern @@ -596,18 +596,16 @@ but instead of processing values, they process sub-patterns. @table @code @item (and @var{pattern1}@dots{}) -Attempts to match @var{pattern1}@dots{}, in order, -until one of them fails to match. -In that case, @code{and} likewise fails to match, -and the rest of the sub-patterns are not tested. -If all sub-patterns match, @code{and} matches. +Attempts to match @var{pattern1}@dots{}, in order, until one of them +fails to match. In that case, @code{and} likewise fails to match, and +the rest of the sub-patterns are not tested. If all sub-patterns +match, @code{and} matches. @item (or @var{pattern1} @var{pattern2}@dots{}) Attempts to match @var{pattern1}, @var{pattern2}, @dots{}, in order, -until one of them succeeds. -In that case, @code{or} likewise matches, -and the rest of the sub-patterns are not tested. -(Note that there must be at least two sub-patterns. +until one of them succeeds. In that case, @code{or} likewise matches, +and the rest of the sub-patterns are not tested. (Note that there +must be at least two sub-patterns. Simply @w{@code{(or @var{pattern1})}} signals error.) @c Issue: Is this correct and intended? @c Are there exceptions, qualifications? @@ -1042,12 +1040,11 @@ Both use a single backquote construct (@pxref{Backquote}). This subsection describes @dfn{backquote-style patterns}, a set of builtin patterns that eases structural matching. -For background, @xref{Pattern-Matching Conditional}. +For background, @pxref{Pattern-Matching Conditional}. -@dfn{Backquote-style patterns} are a powerful set of -@code{pcase} pattern extensions (created using @code{pcase-defmacro}) -that make it easy to match @var{expval} against -specifications of its @emph{structure}. +Backquote-style patterns are a powerful set of @code{pcase} pattern +extensions (created using @code{pcase-defmacro}) that make it easy to +match @var{expval} against specifications of its @emph{structure}. For example, to match @var{expval} that must be a list of two elements whose first element is a specific string and the second @@ -1173,87 +1170,102 @@ evaluation results: (evaluate '(sub 1 2) nil) @result{} error @end example -@node Destructuring patterns -@subsection Destructuring Patterns -@cindex destructuring patterns +@node Destructuring with pcase Patterns +@subsection Destructuring with @code{pcase} Patterns +@cindex destructuring with pcase patterns Pcase patterns not only express a condition on the form of the objects -they can match but they can also extract sub-fields of those objects. -Say we have a list and want to extract 2 elements from it with the -following code: +they can match, but they can also extract sub-fields of those objects. +For example we can extract 2 elements from a list that is the value of +the variable @code{my-list} with the following code: @example - (pcase l + (pcase my-list (`(add ,x ,y) (message "Contains %S and %S" x y))) @end example This will not only extract @code{x} and @code{y} but will additionally -test that @code{l} is a list containing exactly 3 elements and whose -first element is the symbol @code{add}. If any of those tests fail, -@code{pcase} will directly return @code{nil} without calling +test that @code{my-list} is a list containing exactly 3 elements and +whose first element is the symbol @code{add}. If any of those tests +fail, @code{pcase} will immediately return @code{nil} without calling @code{message}. -@dfn{Destructuring} of an object is an operation that extracts -multiple values stored in the object, e.g., the 2nd and the 3rd -element of a list or a vector. @dfn{Destructuring binding} is -similar to a local binding (@pxref{Local Variables}), but it gives -values to multiple elements of a variable by extracting those values -from an object of compatible structure. +Extraction of multiple values stored in an object is known as +@dfn{destructuring}. Using @code{pcase} patterns allows to perform +@dfn{destructuring binding}, which is similar to a local binding +(@pxref{Local Variables}), but gives values to multiple elements of +a variable by extracting those values from an object of compatible +structure. -The macros described in this section use @dfn{destructuring -patterns}, which are normal Pcase patterns used in a context where we -presume that the object does match the pattern, and we only want -to extract some subfields. For example: +The macros described in this section use @code{pcase} patterns to +perform destructuring binding. The condition of the object to be of +compatible structure means that the object must match the pattern, +because only then the object's subfields can be extracted. For +example: @example - (pcase-let ((`(add ,x ,y) l)) + (pcase-let ((`(add ,x ,y) my-list)) (message "Contains %S and %S" x y)) @end example @noindent does the same as the previous example, except that it directly tries -to extract @code{x} and @code{y} from @code{l} without first verifying -if @code{l} is a list which has the right number of elements and has -@code{add} as its first element. -The precise behavior when the object does not actually match the -pattern is undefined, although the body will not be silently skipped: -either an error is signaled or the body is run with some of the -variables potentially bound to arbitrary values like @code{nil}. +to extract @code{x} and @code{y} from @code{my-list} without first +verifying if @code{my-list} is a list which has the right number of +elements and has @code{add} as its first element. The precise +behavior when the object does not actually match the pattern is +undefined, although the body will not be silently skipped: either an +error is signaled or the body is run with some of the variables +potentially bound to arbitrary values like @code{nil}. + +The pcase patterns that are useful for destructuring bindings are +generally those described in @ref{Backquote Patterns}, since they +express a specification of the structure of objects that will match. + +For an alternative facility for destructuring binding, see +@ref{seq-let}. @defmac pcase-let bindings body@dots{} -Bind variables according to @var{bindings} and then eval @var{body}. +Perform desctructuring binding of variables according to +@var{bindings}, and then evaluate @var{body}. @var{bindings} is a list of bindings of the form @w{@code{(@var{pattern} @var{exp})}}, where @var{exp} is an expression to evaluate and -@var{pattern} is a destructuring pattern. +@var{pattern} is a @code{pcase} pattern. -All @var{exp}s are evaluated first after which they are matched +All @var{exp}s are evaluated first, after which they are matched against their respective @var{pattern}, introducing new variable -bindings which can then be used inside @var{body}. +bindings that can then be used inside @var{body}. The variable +bindings are produced by destructuring binding of elements of +@var{pattern} to the values of the corresponding elements of the +evaluated @var{exp}. @end defmac @defmac pcase-let* bindings body@dots{} -Bind variables according to @var{bindings} and then eval @var{body}. +Perform desctructuring binding of variables according to +@var{bindings}, and then evaluate @var{body}. @var{bindings} is a list of bindings of the form @code{(@var{pattern} @var{exp})}, where @var{exp} is an expression to evaluate and -@var{pattern} is a destructuring pattern. - -Unlike @code{pcase-let}, but like @code{let*}, each @var{exp} is -matched against its corresponding @var{pattern} before passing to the -next element of @var{bindings}, so the variables introduced in each -binding are available in the @var{exp}s that follow it, additionally -to being available in @var{body}. +@var{pattern} is a @code{pcase} pattern. The variable bindings are +produced by destructuring binding of elements of @var{pattern} to the +values of the corresponding elements of the evaluated @var{exp}. + +Unlike @code{pcase-let}, but similarly to @code{let*}, each @var{exp} +is matched against its corresponding @var{pattern} before processing +the next element of @var{bindings}, so the variable bindings +introduced in each one of the @var{bindings} are available in the +@var{exp}s of the @var{bindings} that follow it, additionally to +being available in @var{body}. @end defmac -@findex dolist @defmac pcase-dolist (pattern list) body@dots{} -This construct executes @var{body} once for each element of -@var{list}, in a context where the variables appearing in the the -destructuring pattern @var{pattern} are bound to the corresponding -values found in the element. -When @var{pattern} is a simple variable, this ends up being equivalent -to @code{dolist}. +Execute @var{body} once for each element of @var{list}, on each +iteration performing a destructuring binding of variables in +@var{pattern} to the values of the corresponding subfields of the +element of @var{list}. The bindings are performed as if by +@code{pcase-let}. When @var{pattern} is a simple variable, this ends +up being equivalent to @code{dolist} (@pxref{Iteration}). @end defmac diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi index 51d724cb1d8b..60d017c3e446 100644 --- a/doc/lispref/sequences.texi +++ b/doc/lispref/sequences.texi @@ -1049,15 +1049,18 @@ that @var{sequence} can be a list, vector or string. This is primarily useful for side-effects. @end defmac -@defmac seq-let arguments sequence body@dots{} +@anchor{seq-let} +@defmac seq-let var-sequence val-sequence body@dots{} @cindex sequence destructuring - This macro binds the variables defined in @var{arguments} to the -elements of @var{sequence}. @var{arguments} can themselves include -sequences, allowing for nested destructuring. + This macro binds the variables defined in @var{var-sequence} to the +values that are the corresponding elements of @var{val-sequence}. +This is known as @dfn{destructuring binding}. The elements of +@var{var-sequence} can themselves include sequences, allowing for +nested destructuring. -The @var{arguments} sequence can also include the @code{&rest} marker -followed by a variable name to be bound to the rest of -@code{sequence}. +The @var{var-sequence} sequence can also include the @code{&rest} +marker followed by a variable name to be bound to the rest of +@var{val-sequence}. @example @group @@ -1081,6 +1084,9 @@ followed by a variable name to be bound to the rest of @end group @result{} [3 4] @end example + +The @code{pcase} patterns provide an alternative facility for +destructuring binding, see @ref{Destructuring with pcase Patterns}. @end defmac @defun seq-random-elt sequence diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el index 2e89ae0779aa..fde3bdb27f31 100644 --- a/lisp/emacs-lisp/pcase.el +++ b/lisp/emacs-lisp/pcase.el @@ -264,10 +264,14 @@ variable name being but a special case of it)." ;;;###autoload (defmacro pcase-let* (bindings &rest body) - "Like `let*' but where you can use `pcase' patterns for bindings. -BODY should be an expression, and BINDINGS should be a list of bindings -of the form (PATTERN EXP). -See `pcase-let' for discussion of how PATTERN is matched." + "Like `let*', but supports destructuring BINDINGS using `pcase' patterns. +As with `pcase-let', BINDINGS are of the form (PATTERN EXP), but the +EXP in each binding in BINDINGS can use the results of the destructuring +bindings that precede it in BINDINGS' order. + +Each EXP should match (i.e. be of compatible structure) to its +respective PATTERN; a mismatch may signal an error or may go +undetected, binding variables to arbitrary values, such as nil." (declare (indent 1) (debug ((&rest (pcase-PAT &optional form)) body))) (let ((cached (gethash bindings pcase--memoize))) @@ -280,13 +284,16 @@ See `pcase-let' for discussion of how PATTERN is matched." ;;;###autoload (defmacro pcase-let (bindings &rest body) - "Like `let' but where you can use `pcase' patterns for bindings. -BODY should be a list of expressions, and BINDINGS should be a list of bindings -of the form (PATTERN EXP). -The PATTERNs are only used to extract data, so the code does not test -whether the data does match the corresponding patterns: a mismatch -may signal an error or may go undetected, binding variables to arbitrary -values, such as nil." + "Like `let', but supports destructuring BINDINGS using `pcase' patterns. +BODY should be a list of expressions, and BINDINGS should be a list of +bindings of the form (PATTERN EXP). +All EXPs are evaluated first, and then used to perform destructuring +bindings by matching each EXP against its respective PATTERN. Then +BODY is evaluated with those bindings in effect. + +Each EXP should match (i.e. be of compatible structure) to its +respective PATTERN; a mismatch may signal an error or may go +undetected, binding variables to arbitrary values, such as nil." (declare (indent 1) (debug pcase-let*)) (if (null (cdr bindings)) `(pcase-let* ,bindings ,@body) @@ -304,11 +311,15 @@ values, such as nil." ;;;###autoload (defmacro pcase-dolist (spec &rest body) - "Superset of `dolist' where the VAR binding can be a `pcase' PATTERN. -More specifically, this is just a shorthand for the following combination -of `dolist' and `pcase-let': - - (dolist (x LIST) (pcase-let ((PATTERN x)) BODY...)) + "Eval BODY once for each set of bindings defined by PATTERN and LIST elements. +PATTERN should be a `pcase' pattern describing the structure of +LIST elements, and LIST is a list of objects that match PATTERN, +i.e. have a structure that is compatible with PATTERN. +For each element of LIST, this macro binds the variables in +PATTERN to the corresponding subfields of the LIST element, and +then evaluates BODY with these bindings in effect. The +destructuring bindings of variables in PATTERN to the subfields +of the elements of LIST is performed as if by `pcase-let'. \n(fn (PATTERN LIST) BODY...)" (declare (indent 1) (debug ((pcase-PAT form) body))) (if (pcase--trivial-upat-p (car spec)) From 963f1d95842638c97c7188c8fbb5eaf1e7232f3e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Nov 2018 18:11:29 +0200 Subject: [PATCH 097/567] ; * doc/lispref/control.texi (pcase Macro): Fix a typo. --- doc/lispref/control.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index f80622e60256..c298eae32b77 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -518,8 +518,8 @@ Matches any @var{expval}. This is also known as @dfn{don't care} or @dfn{wildcard}. @item '@var{val} -Matches if @var{expval} is equals @var{val}. The comparison is done -as if by @code{equal} (@pxref{Equality Predicates}). +Matches if @var{expval} equals @var{val}. The comparison is done as +if by @code{equal} (@pxref{Equality Predicates}). @item @var{keyword} @itemx @var{integer} From 7cadb328092e354225149bbc74c2ddaf4b49b638 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Nov 2018 19:37:54 +0200 Subject: [PATCH 098/567] ; * doc/lispref/control.texi (pcase Macro): Fix another typo. --- doc/lispref/control.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index c298eae32b77..8989b7de91b9 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -1226,7 +1226,7 @@ For an alternative facility for destructuring binding, see @ref{seq-let}. @defmac pcase-let bindings body@dots{} -Perform desctructuring binding of variables according to +Perform destructuring binding of variables according to @var{bindings}, and then evaluate @var{body}. @var{bindings} is a list of bindings of the form @w{@code{(@var{pattern} @@ -1242,7 +1242,7 @@ evaluated @var{exp}. @end defmac @defmac pcase-let* bindings body@dots{} -Perform desctructuring binding of variables according to +Perform destructuring binding of variables according to @var{bindings}, and then evaluate @var{body}. @var{bindings} is a list of bindings of the form @code{(@var{pattern} From c04b48c0883d839f386a1f2921503837b7673062 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Sun, 4 Nov 2018 09:15:13 +0100 Subject: [PATCH 099/567] Rewrite documentation of buffer display * doc/emacs/windows.texi (Window Choice): Rewrite, replacing references to older buffer display options with references to and examples of buffer display actions. (Temporary Displays): Rewrite display of *Completions* example. * doc/lispref/elisp.texi (Top): New Windows section 'Displaying Buffers'. * doc/lispref/frames.texi (Child Frames): Adjust cross reference. * doc/lispref/windows.texi (Windows): New section 'Displaying Buffers'. Move sections 'Choosing Window', 'Display Action Functions' and 'Choosing Window Options' there and adjust namings. Preferably write 'Buffer Display Action' instead of 'Display Action'. More consistently use @w{} to make key binding specifications unsplittable. (Displaying Buffers): New section. (Choosing Window): Make it a subsection of 'Displaying Buffers'. More explicitly describe how 'display-buffer' compiles its list of action functions and the action alist. (Buffer Display Action Functions): Rename from 'Display Action Functions', make it a subsection of 'Displaying Buffers' and rewrite it. Elide more detailed descriptions of action alist entries; these are now in the new section 'Buffer Display Action Functions'. Remove example. (Buffer Display Action Alists): New subsection of 'Displaying Buffers' giving a comprehensive description of recognized action alist entries with appropriate indexing. Contents were partially moved here from the old 'Display Action Functions' section. (Choosing Window Options): Make it a subsection of 'Displaying Buffers'. Add examples of how to rewrite old buffer display options with the help of buffer display actions. (Precedence of Action Functions): New subsection of 'Displaying Buffers' explaining the execution order of action functions with the help of a detailed example. (The Zen of Buffer Display): New subsection of 'Displaying Buffers' supplying guidelines on how to write and use buffer display actions with examples. (Side Windows, Displaying Buffers in Side Windows) (Frame Layouts with Side Windows, Atomic Windows): Update references to the 'Displaying Buffers' subsections. --- doc/emacs/windows.texi | 108 +-- doc/lispref/elisp.texi | 16 +- doc/lispref/frames.texi | 10 +- doc/lispref/windows.texi | 1442 +++++++++++++++++++++++++++++--------- 4 files changed, 1207 insertions(+), 369 deletions(-) diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index 7dbd680b9b28..b09c9ae689d0 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -48,8 +48,8 @@ other windows at all. However, there are other commands such as @kbd{C-x 4 b} that select a different window and switch buffers in it. Also, all commands that display information in a window, including (for example) @kbd{C-h f} (@code{describe-function}) and @kbd{C-x C-b} -(@code{list-buffers}), work by switching buffers in a nonselected -window without affecting the selected window. +(@code{list-buffers}), usually work by displaying buffers in a +nonselected window without affecting the selected window. When multiple windows show the same buffer, they can have different regions, because they can have different values of point. However, @@ -340,11 +340,9 @@ heights of all the windows in the selected frame. in response to a user command. There are several different ways in which commands do this. - Many commands, like @kbd{C-x C-f} (@code{find-file}), display the -buffer by ``taking over'' the selected window, expecting that the -user's attention will be diverted to that buffer. These commands -usually work by calling @code{switch-to-buffer} internally -(@pxref{Select Buffer}). + Many commands, like @kbd{C-x C-f} (@code{find-file}), by default +display the buffer by ``taking over'' the selected window, expecting +that the user's attention will be diverted to that buffer. Some commands try to display intelligently, trying not to take over the selected window, e.g., by splitting off a new window and @@ -367,10 +365,9 @@ key (@pxref{Pop Up Window}). Commands with names ending in @code{-other-frame} behave like @code{display-buffer}, except that they (i) never display in the -selected window and (ii) prefer to create a new frame to display the -desired buffer instead of splitting a window---as though the variable -@code{pop-up-frames} is set to @code{t} (@pxref{Window Choice}). -Several of these commands are bound in the @kbd{C-x 5} prefix key. +selected window and (ii) prefer to either create a new frame or use a +window on some other frame to display the desired buffer. Several of +these commands are bound in the @kbd{C-x 5} prefix key. @menu * Window Choice:: How @code{display-buffer} works. @@ -383,33 +380,61 @@ Several of these commands are bound in the @kbd{C-x 5} prefix key. The @code{display-buffer} command (as well as commands that call it internally) chooses a window to display by following the steps given -below. @xref{Choosing Window,,Choosing a Window for Display, elisp, -The Emacs Lisp Reference Manual}, for details about how to alter this -sequence of steps. +below. @xref{Choosing Window,,Choosing a Window for Displaying a +Buffer, elisp, The Emacs Lisp Reference Manual}, for details about how +to alter this sequence of steps. @itemize -@vindex same-window-buffer-names -@vindex same-window-regexps @item First, check if the buffer should be displayed in the selected window regardless of other considerations. You can tell Emacs to do this by -adding the desired buffer's name to the list -@code{same-window-buffer-names}, or adding a matching regular -expression to the list @code{same-window-regexps}. By default, these -variables are @code{nil}, so this step is skipped. +adding a regular expression matching the buffer's name together with a +reference to the @code{display-buffer-same-window} action function +(@pxref{Buffer Display Action Functions,,Action Functions for Buffer +Display, elisp, The Emacs Lisp Reference Manual}) to the option +@code{display-buffer-alist} (@pxref{Choosing Window,,Choosing a Window +for Displaying a Buffer, elisp, The Emacs Lisp Reference Manual}). +For example, to display the buffer @file{*scratch*} preferably in the +selected window write: + +@example +@group +(customize-set-variable + 'display-buffer-alist + '("\\*scratch\\*" (display-buffer-same-window))) +@end group +@end example + +By default, @code{display-buffer-alist} is @code{nil}, so this step is +skipped. @item Otherwise, if the buffer is already displayed in an existing window, -reuse that window. Normally, only windows on the selected frame -are considered, but windows on other frames are also reusable if you -change @code{pop-up-frames} (see below) to @code{t}. +reuse that window. Normally, only windows on the selected frame are +considered, but windows on other frames are also reusable if a +corresponding @code{reusable-frames} action alist entry (@pxref{Buffer +Display Action Alists,,Action Alists for Buffer Display, elisp, The +Emacs Lisp Reference Manual}) is used (see the next step for an +example of how to do that). -@vindex pop-up-frames @item Otherwise, optionally create a new frame and display the buffer there. -By default, this step is skipped. To enable it, change the variable -@code{pop-up-frames} to a non-@code{nil} value. The special value -@code{graphic-only} means to do this only on graphical displays. +By default, this step is skipped. To enable it, change the value of +the option @code{display-buffer-base-action} (@pxref{Choosing +Window,,Choosing a Window for Displaying a Buffer, elisp, The Emacs +Lisp Reference Manual}) as follows: + +@example +@group +(customize-set-variable + 'display-buffer-base-action + '((display-buffer-reuse-window display-buffer-pop-up-frame) + (reusable-frames . 0))) +@end group +@end example + +This customization will also try to make the preceding step search for +a reusable window on all visible of iconified frames @item Otherwise, try to create a new window by splitting a window on the @@ -429,9 +454,9 @@ window was not split before (to avoid excessive splitting). @item Otherwise, display the buffer in a window previously showing it. -Normally, only windows on the selected frame are considered, but if -@code{pop-up-frames} is non-@code{nil} the window may be also on another -frame. +Normally, only windows on the selected frame are considered, but with +a suitable @code{reusable-frames} action alist entry (see above) the +window may be also on another frame. @item Otherwise, display the buffer in an existing window on the selected @@ -442,14 +467,9 @@ If all the above methods fail for whatever reason, create a new frame and display the buffer there. @end itemize -A more advanced and flexible way to customize the behavior of -@code{display-buffer} is by using the option @code{display-buffer-alist} -mentioned in the next section. - @node Temporary Displays @subsection Displaying non-editable buffers. -@cindex pop-up windows @cindex temporary windows Some buffers are shown in windows for perusal rather than for editing. @@ -459,24 +479,24 @@ buffer called @file{*Completions*} instead. Such buffers are usually displayed only for a short period of time. Normally, Emacs chooses the window for such temporary displays via -@code{display-buffer} as described above. The @file{*Completions*} -buffer, on the other hand, is normally displayed in a window at the -bottom of the selected frame, regardless of the number of windows -already shown on that frame. +@code{display-buffer} as described in the previous subsection. The +@file{*Completions*} buffer, on the other hand, is normally displayed +in a window at the bottom of the selected frame, regardless of the +number of windows already shown on that frame. If you prefer Emacs to display a temporary buffer in a different fashion, we recommend customizing the variable @code{display-buffer-alist} (@pxref{Choosing Window,,Choosing a Window -for Display, elisp, The Emacs Lisp Reference Manual}). For example, -to display @file{*Completions*} by splitting a window as described in -the previous section, use the following form in your initialization -file (@pxref{Init File}): +for Displaying a Buffer, elisp, The Emacs Lisp Reference Manual}). +For example, to display @file{*Completions*} always below the selected +window, use the following form in your initialization file +(@pxref{Init File}): @example @group (customize-set-variable 'display-buffer-alist - '(("\\*Completions\\*" display-buffer-pop-up-window))) + '(("\\*Completions\\*" display-buffer-below-selected))) @end group @end example diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index 7dd1e89de5e8..05066a200762 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi @@ -1043,9 +1043,7 @@ Windows * Cyclic Window Ordering:: Moving around the existing windows. * Buffers and Windows:: Each window displays the contents of a buffer. * Switching Buffers:: Higher-level functions for switching to a buffer. -* Choosing Window:: How to choose a window for displaying a buffer. -* Display Action Functions:: Subroutines for @code{display-buffer}. -* Choosing Window Options:: Extra options affecting how buffers are displayed. +* Displaying Buffers:: Displaying a buffer in a suitable window. * Window History:: Each window remembers the buffers displayed in it. * Dedicated Windows:: How to avoid displaying another buffer in a specific window. @@ -1067,6 +1065,18 @@ Windows redisplay going past a certain point, or window configuration changes. +Displaying Buffers + +* Choosing Window:: How to choose a window for displaying a buffer. +* Buffer Display Action Functions:: Support functions for buffer display. +* Buffer Display Action Alists:: Alists for fine-tuning buffer display + action functions. +* Choosing Window Options:: Extra options affecting how buffers are displayed. +* Precedence of Action Functions:: A tutorial explaining the precedence of + buffer display action functions. +* The Zen of Buffer Display:: How to avoid that buffers get lost in between + windows. + Side Windows * Displaying Buffers in Side Windows:: An action function for displaying diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index 1e008da2476d..e95a684912c7 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -3198,11 +3198,11 @@ and should be preferred when specifying a non-@code{nil} @code{drag-with-mode-line} parameter. When a child frame is used for displaying a buffer via -@code{display-buffer-in-child-frame} (@pxref{Display Action Functions}), -the frame's @code{auto-hide-function} parameter (@pxref{Frame -Interaction Parameters}) can be set to a function, in order to -appropriately deal with the frame when the window displaying the buffer -shall be quit. +@code{display-buffer-in-child-frame} (@pxref{Buffer Display Action +Functions}), the frame's @code{auto-hide-function} parameter +(@pxref{Frame Interaction Parameters}) can be set to a function, in +order to appropriately deal with the frame when the window displaying +the buffer shall be quit. When a child frame is used during minibuffer interaction, for example, to display completions in a separate window, the @code{minibuffer-exit} diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 960573d8653c..7f2dff17532b 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -25,9 +25,7 @@ is displayed in windows. * Cyclic Window Ordering:: Moving around the existing windows. * Buffers and Windows:: Each window displays the contents of a buffer. * Switching Buffers:: Higher-level functions for switching to a buffer. -* Choosing Window:: How to choose a window for displaying a buffer. -* Display Action Functions:: Subroutines for @code{display-buffer}. -* Choosing Window Options:: Extra options affecting how buffers are displayed. +* Displaying Buffers:: Displaying a buffer in a suitable window. * Window History:: Each window remembers the buffers displayed in it. * Dedicated Windows:: How to avoid displaying another buffer in a specific window. @@ -1542,11 +1540,11 @@ direction as the existing window combination (otherwise, a new internal window is created anyway). @item window-size -This means that @code{display-buffer} makes a new parent window when it -splits a window and is passed a @code{window-height} or -@code{window-width} entry in the @var{alist} argument (@pxref{Display -Action Functions}). Otherwise, window splitting behaves as for a value -of @code{nil}. +This means that @code{display-buffer} makes a new parent window when +it splits a window and is passed a @code{window-height} or +@code{window-width} entry in the @var{alist} argument (@pxref{Buffer +Display Action Functions}). Otherwise, window splitting behaves as +for a value of @code{nil}. @item temp-buffer-resize In this case @code{with-temp-buffer-window} makes a new parent window @@ -1879,7 +1877,7 @@ most recently used one (@pxref{Cyclic Window Ordering}). @cindex ordering of windows, cyclic @cindex window ordering, cyclic - When you use the command @kbd{C-x o} (@code{other-window}) to select + When you use the command @w{@kbd{C-x o}} (@code{other-window}) to select some other window, it moves through live windows in a specific order. For any given configuration of windows, this order never varies. It is called the @dfn{cyclic ordering of windows}. @@ -1899,7 +1897,7 @@ if omitted or @code{nil}, it defaults to the selected window. The optional argument @var{minibuf} specifies whether minibuffer windows should be included in the cyclic ordering. Normally, when @var{minibuf} is @code{nil}, a minibuffer window is included only if it is currently -active; this matches the behavior of @kbd{C-x o}. (Note that a +active; this matches the behavior of @w{@kbd{C-x o}}. (Note that a minibuffer window is active as long as its minibuffer is in use; see @ref{Minibuffers}). @@ -2083,7 +2081,8 @@ variables in the specified buffer. However, if the optional argument @var{keep-margins} is non-@code{nil}, it leaves @var{window}'s display margins, fringes and scroll bar settings alone. -When writing an application, you should normally use the higher-level +When writing an application, you should normally use +@code{display-buffer} (@pxref{Choosing Window}) or the higher-level functions described in @ref{Switching Buffers}, instead of calling @code{set-window-buffer} directly. @@ -2168,7 +2167,6 @@ frame on its terminal, the buffer is replaced anyway. @node Switching Buffers @section Switching to a Buffer in a Window @cindex switching to a buffer -@cindex displaying a buffer This section describes high-level functions for switching to a specified buffer in some window. In general, ``switching to a buffer'' means to @@ -2327,32 +2325,71 @@ unless @var{norecord} is non-@code{nil}. @end deffn +@node Displaying Buffers +@section Displaying a Buffer in a Suitable Window +@cindex buffer display +@cindex displaying a buffer + +This section describes lower-level functions Emacs uses to find or +create a window for displaying a specified buffer. The common +workhorse of these functions is @code{display-buffer} which eventually +handles all incoming requests for buffer display (@pxref{Choosing +Window}). + + @code{display-buffer} delegates the task of finding a suitable +window to so-called action functions (@pxref{Buffer Display Action +Functions}). Before, @code{display-buffer} compiles a so-called +action alist---a special association list action functions can use to +fine-tune their behavior--- and passes that alist on to each action +function it calls (@pxref{Buffer Display Action Alists}). + + The behavior of @code{display-buffer} is highly customizable. To +understand how customizations are put into practice, readers may want +to study examples illustrating the precedence acquired by +@code{display-buffer} for calling action functions (@pxref{Precedence +of Action Functions}). To avoid that Lisp programs calling +@code{display-buffer} come into conflict with users customizing its +behavior, it may make sense to follow a number of guidelines which are +sketched in the final part of this section (@pxref{The Zen of Buffer +Display}). + +@menu +* Choosing Window:: How to choose a window for displaying a buffer. +* Buffer Display Action Functions:: Support functions for buffer display. +* Buffer Display Action Alists:: Alists for fine-tuning buffer display. +* Choosing Window Options:: Extra options affecting how buffers are displayed. +* Precedence of Action Functions:: Examples to explain the precedence of + action functions. +* The Zen of Buffer Display:: How to avoid that buffers get lost in between + windows. +@end menu + + @node Choosing Window -@section Choosing a Window for Display +@subsection Choosing a Window for Displaying a Buffer - The command @code{display-buffer} flexibly chooses a window for +The command @code{display-buffer} flexibly chooses a window for display, and displays a specified buffer in that window. It can be called interactively, via the key binding @kbd{C-x 4 C-o}. It is also used as a subroutine by many functions and commands, including @code{switch-to-buffer} and @code{pop-to-buffer} (@pxref{Switching Buffers}). +@cindex buffer display display action @cindex display action -@cindex action function, for @code{display-buffer} -@cindex action alist, for @code{display-buffer} This command performs several complex steps to find a window to display in. These steps are described by means of @dfn{display actions}, which have the form @code{(@var{function} . @var{alist})}. Here, @var{function} is either a function or a list of functions, -which we refer to as @dfn{action functions}; @var{alist} is an -association list, which we refer to as an @dfn{action alist}. +which we refer to as ``action functions'' (@pxref{Buffer Display +Action Functions}); @var{alist} is an association list, which we refer +to as ``action alist'' (@pxref{Buffer Display Action Alists}). See +@ref{The Zen of Buffer Display}, for samples of display actions. An action function accepts two arguments: the buffer to display and an action alist. It attempts to display the buffer in some window, picking or creating a window according to its own criteria. If successful, it returns the window; otherwise, it returns @code{nil}. -@xref{Display Action Functions}, for a list of predefined action -functions. @code{display-buffer} works by combining display actions from several sources, and calling the action functions in turn, until one @@ -2364,11 +2401,13 @@ This command makes @var{buffer-or-name} appear in some window, without selecting the window or making the buffer current. The argument @var{buffer-or-name} must be a buffer or the name of an existing buffer. The return value is the window chosen to display the buffer. +It is @code{nil} if no suitable window was found. The optional argument @var{action}, if non-@code{nil}, should normally be a display action (described above). @code{display-buffer} builds a list of action functions and an action alist, by consolidating display -actions from the following sources (in order): +actions from the following sources (in order of their precedence, +highest ranking first): @itemize @item @@ -2388,24 +2427,49 @@ The constant @code{display-buffer-fallback-action}. @end itemize @noindent -Each action function is called in turn, passing the buffer as the -first argument and the combined action alist as the second argument, -until one of the functions returns non-@code{nil}. The caller can -pass @code{(allow-no-window . t)} as an element of the action alist to -indicate its readiness to handle the case of not displaying the -buffer in a window. +In practice this means that @code{display-buffer} builds a list of all +action functions specified by these display actions. The first +element of this list is the first action function specified by +@code{display-buffer-overriding-action}, if any. Its last element is +@code{display-buffer-pop-up-frame}---the last action function +specified by @code{display-buffer-fallback-action}. Duplicates are +not removed from this list---hence one and the same action function +may be called multiple times during one call of @code{display-buffer}. + +@code{display-buffer} calls the action functions specified by this +list in turn, passing the buffer as the first argument and the +combined action alist as the second argument, until one of the +functions returns non-@code{nil}. See @ref{Precedence of Action +Functions}, for examples how display actions specified by different +sources are processed by @code{display-buffer}. + +Note that the second argument is always the list of @emph{all} action +alist entries specified by the sources named above. Hence, the first +element of that list is the first action alist entry specified by +@code{display-buffer-overriding-action}, if any. Its last element is +the last alist entry of @code{display-buffer-base-action}, if any (the +action alist of @code{display-buffer-fallback-action} is empty). + +Note also, that the combined action alist may contain duplicate +entries and entries for the same key with different values. As a +rule, action functions always use the first association of a key they +find. Hence, the association an action function uses is not +necessarily the association provided by the display action that +specified that action function, The argument @var{action} can also have a non-@code{nil}, non-list value. This has the special meaning that the buffer should be displayed in a window other than the selected one, even if the selected window is already displaying it. If called interactively -with a prefix argument, @var{action} is @code{t}. +with a prefix argument, @var{action} is @code{t}. Lisp programs +should always supply a list value. The optional argument @var{frame}, if non-@code{nil}, specifies which frames to check when deciding whether the buffer is already displayed. It is equivalent to adding an element @code{(reusable-frames -. @var{frame})} to the action alist of @var{action}. @xref{Display -Action Functions}. +. @var{frame})} to the action alist of @var{action} (@pxref{Buffer +Display Action Alists}). The @var{frame} argument is provided for +compatibility reasons, Lisp programs should not use it. @end deffn @defvar display-buffer-overriding-action @@ -2418,10 +2482,10 @@ default value is empty, i.e., @code{(nil . nil)}. The value of this option is an alist mapping conditions to display actions. Each condition may be either a regular expression matching a buffer name or a function that takes two arguments: a buffer name and -the @var{action} argument passed to @code{display-buffer}. If the name -of the buffer passed to @code{display-buffer} either matches a regular -expression in this alist or the function specified by a condition -returns non-@code{nil}, then @code{display-buffer} uses the +the @var{action} argument passed to @code{display-buffer}. If the +name of the buffer passed to @code{display-buffer} either matches a +regular expression in this alist or the function specified by a +condition returns non-@code{nil}, then @code{display-buffer} uses the corresponding display action to display the buffer. @end defopt @@ -2437,73 +2501,126 @@ This display action specifies the fallback behavior for @end defvr -@node Display Action Functions -@section Action Functions for @code{display-buffer} +@node Buffer Display Action Functions +@subsection Action Functions for Buffer Display +@cindex buffer display action function +@cindex action function, for buffer display + +An @dfn{action function} is a function @code{display-buffer} calls for +choosing a window to display a buffer. Action functions take two +arguments: @var{buffer}, the buffer to display, and @var{alist}, an +action alist (@pxref{Buffer Display Action Alists}). They are +supposed to return a window displaying @var{buffer} if they succeed +and @code{nil} if they fail. -The following basic action functions are defined in Emacs. Each of -these functions takes two arguments: @var{buffer}, the buffer to -display, and @var{alist}, an action alist. Each action function -returns the window if it succeeds, and @code{nil} if it fails. + The following basic action functions are defined in Emacs. @defun display-buffer-same-window buffer alist This function tries to display @var{buffer} in the selected window. It fails if the selected window is a minibuffer window or is dedicated to another buffer (@pxref{Dedicated Windows}). It also fails if -@var{alist} has a non-@code{nil} @code{inhibit-same-window} entry. +@var{alist} has a non-@code{nil} @code{inhibit-same-window} entry +(@pxref{Buffer Display Action Alists}). @end defun @defun display-buffer-reuse-window buffer alist -This function tries to display @var{buffer} by finding a window -that is already displaying it. +This function tries to display @var{buffer} by finding a window that +is already displaying it. If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry, -the selected window is not eligible for reuse. If @var{alist} -contains a @code{reusable-frames} entry, its value determines which -frames to search for a reusable window: - -@itemize @bullet -@item -@code{nil} means consider windows on the selected frame. -(Actually, the last non-minibuffer frame.) -@item -@code{t} means consider windows on all frames. -@item -@code{visible} means consider windows on all visible frames. -@item -0 means consider windows on all visible or iconified frames. -@item -A frame means consider windows on that frame only. -@end itemize - -Note that these meanings differ slightly from those of the -@var{all-frames} argument to @code{next-window} (@pxref{Cyclic Window -Ordering}). - -If @var{alist} contains no @code{reusable-frames} entry, this function -normally searches just the selected frame; however, if the variable -@code{pop-up-frames} is non-@code{nil}, it searches all frames on the -current terminal. @xref{Choosing Window Options}. +the selected window is not eligible for reuse. The set of frames to +search for a window already displaying @var{buffer} can be specified +with the help of a @code{reusable-frames} action alist entry +(@pxref{Buffer Display Action Alists}). If @var{alist} contains no +@code{reusable-frames} entry, this function searches just the selected +frame. -If this function chooses a window on another frame, it makes that frame -visible and, unless @var{alist} contains an @code{inhibit-switch-frame} -entry (@pxref{Choosing Window Options}), raises that frame if necessary. +If this function chooses a window on another frame, it makes that +frame visible and, unless @var{alist} contains an +@code{inhibit-switch-frame} entry (@pxref{Buffer Display Action +Alists}), raises that frame if necessary. @end defun @defun display-buffer-reuse-mode-window buffer alist This function tries to display @var{buffer} by finding a window that is displaying a buffer in a given mode. -If @var{alist} contains a @code{mode} entry, its value is a major mode -(a symbol) or a list of major modes. If @var{alist} contains no -@code{mode} entry, the current major mode of @var{buffer} is used. A -window is a candidate if it displays a buffer that derives from one of -the given modes. +If @var{alist} contains a @code{mode} entry, its value specifes a +major mode (a symbol) or a list of major modes. If @var{alist} +contains no @code{mode} entry, the current major mode of @var{buffer} +is used instead. A window is a candidate if it displays a buffer +whose mode derives from one of the modes specified thusly. -The behavior is also controlled by entries for +The behavior is also controlled by @var{alist} entries for @code{inhibit-same-window}, @code{reusable-frames} and -@code{inhibit-switch-frame} as is done in the function -@code{display-buffer-reuse-window}. +@code{inhibit-switch-frame} (@pxref{Buffer Display Action Alists}) as +is done in the function @code{display-buffer-reuse-window}. +@end defun +@defun display-buffer-pop-up-window buffer alist +This function tries to display @var{buffer} by splitting the largest +or least recently-used window (usually located on the selected frame). +It actually performs the split by calling the function specified by +@code{split-window-preferred-function} (@pxref{Choosing Window +Options}). + +The size of the new window can be adjusted by supplying +@code{window-height} and @code{window-width} entries in @var{alist} +(@pxref{Buffer Display Action Alists}). If @var{alist} contains a +@code{preserve-size} entry, Emacs will also try to preserve the size +of the new window during future resize operations (@pxref{Preserving +Window Sizes}). + +This function fails if no window can be split. More often than not +this happens because no window is large enough to allow splitting. +Setting @code{split-height-threshold} or @code{split-width-threshold} +(@pxref{Choosing Window Options}) to lower values may help in this +regard. Spliting also fails when the selected frame has an +@code{unsplittable} frame parameter; @pxref{Buffer Parameters}. +@end defun + +@defun display-buffer-in-previous-window buffer alist +This function tries to display @var{buffer} in a window previously +showing it. If @var{alist} has a non-@code{nil} +@code{inhibit-same-window} entry, the selected window is not eligible +for reuse. If @var{alist} contains a @code{reusable-frames} entry, +its value determines which frames to search for a suitable window +(@pxref{Buffer Display Action Alists}). + +If @var{alist} has a @code{previous-window} entry and the window +specified by that entry is live and not dedicated to another buffer, +that window will be preferred, even if it never showed @var{buffer} +before. +@end defun + +@defun display-buffer-use-some-window buffer alist +This function tries to display @var{buffer} by choosing an existing +window and displaying the buffer in that window. It can fail if all +windows are dedicated to another buffer (@pxref{Dedicated Windows}). +@end defun + +@defun display-buffer-below-selected buffer alist +This function tries to display @var{buffer} in a window below the +selected window. If there is a window below the selected one and that +window already displays @var{buffer}, it reuses that window. + +If there is no such window, this function tries to create a new window +by splitting the selected one and display @var{buffer} there. It will +also try to adjust that window's size provided @var{alist} contains a +suitable @code{window-height} or @code{window-width} entry, see above. + +If splitting the selected window fails and there is a non-dedicated +window below the selected one showing some other buffer, it tries to +use that window for showing @var{buffer}. +@end defun + +@defun display-buffer-at-bottom buffer alist +This function tries to display @var{buffer} in a window at the bottom +of the selected frame. + +This either tries to split the window at the bottom of the frame or +the frame's root window, or to reuse an existing window at the bottom +of the selected frame. @end defun @defun display-buffer-pop-up-frame buffer alist @@ -2511,8 +2628,8 @@ This function creates a new frame, and displays the buffer in that frame's window. It actually performs the frame creation by calling the function specified in @code{pop-up-frame-function} (@pxref{Choosing Window Options}). If @var{alist} contains a -@code{pop-up-frame-parameters} entry, the associated value -is added to the newly created frame's parameters. +@code{pop-up-frame-parameters} entry, the associated value is added to +the newly created frame's parameters. @end defun @defun display-buffer-in-child-frame buffer alist @@ -2528,20 +2645,21 @@ corresponding entry must be added to @var{alist}. The appearance of child frames is largely dependent on the parameters provided via @var{alist}. It is advisable to use at least ratios to specify the size (@pxref{Size Parameters}) and the position -(@pxref{Position Parameters}) of the child frame and to add the -@code{keep-ratio} in order to make sure that the child frame remains -visible. For other parameters that should be considered see @ref{Child -Frames}. +(@pxref{Position Parameters}) of the child frame and to add a +@code{keep-ratio} parameter (@pxref{Frame Interaction Parameters}) in +order to make sure that the child frame remains visible. For other +parameters that should be considered see @ref{Child Frames}. @end defun @defun display-buffer-use-some-frame buffer alist -This function tries to display @var{buffer} by trying to find a -frame that meets a predicate (by default any frame other than the -current frame). +This function tries to display @var{buffer} by finding a frame that +meets a predicate (by default any frame other than the selected +frame). -If this function chooses a window on another frame, it makes that frame -visible and, unless @var{alist} contains an @code{inhibit-switch-frame} -entry (@pxref{Choosing Window Options}), raises that frame if necessary. +If this function chooses a window on another frame, it makes that +frame visible and, unless @var{alist} contains an +@code{inhibit-switch-frame} entry (@pxref{Buffer Display Action +Alists}), raises that frame if necessary. If @var{alist} has a non-@code{nil} @code{frame-predicate} entry, its value is a function taking one argument (a frame), returning @@ -2549,233 +2667,282 @@ non-@code{nil} if the frame is a candidate; this function replaces the default predicate. If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry, -the selected window is used; thus if the selected frame has a single -window, it is not used. +the selected window is not used; thus if the selected frame has a +single window, it is not used. @end defun -@defun display-buffer-pop-up-window buffer alist -This function tries to display @var{buffer} by splitting the largest -or least recently-used window (typically one on the selected frame). -It actually performs the split by calling the function specified in -@code{split-window-preferred-function} (@pxref{Choosing Window -Options}). +@defun display-buffer-no-window buffer alist +If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then +this function does not display @var{buffer} and returns the symbol +@code{fail}. This constitutes the only exception to the convention +that an action function returns either @code{nil} or a window showing +@var{buffer}. If @var{alist} has no such @code{allow-no-window} +entry, this function returns @code{nil}. + +If this function returns @code{fail}, @code{display-buffer} will skip +the execution of any further display actions and return @code{nil} +immediately. If this function returns @code{nil}, +@code{display-buffer} will continue with the next display action, if +any. -The size of the new window can be adjusted by supplying -@code{window-height} and @code{window-width} entries in @var{alist}. To -adjust the window's height, use an entry whose @sc{car} is -@code{window-height} and whose @sc{cdr} is one of: +It is assumed that when a caller of @code{display-buffer} specifies a +non-@code{nil} @code{allow-no-window} entry, it is also able to handle +a @code{nil} return value. +@end defun + +Two action functions are described in their proper +sections---@code{display-buffer-in-side-window} (@pxref{Displaying +Buffers in Side Windows}) and @code{display-buffer-in-atom-window} +(@pxref{Atomic Windows}). + + +@node Buffer Display Action Alists +@subsection Action Alists for Buffer Display +@cindex buffer display action alist +@cindex action alist for buffer display + +An @dfn{action alist} is an association list mapping predefined +symbols recognized by action functions to values these functions are +supposed to interpret accordingly. In each call, +@code{display-buffer} constructs a new, possibly empty action alist +and passes that entire list on to any action function it calls. + + By design, action functions are free in their interpretation of +action alist entries. In fact, some entries like +@code{allow-no-window} or @code{previous-window} have a meaning only +for one or a few action functions and are ignored by the rest. Other +entries, like @code{inhibit-same-window} or @code{window-parameters}, +are supposed to be respected by most action functions including those +provided by application programs and external packages. + + In the previous subsection we have described in detail how +individual action functions interpret the action alist entries they +care about. Here we give a reference list of all known action alist +entries according to their symbols, together with their values and +action functions that recognize them. Throughout this list, the terms +``buffer'' will refer to the buffer @code{display-buffer} is supposed +to display and ``value'' to the entry's value. + +@table @code +@vindex inhibit-same-window@r{, a buffer display action alist entry} +@item inhibit-same-window +If the value is non-@code{nil}, this signals that the selected window +must not be used for displaying the buffer. All action functions that +(re-)use an existing window should respect this entry. + +@vindex previous-window@r{, a buffer display action alist entry} +@item previous-window +The value must specify a window that may have displayed the buffer +previously. @code{display-buffer-in-previous-window} (@pxref{Buffer +Display Action Functions}) will give preference to such a window +provided it is still live and not dedicated to another buffer. + +@vindex mode@r{, a buffer display action alist entry} +@item mode +The value is either a major mode or a list of major modes. +@code{display-buffer-reuse-mode-window} (@pxref{Buffer Display Action +Functions}) may reuse a window whenever the value specified by this +entry matches the major mode of that window's buffer. Other action +functions ignore such entries. + +@vindex frame-predicate@r{, a buffer display action alist entry} +@item frame-predicate +The value must be a function taking one argument (a frame), supposed +to return non-@code{nil} if that frame is a candidate for displaying +the buffer. This entry is used by +@code{display-buffer-use-some-frame} (@pxref{Buffer Display Action +Functions}). + +@vindex reusable-frames@r{, a buffer display action alist entry} +@item reusable-frames +The value specifies the frame(s) to search for a window that can be +reused because it already displays the buffer. It can be set as +follows: + +@itemize @bullet +@item +@code{nil} means consider only windows on the selected frame. +(Actually, the last frame used that is not a minibuffer-only frame.) +@item +@code{t} means consider windows on all frames. +@item +@code{visible} means consider windows on all visible frames. +@item +0 means consider windows on all visible or iconified frames. +@item +A frame means consider windows on that frame only. +@end itemize + +Note that the meaning of @code{nil} differs slightly from that of the +@var{all-frames} argument to @code{next-window} (@pxref{Cyclic Window +Ordering}). + +A major client of this is @code{display-buffer-reuse-window} +(@pxref{Buffer Display Action Functions}) but all other action +functions that try to reuse a window are affected as well. + +@vindex inhibit-switch-frame@r{, a buffer display action alist entry} +@item inhibit-switch-frame +A non-@code{nil} value prevents another frame from being raised or +selected, if the window chosen by @code{display-buffer} is displayed +there. Primarily affected by this are +@code{display-buffer-use-some-frame} and +@code{display-buffer-reuse-window} (@pxref{Buffer Display Action +Functions}). @code{display-buffer-pop-up-frame} should be affected as +well but there is no guarantee that the window manager will comply. + +@vindex window-parameters@r{, a buffer display action alist entry} +@item window-parameters +The value specifies an alist of window parameters to give the chosen +window. All action functions that choose a window should process this +entry. + +@vindex window-height@r{, a buffer display action alist entry} +@item window-height +The value specifies whether and how to adjust the height of the chosen +window and can be provided as follows: @itemize @bullet @item -@code{nil} means to leave the height of the new window alone. +@code{nil} means to leave the height of the chosen window alone. @item -A number specifies the desired height of the new window. An integer -specifies the number of lines of the window. A floating-point +A number specifies the desired height of the chosen window. An +integer specifies the number of lines of the window. A floating-point number gives the fraction of the window's height with respect to the height of the frame's root window. @item -If the @sc{cdr} specifies a function, that function is called with one -argument: the new window. The function is supposed to adjust the +If the value specifies a function, that function is called with one +argument---the chosen window. The function is supposed to adjust the height of the window; its return value is ignored. Suitable functions are @code{shrink-window-if-larger-than-buffer} and @code{fit-window-to-buffer}, see @ref{Resizing Windows}. @end itemize -To adjust the window's width, use an entry whose @sc{car} is -@code{window-width} and whose @sc{cdr} is one of: +All action functions that choose a window should process this entry. + +@vindex window-width@r{, a buffer display action alist entry} +@item window-width +This entry is similar to the @code{window-height} entry described +before but can be used to adjust the chosen window's width instead. +The value can be one of the following: @itemize @bullet @item -@code{nil} means to leave the width of the new window alone. +@code{nil} means to leave the width of the chosen window alone. @item -A number specifies the desired width of the new window. An integer +A number specifies the desired width of the chosen window. An integer specifies the number of columns of the window. A floating-point number gives the fraction of the window's width with respect to the width of the frame's root window. @item -If the @sc{cdr} specifies a function, that function is called with one -argument: the new window. The function is supposed to adjust the width -of the window; its return value is ignored. +If the value specifies a function, that function is called with one +argument---the chosen window. The function is supposed to adjust the +width of the window; its return value is ignored. @end itemize -If @var{alist} contains a @code{preserve-size} entry, Emacs will try to -preserve the size of the new window during future resize operations -(@pxref{Preserving Window Sizes}). The @sc{cdr} of that entry must be a -cons cell whose @sc{car}, if non-@code{nil}, means to preserve the width -of the window and whose @sc{cdr}, if non-@code{nil}, means to preserve -the height of the window. - -This function can fail if no window splitting can be performed for some -reason (e.g., if the selected frame has an @code{unsplittable} frame -parameter; @pxref{Buffer Parameters}). -@end defun - -@defun display-buffer-below-selected buffer alist -This function tries to display @var{buffer} in a window below the -selected window. If there is a window below the selected one and that -window already displays @var{buffer}, it reuses that window. - -If there is no such window, this function tries to create a new window -by splitting the selected one and display @var{buffer} there. It will -also adjust that window's size provided @var{alist} contains a suitable -@code{window-height} or @code{window-width} entry, see above. - -If splitting the selected window fails and there is a non-dedicated -window below the selected one showing some other buffer, it uses that -window for showing @var{buffer}. -@end defun - -@defun display-buffer-in-previous-window buffer alist -This function tries to display @var{buffer} in a window previously -showing it. If @var{alist} has a non-@code{nil} -@code{inhibit-same-window} entry, the selected window is not eligible -for reuse. If @var{alist} contains a @code{reusable-frames} entry, its -value determines which frames to search for a suitable window as with -@code{display-buffer-reuse-window}. - -If @var{alist} has a @code{previous-window} entry, the window -specified by that entry will override any other window found by the -methods above, even if that window never showed @var{buffer} before. -@end defun - -@defun display-buffer-at-bottom buffer alist -This function tries to display @var{buffer} in a window at the bottom -of the selected frame. - -This either splits the window at the bottom of the frame or the -frame's root window, or reuses an existing window at the bottom of the -selected frame. -@end defun - -@defun display-buffer-use-some-window buffer alist -This function tries to display @var{buffer} by choosing an existing -window and displaying the buffer in that window. It can fail if all -windows are dedicated to another buffer (@pxref{Dedicated Windows}). -@end defun - -@defun display-buffer-no-window buffer alist -If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then -this function does not display @code{buffer}. This allows you to -override the default action and avoid displaying the buffer. It is -assumed that when the caller specifies a non-@code{nil} -@code{allow-no-window} value it can handle a @code{nil} value returned -from @code{display-buffer} in this case. -@end defun - -If the @var{alist} argument of any of these functions contains a -@code{window-parameters} entry, @code{display-buffer} assigns the -elements of the associated value as window parameters of the chosen -window. - - To illustrate the use of action functions, consider the following -example. - -@example -@group -(display-buffer - (get-buffer-create "*foo*") - '((display-buffer-reuse-window - display-buffer-pop-up-window - display-buffer-pop-up-frame) - (reusable-frames . 0) - (window-height . 10) (window-width . 40))) -@end group -@end example - -@noindent -Evaluating the form above will cause @code{display-buffer} to proceed as -follows: If a buffer called *foo* already appears on a visible or -iconified frame, it will reuse its window. Otherwise, it will try to -pop up a new window or, if that is impossible, a new frame and show the -buffer there. If all these steps fail, it will proceed using whatever -@code{display-buffer-base-action} and -@code{display-buffer-fallback-action} prescribe. - - Furthermore, @code{display-buffer} will try to adjust a reused window -(provided *foo* was put by @code{display-buffer} there before) or a -popped-up window as follows: If the window is part of a vertical -combination, it will set its height to ten lines. Note that if, instead -of the number 10, we specified the function -@code{fit-window-to-buffer}, @code{display-buffer} would come up with a -one-line window to fit the empty buffer. If the window is part of a -horizontal combination, it sets its width to 40 columns. Whether a new -window is vertically or horizontally combined depends on the shape of -the window split and the values of -@code{split-window-preferred-function}, @code{split-height-threshold} -and @code{split-width-threshold} (@pxref{Choosing Window Options}). - - Now suppose we combine this call with a preexisting setup for -@code{display-buffer-alist} as follows. - -@example -@group -(let ((display-buffer-alist - (cons - '("\\*foo\\*" - (display-buffer-reuse-window display-buffer-below-selected) - (reusable-frames) - (window-height . 5)) - display-buffer-alist))) - (display-buffer - (get-buffer-create "*foo*") - '((display-buffer-reuse-window - display-buffer-pop-up-window - display-buffer-pop-up-frame) - (reusable-frames . 0) - (window-height . 10) (window-width . 40)))) -@end group -@end example +All action functions that choose a window should process this entry. + +@vindex preserve-size@r{, a buffer display action alist entry} +@item preserve-size +If non-@code{nil} such an entry tells Emacs to preserve the size of +the window chosen (@pxref{Preserving Window Sizes}). The value should +be either @code{(t . nil)} to preserve the width of the window, +@code{(nil . t)} to preserve its height or @code{(t . t)} to preserve +both, its width and its height. All action functions that choose a +window should process this entry. + +@vindex pop-up-frame-parameters@r{, a buffer display action alist entry} +@item pop-up-frame-parameters +The value specifies an alist of frame parameters to give a new frame, +if one is created. @code{display-buffer-pop-up-frame} (@pxref{Buffer +Display Action Functions}) is its one and only addressee. + +@vindex parent-frame@r{, a buffer display action alist entry} +@item parent-frame +The value specifies the parent frame to be used when the buffer is +displayed on a child frame. This entry is used by +@code{display-buffer-in-child-frame} (@pxref{Buffer Display Action +Functions}) only. + +@vindex child-frame-parameters@r{, a buffer display action alist entry} +@item child-frame-parameters +The value specifies an alist of frame parameters used when the buffer +is displayed on a child frame. This entry is used by +@code{display-buffer-in-child-frame} (@pxref{Buffer Display Action +Functions}) only. + +@vindex side@r{, a buffer display action alist entry} +@item side +The value denotes the side of the frame or window where a new window +displaying the buffer shall be created. This entry is used by +@code{display-buffer-in-side-window} to indicate the side of the frame +where a new side window shall be placed (@pxref{Displaying Buffers in +Side Windows}). It is also used by +@code{display-buffer-in-atom-window} to indicate the side of an +existing window where the new window shall be located (@pxref{Atomic +Windows}). -@noindent -This form will have @code{display-buffer} first try reusing a window -that shows *foo* on the selected frame. If there's no such window, it -will try to split the selected window or, if that is impossible, use the -window below the selected window. +@vindex slot@r{, a buffer display action alist entry} +@item slot +If non-@code{nil}, the value specifies the slot of the side window +supposed to display the buffer. This entry is used by +@code{display-buffer-in-side-window} only (@pxref{Displaying Buffers +in Side Windows}). - If there's no window below the selected one, or the window below the -selected one is dedicated to its buffer, @code{display-buffer} will -proceed as described in the previous example. Note, however, that when -it tries to adjust the height of any reused or popped-up window, it will -in any case try to set its number of lines to 5 since that value -overrides the corresponding specification in the @var{action} argument -of @code{display-buffer}. +@vindex window@r{, a buffer display action alist entry} +@item window +The value specifies a window that is in some way related to the window +chosen by @code{display-buffer}. This entry is currently used by +@code{display-buffer-in-atom-window} to indicate the window on whose +side the new window shall be created (@pxref{Atomic Windows}). + +@vindex allow-no-window@r{, a buffer display action alist entry} +@item allow-no-window +If the value is non-@code{nil}, @code{display-buffer} does not +necessarily have to display the buffer and the caller is prepared to +accept that. This entry is not intended for user customizations since +there is no guarantee that an arbitrary caller of +@code{display-buffer} will be able to handle the case that no window +will display the buffer. @code{display-buffer-no-window} +(@pxref{Buffer Display Action Functions}) is the only action function +that cares about this entry. +@end table @node Choosing Window Options -@section Additional Options for Displaying Buffers +@subsection Additional Options for Displaying Buffers -The behavior of the standard display actions of @code{display-buffer} -(@pxref{Choosing Window}) can be modified by a variety of user -options. +The behavior of buffer display actions (@pxref{Choosing Window}) can +be further modified by the following user options. @defopt pop-up-windows If the value of this variable is non-@code{nil}, @code{display-buffer} is allowed to split an existing window to make a new window for displaying in. This is the default. -This variable is provided mainly for backward compatibility. It is +This variable is provided for backward compatibility only. It is obeyed by @code{display-buffer} via a special mechanism in -@code{display-buffer-fallback-action}, which only calls the action -function @code{display-buffer-pop-up-window} (@pxref{Display Action -Functions}) when the value is @code{nil}. It is not consulted by -@code{display-buffer-pop-up-window} itself, which the user may specify -directly in @code{display-buffer-alist} etc. +@code{display-buffer-fallback-action}, which calls the action function +@code{display-buffer-pop-up-window} (@pxref{Buffer Display Action +Functions}) when the value of this option is non-@code{nil}. It is +not consulted by @code{display-buffer-pop-up-window} itself, which the +user may specify directly in @code{display-buffer-alist} etc. @end defopt @defopt split-window-preferred-function This variable specifies a function for splitting a window, in order to make a new window for displaying a buffer. It is used by the @code{display-buffer-pop-up-window} action function to actually split -the window (@pxref{Display Action Functions}). +the window (@pxref{Buffer Display Action Functions}). -The default value is @code{split-window-sensibly}, which is documented -below. The value must be a function that takes one argument, a window, -and return either a new window (which will be used to display the -desired buffer) or @code{nil} (which means the splitting failed). +The value must be a function that takes one argument, a window, and +return either a new window (which will be used to display the desired +buffer) or @code{nil} (which means the splitting failed). The default +value is @code{split-window-sensibly}, which is documented next. @end defopt @defun split-window-sensibly &optional window @@ -2797,19 +2964,19 @@ well, this function gives up and returns @code{nil}. @end defun @defopt split-height-threshold -This variable, used by @code{split-window-sensibly}, specifies whether -to split the window placing the new window below. If it is an +This variable specifies whether @code{split-window-sensibly} is +allowed to split the window placing the new window below. If it is an integer, that means to split only if the original window has at least that many lines. If it is @code{nil}, that means not to split this way. @end defopt @defopt split-width-threshold -This variable, used by @code{split-window-sensibly}, specifies whether -to split the window placing the new window to the right. If the value -is an integer, that means to split only if the original window has at -least that many columns. If the value is @code{nil}, that means not -to split this way. +This variable specifies whether @code{split-window-sensibly} is +allowed to split the window placing the new window to the right. If +the value is an integer, that means to split only if the original +window has at least that many columns. If the value is @code{nil}, +that means not to split this way. @end defopt @defopt even-window-sizes @@ -2839,9 +3006,9 @@ search any visible or iconified frame, not just the selected frame. This variable is provided mainly for backward compatibility. It is obeyed by @code{display-buffer} via a special mechanism in @code{display-buffer-fallback-action}, which calls the action function -@code{display-buffer-pop-up-frame} (@pxref{Display Action Functions}) -if the value is non-@code{nil}. (This is done before attempting to -split a window.) This variable is not consulted by +@code{display-buffer-pop-up-frame} (@pxref{Buffer Display Action +Functions}) if the value is non-@code{nil}. (This is done before +attempting to split a window.) This variable is not consulted by @code{display-buffer-pop-up-frame} itself, which the user may specify directly in @code{display-buffer-alist} etc. @end defopt @@ -2849,8 +3016,8 @@ directly in @code{display-buffer-alist} etc. @defopt pop-up-frame-function This variable specifies a function for creating a new frame, in order to make a new window for displaying a buffer. It is used by the -@code{display-buffer-pop-up-frame} action function (@pxref{Display -Action Functions}). +@code{display-buffer-pop-up-frame} action function (@pxref{Buffer +Display Action Functions}). The value should be a function that takes no arguments and returns a frame, or @code{nil} if no frame could be created. The default value @@ -2860,30 +3027,670 @@ is a function that creates a frame using the parameters specified by @defopt pop-up-frame-alist This variable holds an alist of frame parameters (@pxref{Frame -Parameters}), which is used by the default function in +Parameters}), which is used by the function specified by @code{pop-up-frame-function} to make a new frame. The default is @code{nil}. -@end defopt -@defopt same-window-buffer-names -A list of buffer names for buffers that should be displayed in the -selected window. If a buffer's name is in this list, -@code{display-buffer} handles the buffer by showing it in the selected -window. +This option is provided for backward compatibility only. Note, that +when @code{display-buffer-pop-up-frame} (@pxref{Buffer Display Action +Functions}) calls the function specified by +@code{pop-up-frame-function}, it prepends the value of all +@code{pop-up-frame-parameters} action alist entries to +@code{pop-up-frame-alist} so that the values specified by the action +alist entry effectively override any corresponding values of +@code{pop-up-frame-alist}. + +Hence, users should set up a @code{pop-up-frame-parameters} action +alist entry in @code{display-buffer-alist} instead of customizing +@code{pop-up-frame-alist}. Only this will guarantee that the value of +a parameter specified by the user overrides the value of that +parameter specified by the caller of @code{display-buffer}. @end defopt -@defopt same-window-regexps -A list of regular expressions that specify buffers that should be -displayed in the selected window. If the buffer's name matches any of -the regular expressions in this list, @code{display-buffer} handles the -buffer by showing it in the selected window. -@end defopt + Many efforts in the design of @code{display-buffer} have been given +to maintain compatibility with code that uses older options like +@code{pop-up-windows}, @code{pop-up-frames}, +@code{pop-up-frame-alist}, @code{same-window-buffer-names} and +@code{same-window-regexps}. Lisp Programs and users should refrain +from using these options. Above we already warned against customizing +@code{pop-up-frame-alist}. Here we describe how to convert the +remaining options to use display actions instead. + +@table @code +@item pop-up-windows +@vindex pop-up-windows@r{, replacement for} +This variable is @code{t} by default. Instead of customizing it to +@code{nil} and thus telling @code{display-buffer} what not to do, it's +much better to list in @code{display-buffer-base-action} the action +functions it should try instead as, for example: + +@example +@group +(customize-set-variable + 'display-buffer-base-action + '((display-buffer-reuse-window display-buffer-same-window + display-buffer-in-previous-window + display-buffer-use-some-window))) +@end group +@end example + +@item pop-up-frames +@vindex pop-up-frames@r{, replacement for} +Instead of customizing this variable to @code{t}, customize +@code{display-buffer-base-action}, for example, as follows: + +@example +@group +(customize-set-variable + 'display-buffer-base-action + '((display-buffer-reuse-window display-buffer-pop-up-frame) + (reusable-frames . 0))) +@end group +@end example + +@item same-window-buffer-names +@itemx same-window-regexps +@vindex same-window-buffer-names@r{, replacement for} +@vindex same-window-regexps@r{, replacement for} +Instead of adding a buffer name or a regular expression to one of +these options use a @code{display-buffer-alist} entry for that buffer +specifying the action function @code{display-buffer-same-window}. + +@example +@group +(customize-set-variable + 'display-buffer-alist + (cons '("\\*foo\\*" (display-buffer-same-window)) + display-buffer-alist)) +@end group +@end example +@end table + + +@node Precedence of Action Functions +@subsection Precedence of Action Functions +@cindex precedence of buffer display action functions +@cindex execution order of buffer display action functions + +From the past subsections we already know that @code{display-buffer} +must be supplied with a number of display actions (@pxref{Choosing +Window}) in order to display a buffer. In a completely uncustomized +Emacs, these actions are specified by +@code{display-buffer-fallback-action} in the following order of +precedence: Reuse a window, pop up a new window on the same frame, use +a window previously showing the buffer, use some window and pop up a +new frame. (Note that the remaining actions named by +@code{display-buffer-fallback-action} are void in an uncustomized +Emacs). + +Consider the following form: + +@example +(display-buffer (get-buffer-create "*foo*")) +@end example + +@noindent +Evaluating this form in the buffer @file{*scratch*} of an uncustomized +Emacs session will usually fail to reuse a window that shows +@file{*foo*} already but succeed in popping up a new window. +Evaluating the same form again will now not cause any visible +changes---@code{display-buffer} reused the window already showing +@file{*foo*} because that action was applicable and had the highest +precedence among all applicable actions. + + Popping up a new window will fail if there is not enough space on +the selected frame. In an uncustomized Emacs it typically fails when +there are already two windows on a frame. For example, if you now +type @w{@kbd{C-x 1}} followed by @w{@kbd{C-x 2}} and evaluate the form +once more, @file{*foo*} should show up in the lower +window---@code{display-buffer} just used ``some'' window. If, before +typing @w{@kbd{C-x 2}} you had typed @w{@kbd{C-x o}}, @file{*foo*} +would have been shown in the upper window because ``some'' window +stands for the ``least recently used'' window and the selected window +has been least recently used if and only if it is alone on its frame. + + Let's assume you did not type @w{@kbd{C-x o}} and @file{*foo*} is +shown in the lower window. Type @w{@kbd{C-x o}} to get there followed +by @w{@kbd{C-x left}} and evaluate the form again. This should +display @file{*foo*} in the same, lower window because that window had +already shown @file{*foo*} previously and was therefore chosen instead +of some other window. + + So far we have only observed the default behavior in an uncustomized +Emacs session. To see how this behavior can be customized let's +consider the option @code{display-buffer-base-action}. It provides a +very coarse customization which conceptually affects the display of +@emph{any} buffer. It can be used to supplement the actions supplied +by @code{display-buffer-fallback-action} by reordering them or by +adding actions that are not present there but fit more closely the +user's editing practice. It can be, however, also used to change the +default behavior in a more profound way. + + Let's consider a user who, as a rule, prefers to display buffers on +another frame. Such a user might provide the following customization: + +@example +@group +(customize-set-variable + 'display-buffer-base-action + '((display-buffer-reuse-window display-buffer-pop-up-frame) + (reusable-frames . 0))) +@end group +@end example + +@noindent +This setting will cause@code{display-buffer} to first try to find a +window showing the buffer on a visible or iconified frame and, if no +such frame exists, pop up a new frame. You can observe this behavior +on a graphical system by typing @w{@kbd{C-x 1}} in the window showing +@file{*scratch*} and evaluating our canonical @code{display-buffer} +form. This will usually create (and give focus to) a new frame whose +root window shows @file{*foo*}. Iconify that frame and evaluate the +canonical form again: @code{display-buffer} will reuse the window on +the new frame (usually raising the frame and giving it focus too). + + Only if creating a new frame fails, @code{display-buffer} will +apply the actions supplied by @code{display-buffer-fallback-action} +which means to again try to reuse a window, pop up a new window and so +on. A trivial way to make frame creation fail is supplied by the +following form: + +@example +@group +(let ((pop-up-frame-function 'ignore)) + (display-buffer (get-buffer-create "*foo*"))) +@end group +@end example + +@noindent +We will forget about that form immediately after observing that it +fails to create a new frame and uses a fallback action instead. + + Note that @code{display-buffer-reuse-window} appears redundant in +the customization of @code{display-buffer-base-action} because it is +already part of @code{display-buffer-fallback-action} and should be +tried there anyway. However, that would fail because due to the +precedence of @code{display-buffer-base-action} over +@code{display-buffer-fallback-action}, at that time +@code{display-buffer-pop-up-frame} would have already won the race. +In fact + +@example +@group +(customize-set-variable + 'display-buffer-base-action + '(display-buffer-pop-up-frame (reusable-frames . 0))) +@end group +@end example + +@noindent +would cause @code{display-buffer} to @emph{always} pop up a new frame +which is probably not what our user wants. + + So far, we have only shown how @emph{users} can customize the +default behavior of @code{display-buffer}. Let us now see how +@emph{applications} can change the course of @code{display-buffer}. +The canonical way to do that is to use the @var{action} argument of +@code{display-buffer} or a function that calls it like, for example, +@code{pop-to-buffer} (@pxref{Switching Buffers}). + + Suppose an application wants to display @file{*foo*} preferably +below the selected window (to immediately attract the attention of the +user to the new window) or, if that fails, in a window at the bottom +of the frame. It could do that with a call like + +@example +@group +(display-buffer + (get-buffer-create "*foo*") + '((display-buffer-below-selected display-buffer-at-bottom))) +@end group +@end example + +@noindent +In order to see how this new, modified form works, delete any frame +showing @file{*foo*}, type @w{@kbd{C-x 1}} followed by @w{@kbd{C-x 2}} in the +window showing @file{*scratch*} and subsequently evaluate that form. +@code{display-buffer} should split the upper window and show +@file{*foo*} in the new window. Alternatively, if after @w{@kbd{C-x 2}} +you had typed @w{@kbd{C-x o}}, @code{display-buffer} would have split the +window at the bottom instead. + + Suppose now that, before evaluating the new form, you have made the +selected window as small as possible, for example, by evaluating the +form @code{(fit-window-to-buffer)} in that window. In that case, +@code{display-buffer} would have failed to split the selected window +and would have split the frame's root window instead, effectively +displaying @file{*foo*} at the bottom of the frame. + + In either case, evaluating the new form a second time should reuse +the window already showing @file{*foo*} since both functions supplied +by the @var{action} argument try to reuse such a window first. + + By setting the @var{action} argument, an application effectively +overrules any customization of @code{display-buffer-base-action}. Our +user can now either accept the choice of the application or redouble +by customizing the option @code{display-buffer-alist} as follows: + +@example +@group +(customize-set-variable + 'display-buffer-alist + '(("\\*foo\\*" + (display-buffer-reuse-window display-buffer-pop-up-frame)))) +@end group +@end example + +@noindent +Trying this with the new, modified form above in a configuration that +does not show @file{*foo*} anywhere, will display @file{*foo*} on a +separate frame, completely ignoring the @var{action} argument of +@code{display-buffer}. + + Note that we didn't care to specify a @code{reusable-frames} action +alist entry in our specification of @code{display-buffer-alist}. +@code{display-buffer} always takes the first one it finds---in our +case the one specified by @code{display-buffer-base-action}. If we +wanted to use a different specification, for example, to exclude +iconified frames showing @file{*foo*} from the list of reusable ones, +we would have to specify that separately, however: + +@example +@group +(customize-set-variable + 'display-buffer-alist + '(("\\*foo\\*" + (display-buffer-reuse-window display-buffer-pop-up-frame) + (reusable-frames . visible)))) +@end group +@end example + +@noindent +If you try this, you will notice that repeated attempts to display +@file{*foo*} will succeed to reuse a frame only if that frame is +visible. + + The above example would allow the conclusion that users customize +@code{display-buffer-alist} for the sole purpose to overrule the +@var{action} argument chosen by applications. Such a conclusion would +be incorrect. @code{display-buffer-alist} is the standard option for +users to direct the course of display of specific buffers in a +preferred way regardless of whether the display is also guided by an +@var{action} argument. + + We can, however, reasonably conclude that customizing +@code{display-buffer-alist} differs from customizing +@code{display-buffer-base-action} in two major aspects: It is stronger +because it overrides the @var{action} argument of +@code{display-buffer}. And it allows to explicitly specify the +affected buffers. In fact, displaying other buffers is not affected +in any way by a customization for @file{*foo*}. For example, + +@example +(display-buffer (get-buffer-create "*bar*")) +@end example + +@noindent +continues being governed by the settings of +@code{display-buffer-base-action} and +@code{display-buffer-fallback-action} only. + + We could stop with our examples here but Lisp programs still have +an ace up their sleeves which they can use to overrule any +customization of @code{display-buffer-alist}. It's the variable +@code{display-buffer-overriding-action} which they can bind around +@code{display-buffer} calls as follows: + +@example +@group +(let ((display-buffer-overriding-action + '((display-buffer-same-window)))) + (display-buffer + (get-buffer-create "*foo*") + '((display-buffer-below-selected display-buffer-at-bottom)))) +@end group +@end example + +@noindent +Evaluating this form will usually display @file{*foo*} in the selected +window regardless of the @var{action} argument and any user +customizations. (Usually, an application will not bother to also +provide an @var{action} argument. Here it just serves to illustrate +the fact that it gets overridden.) + +It might be illustrative to look at the list of action functions +@code{display-buffer} would have tried to display @file{*foo*} with +the customizations we provided here. The list (including comments +explaining who added this and the subsequent elements) is: + +@example +@group +(display-buffer-same-window ;; `display-buffer-overriding-action' + display-buffer-reuse-window ;; `display-buffer-alist' + display-buffer-pop-up-frame + display-buffer-below-selected ;; ACTION argument + display-buffer-at-bottom + display-buffer-reuse-window ;; `display-buffer-base-action' + display-buffer-pop-up-frame + display-buffer--maybe-same-window ;; `display-buffer-fallback-action' + display-buffer-reuse-window + display-buffer--maybe-pop-up-frame-or-window + display-buffer-in-previous-window + display-buffer-use-some-window + display-buffer-pop-up-frame) +@end group +@end example + +@noindent +Note that among the internal functions listed here +@code{display-buffer--maybe-same-window} is effectively ignored while +@code{display-buffer--maybe-pop-up-frame-or-window} actually runs +@code{display-buffer-pop-up-window}. + +The action alist passed in each function call is: + +@example +@group +((reusable-frames . visible) + (reusable-frames . 0)) +@end group +@end example + +@noindent +which shows that we have used the second specification of +@code{display-buffer-alist} above overriding the specification +supplied by @code{display-buffer-base-action}. Suppose our user had +written that as + +@example +@group +(customize-set-variable + 'display-buffer-alist + '(("\\*foo\\*" + (display-buffer-reuse-window display-buffer-pop-up-frame) + (inhibit-same-window . t) + (reusable-frames . visible)))) +@end group +@end example + +@noindent +In this case the @code{inhibit-same-window} alist entry will +successfully invalidate the @code{display-buffer-same-window} +specification from @code{display-buffer-overriding-action} and +@code{display-buffer} will show @file{*foo*} on another frame. To +make @code{display-buffer-overriding-action} more robust in this +regard, the application would have to specify an appropriate +@code{inhibit-same-window} entry too, for example, as follows: + +@example +@group +(let ((display-buffer-overriding-action + '(display-buffer-same-window (inhibit-same-window . nil)))) + (display-buffer (get-buffer-create "*foo*"))) +@end group +@end example + +@noindent +This last example shows that while the precedence order of action +functions is fixed as described in @ref{Choosing Window}, an action +alist entry specified by a display action ranked lower in that order +can affect the execution of a higher ranked display action. + + +@node The Zen of Buffer Display +@subsection The Zen of Buffer Display +@cindex guidelines for buffer display +@cindex writing buffer display actions +@cindex buffer display conventions + +In its most simplistic form, a frame accommodates always one single +window that can be used for displaying a buffer. As a consequence, it +is always the latest call of @code{display-buffer} that will have +succeeded in placing its buffer there. + + Since working with such a frame is not very practical, Emacs by +default allows for more complex frame layouts controlled by the +default values of the frame size and the @code{split-height-threshold} +and @code{split-width-threshold} options. Displaying a buffer not yet +shown on a frame then either splits the single window on that frame or +(re-)uses one of its two windows. + + The default behavior is abandoned as soon as the user customizes +one of these thresholds or manually changes the frame's layout. The +default behavior is also abandoned when calling @code{display-buffer} +with a non-@code{nil} @var{action} argument or the user customizes one +of the options mentioned in the previous subsections. Mastering +@code{display-buffer} soon may become a frustrating experience due to +the plethora of applicable display actions and the resulting frame +layouts. + + However, refraining from using buffer display functions and falling +back on a split & delete windows metaphor is not a good idea either. +Buffer display functions give Lisp programs and users a framework to +reconcile their different needs; no comparable framework exists for +splitting and deleting windows. They also allow to at least partially +restore the layout of a frame when removing a buffer from it later +(@pxref{Quitting Windows}). + + Below we will give a number of guidelines to redeem the frustration +mentioned above and thus to avoid that buffers literally get lost in +between the windows of a frame. + +@table @asis +@item Write display actions without stress +Writing display actions can be a pain because one has to lump together +action functions and action alists in one huge list. (Historical +reasons prevented us from having @code{display-buffer} support +separate arguments for these.) It might help to memorize some basic +forms like the ones listed below: + +@example +'(nil (inhibit-same-window . t)) +@end example + +@noindent +specifies an action alist entry only and no action function. Its sole +purpose is to inhibit a @code{display-buffer-same-window} function +specified elsewhere from showing the buffer in the same window, see +also the last example of the preceding subsection. + +@example +'(display-buffer-below-selected) +@end example + +@noindent +on the other hand specifies one action function and an empty action +alist. To combine the effects of the above two specifications one +would write the form + +@example +'(display-buffer-below-selected (inhibit-same-window . t)) +@end example + +@noindent +to add another action function one would write + +@example +@group +'((display-buffer-below-selected display-buffer-at-bottom) + (inhibit-same-window . t)) +@end group +@end example + +@noindent +and to add another alist entry one would write + +@example +@group +'((display-buffer-below-selected display-buffer-at-bottom) + (inhibit-same-window . t) + (window-height . fit-window-to-buffer)) +@end group +@end example + +@noindent +That last form can be used as @var{action} argument of +@code{display-buffer} in the following way: + +@example +@group +(display-buffer + (get-buffer-create "*foo*") + '((display-buffer-below-selected display-buffer-at-bottom) + (inhibit-same-window . t) + (window-height . fit-window-to-buffer))) +@end group +@end example + +@noindent +In a customization of @code{display-buffer-alist} it would be used as +follows: + +@example +@group +(customize-set-variable + 'display-buffer-alist + '(("\\*foo\\*" + (display-buffer-below-selected display-buffer-at-bottom) + (inhibit-same-window . t) + (window-height . fit-window-to-buffer)))) +@end group +@end example + +@noindent +To add a customization for a second buffer one would then write: + +@example +@group +(customize-set-variable + 'display-buffer-alist + '(("\\*foo\\*" + (display-buffer-below-selected display-buffer-at-bottom) + (inhibit-same-window . t) + (window-height . fit-window-to-buffer)) + ("\\*bar\\*" + (display-buffer-reuse-window display-buffer-pop-up-frame) + (reusable-frames . visible)))) +@end group +@end example + +@item Treat each other with respect +@code{display-buffer-alist} and @code{display-buffer-base-action} are +user options---Lisp programs must never set or rebind them. +@code{display-buffer-overriding-action}, on the other hand, is +reserved for applications---who seldom use that option and if they use +it, then with utmost care. + + Older implementations of @code{display-buffer} frequently caused +users and applications to fight over the settings of user options like +@code{pop-up-frames} and @code{pop-up-windows} (@pxref{Choosing Window +Options}). This was one major reason for redesigning +@code{display-buffer}---to provide a clear framework specifying what +users and applications should be allowed to do. + + Lisp Programs must be prepared that a user's customizations may +cause buffers to get displayed in an unexpected way. They should +never assume in their subsequent behavior, that the buffer has been +shown precisely the way they asked for in the @var{action} argument of +@code{display-buffer}. + + Users should not pose too many and too severe restrictions on how +arbitrary buffers get displayed. Otherwise, they will risk to lose +the characteristics of showing a buffer for a certain purpose. +Suppose an lisp program has been written to compare different versions +of a buffer in two windows side-by-side. If the customization of +@code{display-buffer-alist} prescribes that any such buffer should be +always shown in or below the selected window, the lisp program will +have a hard time to set up the desired window configuration via +@code{display-buffer}. + + To specify a preference for showing an arbitrary buffer, users +should customize @code{display-buffer-base-action}. An example of how +users who prefer working with multiple frames would do that was given +in the previous subsection. @code{display-buffer-alist} should be +reserved for displaying specific buffers in a specific way. + +@item Consider reusing a window that already shows the buffer +Generally, it's always a good idea for users and lisp program +programmers to be prepared for the case that a window already shows +the buffer in question and to reuse that window. In the preceding +subsection we have shown that failing to do so properly may cause +@code{display-buffer} to continuously pop up a new frame although a +frame showing that buffer existed already. In a few cases only, it +might be undesirable to reuse a window, for example, when a different +portion of the buffer should be shown in that window. + + Hence, @code{display-buffer-reuse-window} is one action function +that should be used as often as possible, both in @var{action} +arguments and customizations. An @code{inhibit-same-window} entry in +the @var{action} argument usually takes care of the most common case +where reusing a window showing the buffer should be avoided---that +where the window in question is the selected one. + +@item Attract focus to the window chosen +This is a no-brainer for people working with multiple frames---the +frame showing the buffer will automatically raise and get focus unless +an @code{inhibit-switch-frame} entry forbids it. For single frame +users this task can be considerably more difficult. In particular, +@code{display-buffer-pop-up-window} and +@code{display-buffer-use-some-window} can become obtrusive in this +regard. They split or use a seemingly arbitrary (often the largest or +least recently used) window, distracting the user's attention. + +Some Lisp programs therefore try to choose a window at the bottom of +the frame, for example, in order to display the buffer in vicinity of +the minibuffer window where the user is expected to answer a question +related to the new window. For non-input related actions +@code{display-buffer-below-selected} might be preferable because the +selected window usually already has the user's attention. + +@item Handle subsequent invocations of @code{display-buffer} +@code{display-buffer} is not overly well suited for displaying several +buffers in sequence and making sure that all these buffers are shown +orderly in the resulting window configuration. Again, the standard +action functions @code{display-buffer-pop-up-window} and +@code{display-buffer-use-some-window} are not very suited for this +purpose due to their somewhat chaotic nature in more complex +configurations. + + To produce a window configuration displaying multiple buffers (or +different views of one and the same buffer) in one and the same +display cycle, lisp program programmers will unavoidably have to write +their own action functions. A few tricks listed below might help in +this regard. + +@itemize @bullet +@item +Making windows atomic (@pxref{Atomic Windows}) avoids that an +existing window composition gets broken when popping up a new window. +The new window will pop up outside the composition instead. + +@item +Temporarily dedicating windows to their buffers (@pxref{Dedicated +Windows}) avoids that a window gets used for displaying a different +buffer. A non-dedicated window will be used instead. + +@item +Calling @code{window-preserve-size} (@pxref{Preserving Window Sizes}) +will try to keep the size of the argument window unchanged when +popping up a new window. You have to make sure that another window in +the same combination can be shrunk instead, though. + +@item +Side windows (@pxref{Side Windows}) can be used for displaying +specific buffers always in a window at the same position of a frame. +This permits to group buffers that do not compete for being shown at +the same time on a frame and show any such buffer in the same window +without disrupting the display of other buffers. + +@item +Child frames (@pxref{Child Frames}) can be used to display a buffer +within the screen estate of the selected frame without disrupting that +frame's window configuration and without the overhead associated with +full-fledged frames as inflicted by @code{display-buffer-pop-up-frame}. +@end itemize +@end table -@defun same-window-p buffer-name -This function returns @code{t} if displaying a buffer -named @var{buffer-name} with @code{display-buffer} would -put it in the selected window. -@end defun @node Window History @section Window History @@ -3202,12 +4009,13 @@ main window is either a ``normal'' live window or specifies the area containing all the normal windows. In their most simple form of use, side windows allow to display -specific buffers always in the same area of a frame. Hence they can be -regarded as a generalization of the concept provided by -@code{display-buffer-at-bottom} (@pxref{Display Action Functions}) to -the remaining sides of a frame. With suitable customizations, however, -side windows can be also used to provide frame layouts similar to those -found in so-called integrated development environments (IDEs). +specific buffers always in the same area of a frame. Hence they can +be regarded as a generalization of the concept provided by +@code{display-buffer-at-bottom} (@pxref{Buffer Display Action +Functions}) to the remaining sides of a frame. With suitable +customizations, however, side windows can be also used to provide +frame layouts similar to those found in so-called integrated +development environments (IDEs). @menu * Displaying Buffers in Side Windows:: An action function for displaying @@ -3221,9 +4029,9 @@ found in so-called integrated development environments (IDEs). @node Displaying Buffers in Side Windows @subsection Displaying Buffers in Side Windows -The following action function for @code{display-buffer} (@pxref{Display -Action Functions}) creates or reuses a side window for displaying the -specified buffer. +The following action function for @code{display-buffer} (@pxref{Buffer +Display Action Functions}) creates or reuses a side window for +displaying the specified buffer. @defun display-buffer-in-side-window buffer alist This function displays @var{buffer} in a side window of the selected @@ -3263,11 +4071,11 @@ explicitly provided via a @code{window-parameters} entry in @var{alist}. @end defun By default, side windows cannot be split via @code{split-window} -(@pxref{Splitting Windows}). Also, a side window is not reused or split -by any buffer display action (@pxref{Display Action Functions}) unless -it is explicitly specified as target of that action. Note also that -@code{delete-other-windows} cannot make a side window the only window on -its frame (@pxref{Deleting Windows}). +(@pxref{Splitting Windows}). Also, a side window is not reused or +split by any buffer display action (@pxref{Buffer Display Action +Functions}) unless it is explicitly specified as target of that +action. Note also that @code{delete-other-windows} cannot make a side +window the only window on its frame (@pxref{Deleting Windows}). Once set up, side windows also change the behavior of the commands @code{switch-to-prev-buffer} and @code{switch-to-next-buffer} @@ -3453,9 +4261,9 @@ retain their respective sizes when maximizing the frame, the variable @xref{Resizing Windows}. The last form also makes sure that none of the created side windows -are accessible via @kbd{C-x o} by installing the @code{no-other-window} +are accessible via @w{@kbd{C-x o}} by installing the @code{no-other-window} parameter for each of these windows. In addition, it makes sure that -side windows are not deleted via @kbd{C-x 1} by installing the +side windows are not deleted via @w{@kbd{C-x 1}} by installing the @code{no-delete-other-windows} parameter for each of these windows. Since @code{dired} buffers have no fixed names, we use a special @@ -3547,7 +4355,7 @@ does is to set the @code{window-atom} parameter of each descendant of To create a new atomic window from an existing live window or to add a new window to an existing atomic window, the following buffer display -action function (@pxref{Display Action Functions}) can be used: +action function (@pxref{Buffer Display Action Functions}) can be used: @defun display-buffer-in-atom-window buffer alist This function tries to display @var{buffer} in a new window that will be From 6937c35d3260fe3fc32249313c7e9b6231cbd3dd Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 4 Nov 2018 19:08:00 +0200 Subject: [PATCH 100/567] Improve recent changes in documentation of window handling * doc/lispref/windows.texi (Displaying Buffers) (Choosing Window, Buffer Display Action Functions) (Buffer Display Action Alists, Choosing Window Options) (Precedence of Action Functions, The Zen of Buffer Display): Fix wording, punctuation, and markup. Remove redundant cross-references. * doc/emacs/windows.texi (Window Choice, Temporary Displays): Fix wording and punctuation. --- doc/emacs/windows.texi | 47 ++++--- doc/lispref/windows.texi | 291 +++++++++++++++++++-------------------- 2 files changed, 162 insertions(+), 176 deletions(-) diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index b09c9ae689d0..3369e986f9c3 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -386,9 +386,10 @@ to alter this sequence of steps. @itemize @item -First, check if the buffer should be displayed in the selected window -regardless of other considerations. You can tell Emacs to do this by -adding a regular expression matching the buffer's name together with a +If the buffer should be displayed in the selected window regardless of +other considerations, reuse the selected window. By default, this +step is skipped, but you can tell Emacs not to skip it by adding a +regular expression matching the buffer's name together with a reference to the @code{display-buffer-same-window} action function (@pxref{Buffer Display Action Functions,,Action Functions for Buffer Display, elisp, The Emacs Lisp Reference Manual}) to the option @@ -405,17 +406,16 @@ selected window write: @end group @end example -By default, @code{display-buffer-alist} is @code{nil}, so this step is -skipped. +By default, @code{display-buffer-alist} is @code{nil}. @item Otherwise, if the buffer is already displayed in an existing window, reuse that window. Normally, only windows on the selected frame are -considered, but windows on other frames are also reusable if a -corresponding @code{reusable-frames} action alist entry (@pxref{Buffer -Display Action Alists,,Action Alists for Buffer Display, elisp, The -Emacs Lisp Reference Manual}) is used (see the next step for an -example of how to do that). +considered, but windows on other frames are also reusable if you use +the corresponding @code{reusable-frames} action alist entry +(@pxref{Buffer Display Action Alists,,Action Alists for Buffer +Display, elisp, The Emacs Lisp Reference Manual}). See the +next step for an example of how to do that. @item Otherwise, optionally create a new frame and display the buffer there. @@ -434,7 +434,7 @@ Lisp Reference Manual}) as follows: @end example This customization will also try to make the preceding step search for -a reusable window on all visible of iconified frames +a reusable window on all visible or iconified frames. @item Otherwise, try to create a new window by splitting a window on the @@ -475,22 +475,21 @@ and display the buffer there. Some buffers are shown in windows for perusal rather than for editing. Help commands (@pxref{Help}) typically use a buffer called @file{*Help*} for that purpose, minibuffer completion (@pxref{Completion}) uses a -buffer called @file{*Completions*} instead. Such buffers are usually +buffer called @file{*Completions*}, etc. Such buffers are usually displayed only for a short period of time. Normally, Emacs chooses the window for such temporary displays via -@code{display-buffer} as described in the previous subsection. The +@code{display-buffer}, as described in the previous subsection. The @file{*Completions*} buffer, on the other hand, is normally displayed in a window at the bottom of the selected frame, regardless of the number of windows already shown on that frame. If you prefer Emacs to display a temporary buffer in a different -fashion, we recommend customizing the variable -@code{display-buffer-alist} (@pxref{Choosing Window,,Choosing a Window -for Displaying a Buffer, elisp, The Emacs Lisp Reference Manual}). -For example, to display @file{*Completions*} always below the selected -window, use the following form in your initialization file -(@pxref{Init File}): +fashion, customize the variable @code{display-buffer-alist} +(@pxref{Choosing Window,,Choosing a Window for Displaying a Buffer, +elisp, The Emacs Lisp Reference Manual}) appropriately. For example, +to display @file{*Completions*} always below the selected window, use +the following form in your initialization file (@pxref{Init File}): @example @group @@ -504,10 +503,10 @@ window, use the following form in your initialization file The @file{*Completions*} buffer is also special in the sense that Emacs usually tries to make its window just as large as necessary to display all of its contents. To resize windows showing other -temporary displays like, for example, the @file{*Help*} buffer -accordingly, turn on the minor mode (@pxref{Minor Modes}) -@code{temp-buffer-resize-mode} (@pxref{Temporary Displays,,Temporary -Displays, elisp, The Emacs Lisp Reference Manual}). +temporary displays, like, for example, the @file{*Help*} buffer, turn +on the minor mode (@pxref{Minor Modes}) @code{temp-buffer-resize-mode} +(@pxref{Temporary Displays,,Temporary Displays, elisp, The Emacs Lisp +Reference Manual}). @vindex temp-buffer-max-height @vindex temp-buffer-max-width @@ -515,7 +514,7 @@ Displays, elisp, The Emacs Lisp Reference Manual}). can be controlled by customizing the options @code{temp-buffer-max-height} and @code{temp-buffer-max-width} (@pxref{Temporary Displays,,Temporary Displays, elisp, The Emacs Lisp -Reference Manual}) and cannot exceed the size of the containing frame. +Reference Manual}), and cannot exceed the size of the containing frame. @node Window Convenience diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 7f2dff17532b..640c9923e99a 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -2338,20 +2338,19 @@ Window}). @code{display-buffer} delegates the task of finding a suitable window to so-called action functions (@pxref{Buffer Display Action -Functions}). Before, @code{display-buffer} compiles a so-called -action alist---a special association list action functions can use to -fine-tune their behavior--- and passes that alist on to each action +Functions}). First, @code{display-buffer} compiles a so-called action +alist---a special association list that action functions can use to +fine-tune their behavior. Then it passes that alist on to each action function it calls (@pxref{Buffer Display Action Alists}). The behavior of @code{display-buffer} is highly customizable. To -understand how customizations are put into practice, readers may want -to study examples illustrating the precedence acquired by -@code{display-buffer} for calling action functions (@pxref{Precedence -of Action Functions}). To avoid that Lisp programs calling -@code{display-buffer} come into conflict with users customizing its -behavior, it may make sense to follow a number of guidelines which are -sketched in the final part of this section (@pxref{The Zen of Buffer -Display}). +understand how customizations are used in practice, you may wish to +study examples illustrating the order of precedence which +@code{display-buffer} uses to call action functions (@pxref{Precedence +of Action Functions}). To avoid conflicts between Lisp programs +calling @code{display-buffer} and user customizations of its behavior, +it may make sense to follow a number of guidelines which are sketched +in the final part of this section (@pxref{The Zen of Buffer Display}). @menu * Choosing Window:: How to choose a window for displaying a buffer. @@ -2379,12 +2378,12 @@ Buffers}). @cindex display action This command performs several complex steps to find a window to display in. These steps are described by means of @dfn{display -actions}, which have the form @code{(@var{function} . @var{alist})}. -Here, @var{function} is either a function or a list of functions, -which we refer to as ``action functions'' (@pxref{Buffer Display -Action Functions}); @var{alist} is an association list, which we refer -to as ``action alist'' (@pxref{Buffer Display Action Alists}). See -@ref{The Zen of Buffer Display}, for samples of display actions. +actions}, which have the form @code{(@var{functions} . @var{alist})}. +Here, @var{functions} is either a single function or a list of +functions, referred to as ``action functions'' (@pxref{Buffer Display +Action Functions}); and @var{alist} is an association list, referred +to as ``action alist'' (@pxref{Buffer Display Action Alists}). +@xref{The Zen of Buffer Display}, for samples of display actions. An action function accepts two arguments: the buffer to display and an action alist. It attempts to display the buffer in some window, @@ -2400,14 +2399,14 @@ value. This command makes @var{buffer-or-name} appear in some window, without selecting the window or making the buffer current. The argument @var{buffer-or-name} must be a buffer or the name of an existing -buffer. The return value is the window chosen to display the buffer. -It is @code{nil} if no suitable window was found. +buffer. The return value is the window chosen to display the buffer, +or @code{nil} if no suitable window was found. The optional argument @var{action}, if non-@code{nil}, should normally be a display action (described above). @code{display-buffer} builds a list of action functions and an action alist, by consolidating display actions from the following sources (in order of their precedence, -highest ranking first): +from highest to lowest): @itemize @item @@ -2439,7 +2438,7 @@ may be called multiple times during one call of @code{display-buffer}. @code{display-buffer} calls the action functions specified by this list in turn, passing the buffer as the first argument and the combined action alist as the second argument, until one of the -functions returns non-@code{nil}. See @ref{Precedence of Action +functions returns non-@code{nil}. @xref{Precedence of Action Functions}, for examples how display actions specified by different sources are processed by @code{display-buffer}. @@ -2466,8 +2465,8 @@ should always supply a list value. The optional argument @var{frame}, if non-@code{nil}, specifies which frames to check when deciding whether the buffer is already displayed. -It is equivalent to adding an element @code{(reusable-frames -. @var{frame})} to the action alist of @var{action} (@pxref{Buffer +It is equivalent to adding an element @w{@code{(reusable-frames +. @var{frame})}} to the action alist of @var{action} (@pxref{Buffer Display Action Alists}). The @var{frame} argument is provided for compatibility reasons, Lisp programs should not use it. @end deffn @@ -2475,16 +2474,16 @@ compatibility reasons, Lisp programs should not use it. @defvar display-buffer-overriding-action The value of this variable should be a display action, which is treated with the highest priority by @code{display-buffer}. The -default value is empty, i.e., @code{(nil . nil)}. +default value is an empty display action, i.e., @w{@code{(nil . nil)}}. @end defvar @defopt display-buffer-alist The value of this option is an alist mapping conditions to display actions. Each condition may be either a regular expression matching a buffer name or a function that takes two arguments: a buffer name and -the @var{action} argument passed to @code{display-buffer}. If the -name of the buffer passed to @code{display-buffer} either matches a -regular expression in this alist or the function specified by a +the @var{action} argument passed to @code{display-buffer}. If either +the name of the buffer passed to @code{display-buffer} matches a +regular expression in this alist, or the function specified by a condition returns non-@code{nil}, then @code{display-buffer} uses the corresponding display action to display the buffer. @end defopt @@ -2519,8 +2518,7 @@ and @code{nil} if they fail. This function tries to display @var{buffer} in the selected window. It fails if the selected window is a minibuffer window or is dedicated to another buffer (@pxref{Dedicated Windows}). It also fails if -@var{alist} has a non-@code{nil} @code{inhibit-same-window} entry -(@pxref{Buffer Display Action Alists}). +@var{alist} has a non-@code{nil} @code{inhibit-same-window} entry. @end defun @defun display-buffer-reuse-window buffer alist @@ -2530,15 +2528,13 @@ is already displaying it. If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry, the selected window is not eligible for reuse. The set of frames to search for a window already displaying @var{buffer} can be specified -with the help of a @code{reusable-frames} action alist entry -(@pxref{Buffer Display Action Alists}). If @var{alist} contains no -@code{reusable-frames} entry, this function searches just the selected -frame. +with the help of the @code{reusable-frames} action alist entry. If +@var{alist} contains no @code{reusable-frames} entry, this function +searches just the selected frame. If this function chooses a window on another frame, it makes that frame visible and, unless @var{alist} contains an -@code{inhibit-switch-frame} entry (@pxref{Buffer Display Action -Alists}), raises that frame if necessary. +@code{inhibit-switch-frame} entry, raises that frame if necessary. @end defun @defun display-buffer-reuse-mode-window buffer alist @@ -2553,8 +2549,8 @@ whose mode derives from one of the modes specified thusly. The behavior is also controlled by @var{alist} entries for @code{inhibit-same-window}, @code{reusable-frames} and -@code{inhibit-switch-frame} (@pxref{Buffer Display Action Alists}) as -is done in the function @code{display-buffer-reuse-window}. +@code{inhibit-switch-frame}, like @code{display-buffer-reuse-window} +does. @end defun @defun display-buffer-pop-up-window buffer alist @@ -2565,27 +2561,25 @@ It actually performs the split by calling the function specified by Options}). The size of the new window can be adjusted by supplying -@code{window-height} and @code{window-width} entries in @var{alist} -(@pxref{Buffer Display Action Alists}). If @var{alist} contains a -@code{preserve-size} entry, Emacs will also try to preserve the size -of the new window during future resize operations (@pxref{Preserving -Window Sizes}). +@code{window-height} and @code{window-width} entries in @var{alist}. +If @var{alist} contains a @code{preserve-size} entry, Emacs will also +try to preserve the size of the new window during future resize +operations (@pxref{Preserving Window Sizes}). -This function fails if no window can be split. More often than not +This function fails if no window can be split. More often than not, this happens because no window is large enough to allow splitting. Setting @code{split-height-threshold} or @code{split-width-threshold} -(@pxref{Choosing Window Options}) to lower values may help in this -regard. Spliting also fails when the selected frame has an -@code{unsplittable} frame parameter; @pxref{Buffer Parameters}. +to lower values may help in this regard. Spliting also fails when the +selected frame has an @code{unsplittable} frame parameter; +@pxref{Buffer Parameters}. @end defun @defun display-buffer-in-previous-window buffer alist -This function tries to display @var{buffer} in a window previously -showing it. If @var{alist} has a non-@code{nil} +This function tries to display @var{buffer} in a window where it was +previously displayed. If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry, the selected window is not eligible for reuse. If @var{alist} contains a @code{reusable-frames} entry, -its value determines which frames to search for a suitable window -(@pxref{Buffer Display Action Alists}). +its value determines which frames to search for a suitable window. If @var{alist} has a @code{previous-window} entry and the window specified by that entry is live and not dedicated to another buffer, @@ -2596,7 +2590,7 @@ before. @defun display-buffer-use-some-window buffer alist This function tries to display @var{buffer} by choosing an existing window and displaying the buffer in that window. It can fail if all -windows are dedicated to another buffer (@pxref{Dedicated Windows}). +windows are dedicated to other buffers (@pxref{Dedicated Windows}). @end defun @defun display-buffer-below-selected buffer alist @@ -2605,13 +2599,13 @@ selected window. If there is a window below the selected one and that window already displays @var{buffer}, it reuses that window. If there is no such window, this function tries to create a new window -by splitting the selected one and display @var{buffer} there. It will +by splitting the selected one, and displays @var{buffer} there. It will also try to adjust that window's size provided @var{alist} contains a suitable @code{window-height} or @code{window-width} entry, see above. If splitting the selected window fails and there is a non-dedicated -window below the selected one showing some other buffer, it tries to -use that window for showing @var{buffer}. +window below the selected one showing some other buffer, this function +tries to use that window for showing @var{buffer}. @end defun @defun display-buffer-at-bottom buffer alist @@ -2634,19 +2628,19 @@ the newly created frame's parameters. @defun display-buffer-in-child-frame buffer alist This function tries to display @var{buffer} in a child frame -(@pxref{Child Frames}) of the selected frame, either reusing an existing -child frame or by making a new one. If @var{alist} has a non-@code{nil} -@code{child-frame-parameters} entry, the corresponding value is an alist -of frame parameters to give the new frame. A @code{parent-frame} -parameter specifying the selected frame is provided by default. If the -child frame should be or become the child of another frame, a -corresponding entry must be added to @var{alist}. +(@pxref{Child Frames}) of the selected frame, either reusing an +existing child frame or by making a new one. If @var{alist} has a +non-@code{nil} @code{child-frame-parameters} entry, the corresponding +value is an alist of frame parameters to give the new frame. A +@code{parent-frame} parameter specifying the selected frame is +provided by default. If the child frame should become the child of +another frame, a corresponding entry must be added to @var{alist}. The appearance of child frames is largely dependent on the parameters provided via @var{alist}. It is advisable to use at least ratios to specify the size (@pxref{Size Parameters}) and the position -(@pxref{Position Parameters}) of the child frame and to add a -@code{keep-ratio} parameter (@pxref{Frame Interaction Parameters}) in +(@pxref{Position Parameters}) of the child frame, and to add a +@code{keep-ratio} parameter (@pxref{Frame Interaction Parameters}), in order to make sure that the child frame remains visible. For other parameters that should be considered see @ref{Child Frames}. @end defun @@ -2658,8 +2652,7 @@ frame). If this function chooses a window on another frame, it makes that frame visible and, unless @var{alist} contains an -@code{inhibit-switch-frame} entry (@pxref{Buffer Display Action -Alists}), raises that frame if necessary. +@code{inhibit-switch-frame} entry, raises that frame if necessary. If @var{alist} has a non-@code{nil} @code{frame-predicate} entry, its value is a function taking one argument (a frame), returning @@ -2690,7 +2683,7 @@ non-@code{nil} @code{allow-no-window} entry, it is also able to handle a @code{nil} return value. @end defun -Two action functions are described in their proper +Two other action functions are described in their proper sections---@code{display-buffer-in-side-window} (@pxref{Displaying Buffers in Side Windows}) and @code{display-buffer-in-atom-window} (@pxref{Atomic Windows}). @@ -2710,18 +2703,19 @@ and passes that entire list on to any action function it calls. By design, action functions are free in their interpretation of action alist entries. In fact, some entries like @code{allow-no-window} or @code{previous-window} have a meaning only -for one or a few action functions and are ignored by the rest. Other +for one or a few action functions, and are ignored by the rest. Other entries, like @code{inhibit-same-window} or @code{window-parameters}, -are supposed to be respected by most action functions including those +are supposed to be respected by most action functions, including those provided by application programs and external packages. In the previous subsection we have described in detail how individual action functions interpret the action alist entries they care about. Here we give a reference list of all known action alist entries according to their symbols, together with their values and -action functions that recognize them. Throughout this list, the terms -``buffer'' will refer to the buffer @code{display-buffer} is supposed -to display and ``value'' to the entry's value. +action functions (@pxref{Buffer Display Action Functions}) that +recognize them. Throughout this list, the terms ``buffer'' will refer +to the buffer @code{display-buffer} is supposed to display, and +``value'' refers to the entry's value. @table @code @vindex inhibit-same-window@r{, a buffer display action alist entry} @@ -2733,25 +2727,23 @@ must not be used for displaying the buffer. All action functions that @vindex previous-window@r{, a buffer display action alist entry} @item previous-window The value must specify a window that may have displayed the buffer -previously. @code{display-buffer-in-previous-window} (@pxref{Buffer -Display Action Functions}) will give preference to such a window -provided it is still live and not dedicated to another buffer. +previously. @code{display-buffer-in-previous-window} will give +preference to such a window provided it is still live and not +dedicated to another buffer. @vindex mode@r{, a buffer display action alist entry} @item mode The value is either a major mode or a list of major modes. -@code{display-buffer-reuse-mode-window} (@pxref{Buffer Display Action -Functions}) may reuse a window whenever the value specified by this -entry matches the major mode of that window's buffer. Other action -functions ignore such entries. +@code{display-buffer-reuse-mode-window} may reuse a window whenever +the value specified by this entry matches the major mode of that +window's buffer. Other action functions ignore such entries. @vindex frame-predicate@r{, a buffer display action alist entry} @item frame-predicate The value must be a function taking one argument (a frame), supposed to return non-@code{nil} if that frame is a candidate for displaying the buffer. This entry is used by -@code{display-buffer-use-some-frame} (@pxref{Buffer Display Action -Functions}). +@code{display-buffer-use-some-frame}. @vindex reusable-frames@r{, a buffer display action alist entry} @item reusable-frames @@ -2777,9 +2769,9 @@ Note that the meaning of @code{nil} differs slightly from that of the @var{all-frames} argument to @code{next-window} (@pxref{Cyclic Window Ordering}). -A major client of this is @code{display-buffer-reuse-window} -(@pxref{Buffer Display Action Functions}) but all other action -functions that try to reuse a window are affected as well. +A major client of this is @code{display-buffer-reuse-window}, but all +other action functions that try to reuse a window are affected as +well. @vindex inhibit-switch-frame@r{, a buffer display action alist entry} @item inhibit-switch-frame @@ -2787,9 +2779,9 @@ A non-@code{nil} value prevents another frame from being raised or selected, if the window chosen by @code{display-buffer} is displayed there. Primarily affected by this are @code{display-buffer-use-some-frame} and -@code{display-buffer-reuse-window} (@pxref{Buffer Display Action -Functions}). @code{display-buffer-pop-up-frame} should be affected as -well but there is no guarantee that the window manager will comply. +@code{display-buffer-reuse-window}. +@code{display-buffer-pop-up-frame} should be affected as well, but +there is no guarantee that the window manager will comply. @vindex window-parameters@r{, a buffer display action alist entry} @item window-parameters @@ -2800,7 +2792,7 @@ entry. @vindex window-height@r{, a buffer display action alist entry} @item window-height The value specifies whether and how to adjust the height of the chosen -window and can be provided as follows: +window, and can have the following values: @itemize @bullet @item @@ -2825,8 +2817,8 @@ All action functions that choose a window should process this entry. @vindex window-width@r{, a buffer display action alist entry} @item window-width This entry is similar to the @code{window-height} entry described -before but can be used to adjust the chosen window's width instead. -The value can be one of the following: +before, but used to adjust the chosen window's width instead. The +value can be one of the following: @itemize @bullet @item @@ -2852,28 +2844,26 @@ If non-@code{nil} such an entry tells Emacs to preserve the size of the window chosen (@pxref{Preserving Window Sizes}). The value should be either @code{(t . nil)} to preserve the width of the window, @code{(nil . t)} to preserve its height or @code{(t . t)} to preserve -both, its width and its height. All action functions that choose a +both its width and its height. All action functions that choose a window should process this entry. @vindex pop-up-frame-parameters@r{, a buffer display action alist entry} @item pop-up-frame-parameters The value specifies an alist of frame parameters to give a new frame, -if one is created. @code{display-buffer-pop-up-frame} (@pxref{Buffer -Display Action Functions}) is its one and only addressee. +if one is created. @code{display-buffer-pop-up-frame} is its one and +only addressee. @vindex parent-frame@r{, a buffer display action alist entry} @item parent-frame The value specifies the parent frame to be used when the buffer is -displayed on a child frame. This entry is used by -@code{display-buffer-in-child-frame} (@pxref{Buffer Display Action -Functions}) only. +displayed on a child frame. This entry is used only by +@code{display-buffer-in-child-frame}. @vindex child-frame-parameters@r{, a buffer display action alist entry} @item child-frame-parameters -The value specifies an alist of frame parameters used when the buffer -is displayed on a child frame. This entry is used by -@code{display-buffer-in-child-frame} (@pxref{Buffer Display Action -Functions}) only. +The value specifies an alist of frame parameters to use when the buffer +is displayed on a child frame. This entry is used only by +@code{display-buffer-in-child-frame}. @vindex side@r{, a buffer display action alist entry} @item side @@ -2889,27 +2879,25 @@ Windows}). @vindex slot@r{, a buffer display action alist entry} @item slot If non-@code{nil}, the value specifies the slot of the side window -supposed to display the buffer. This entry is used by -@code{display-buffer-in-side-window} only (@pxref{Displaying Buffers -in Side Windows}). +supposed to display the buffer. This entry is used only by +@code{display-buffer-in-side-window}. @vindex window@r{, a buffer display action alist entry} @item window The value specifies a window that is in some way related to the window chosen by @code{display-buffer}. This entry is currently used by @code{display-buffer-in-atom-window} to indicate the window on whose -side the new window shall be created (@pxref{Atomic Windows}). +side the new window shall be created. @vindex allow-no-window@r{, a buffer display action alist entry} @item allow-no-window If the value is non-@code{nil}, @code{display-buffer} does not necessarily have to display the buffer and the caller is prepared to -accept that. This entry is not intended for user customizations since -there is no guarantee that an arbitrary caller of +accept that. This entry is not intended for user customizations, +since there is no guarantee that an arbitrary caller of @code{display-buffer} will be able to handle the case that no window -will display the buffer. @code{display-buffer-no-window} -(@pxref{Buffer Display Action Functions}) is the only action function -that cares about this entry. +will display the buffer. @code{display-buffer-no-window} is the only +action function that cares about this entry. @end table @@ -2937,16 +2925,16 @@ user may specify directly in @code{display-buffer-alist} etc. This variable specifies a function for splitting a window, in order to make a new window for displaying a buffer. It is used by the @code{display-buffer-pop-up-window} action function to actually split -the window (@pxref{Buffer Display Action Functions}). +the window. The value must be a function that takes one argument, a window, and -return either a new window (which will be used to display the desired +returns either a new window (which will be used to display the desired buffer) or @code{nil} (which means the splitting failed). The default value is @code{split-window-sensibly}, which is documented next. @end defopt @defun split-window-sensibly &optional window -This function tries to split @var{window}, and return the newly created +This function tries to split @var{window} and return the newly created window. If @var{window} cannot be split, it returns @code{nil}. If @var{window} is omitted or @code{nil}, it defaults to the selected window. @@ -2957,7 +2945,7 @@ placing the new window below, subject to the restriction imposed by @code{split-height-threshold} (see below), in addition to any other restrictions. If that fails, it tries to split by placing the new window to the right, subject to @code{split-width-threshold} (see -below). If that fails, and the window is the only window on its +below). If that also fails, and the window is the only window on its frame, this function again tries to split and place the new window below, disregarding @code{split-height-threshold}. If this fails as well, this function gives up and returns @code{nil}. @@ -2981,7 +2969,7 @@ that means not to split this way. @defopt even-window-sizes This variable, if non-@code{nil}, causes @code{display-buffer} to even -window sizes whenever it reuses an existing window and that window is +window sizes whenever it reuses an existing window, and that window is adjacent to the selected one. If its value is @code{width-only}, sizes are evened only if the reused @@ -3016,8 +3004,7 @@ directly in @code{display-buffer-alist} etc. @defopt pop-up-frame-function This variable specifies a function for creating a new frame, in order to make a new window for displaying a buffer. It is used by the -@code{display-buffer-pop-up-frame} action function (@pxref{Buffer -Display Action Functions}). +@code{display-buffer-pop-up-frame} action function. The value should be a function that takes no arguments and returns a frame, or @code{nil} if no frame could be created. The default value @@ -3032,9 +3019,8 @@ Parameters}), which is used by the function specified by @code{nil}. This option is provided for backward compatibility only. Note, that -when @code{display-buffer-pop-up-frame} (@pxref{Buffer Display Action -Functions}) calls the function specified by -@code{pop-up-frame-function}, it prepends the value of all +when @code{display-buffer-pop-up-frame} calls the function specified +by @code{pop-up-frame-function}, it prepends the value of all @code{pop-up-frame-parameters} action alist entries to @code{pop-up-frame-alist} so that the values specified by the action alist entry effectively override any corresponding values of @@ -3111,6 +3097,7 @@ specifying the action function @code{display-buffer-same-window}. @subsection Precedence of Action Functions @cindex precedence of buffer display action functions @cindex execution order of buffer display action functions +@cindex buffer display action functions, precedence From the past subsections we already know that @code{display-buffer} must be supplied with a number of display actions (@pxref{Choosing @@ -3132,7 +3119,7 @@ Consider the following form: @noindent Evaluating this form in the buffer @file{*scratch*} of an uncustomized Emacs session will usually fail to reuse a window that shows -@file{*foo*} already but succeed in popping up a new window. +@file{*foo*} already, but succeed in popping up a new window. Evaluating the same form again will now not cause any visible changes---@code{display-buffer} reused the window already showing @file{*foo*} because that action was applicable and had the highest @@ -3157,13 +3144,13 @@ already shown @file{*foo*} previously and was therefore chosen instead of some other window. So far we have only observed the default behavior in an uncustomized -Emacs session. To see how this behavior can be customized let's +Emacs session. To see how this behavior can be customized, let's consider the option @code{display-buffer-base-action}. It provides a very coarse customization which conceptually affects the display of @emph{any} buffer. It can be used to supplement the actions supplied by @code{display-buffer-fallback-action} by reordering them or by adding actions that are not present there but fit more closely the -user's editing practice. It can be, however, also used to change the +user's editing practice. However, it can also be used to change the default behavior in a more profound way. Let's consider a user who, as a rule, prefers to display buffers on @@ -3179,7 +3166,7 @@ another frame. Such a user might provide the following customization: @end example @noindent -This setting will cause@code{display-buffer} to first try to find a +This setting will cause @code{display-buffer} to first try to find a window showing the buffer on a visible or iconified frame and, if no such frame exists, pop up a new frame. You can observe this behavior on a graphical system by typing @w{@kbd{C-x 1}} in the window showing @@ -3191,8 +3178,8 @@ the new frame (usually raising the frame and giving it focus too). Only if creating a new frame fails, @code{display-buffer} will apply the actions supplied by @code{display-buffer-fallback-action} -which means to again try to reuse a window, pop up a new window and so -on. A trivial way to make frame creation fail is supplied by the +which means to again try reusing a window, popping up a new window and +so on. A trivial way to make frame creation fail is supplied by the following form: @example @@ -3213,7 +3200,7 @@ tried there anyway. However, that would fail because due to the precedence of @code{display-buffer-base-action} over @code{display-buffer-fallback-action}, at that time @code{display-buffer-pop-up-frame} would have already won the race. -In fact +In fact, this: @example @group @@ -3231,13 +3218,13 @@ which is probably not what our user wants. default behavior of @code{display-buffer}. Let us now see how @emph{applications} can change the course of @code{display-buffer}. The canonical way to do that is to use the @var{action} argument of -@code{display-buffer} or a function that calls it like, for example, +@code{display-buffer} or a function that calls it, like, for example, @code{pop-to-buffer} (@pxref{Switching Buffers}). Suppose an application wants to display @file{*foo*} preferably below the selected window (to immediately attract the attention of the user to the new window) or, if that fails, in a window at the bottom -of the frame. It could do that with a call like +of the frame. It could do that with a call like this: @example @group @@ -3250,8 +3237,8 @@ of the frame. It could do that with a call like @noindent In order to see how this new, modified form works, delete any frame showing @file{*foo*}, type @w{@kbd{C-x 1}} followed by @w{@kbd{C-x 2}} in the -window showing @file{*scratch*} and subsequently evaluate that form. -@code{display-buffer} should split the upper window and show +window showing @file{*scratch*}, and subsequently evaluate that form. +@code{display-buffer} should split the upper window, and show @file{*foo*} in the new window. Alternatively, if after @w{@kbd{C-x 2}} you had typed @w{@kbd{C-x o}}, @code{display-buffer} would have split the window at the bottom instead. @@ -3269,7 +3256,7 @@ by the @var{action} argument try to reuse such a window first. By setting the @var{action} argument, an application effectively overrules any customization of @code{display-buffer-base-action}. Our -user can now either accept the choice of the application or redouble +user can now either accept the choice of the application, or redouble by customizing the option @code{display-buffer-alist} as follows: @example @@ -3320,9 +3307,9 @@ preferred way regardless of whether the display is also guided by an We can, however, reasonably conclude that customizing @code{display-buffer-alist} differs from customizing -@code{display-buffer-base-action} in two major aspects: It is stronger +@code{display-buffer-base-action} in two major aspects: it is stronger because it overrides the @var{action} argument of -@code{display-buffer}. And it allows to explicitly specify the +@code{display-buffer}, and it allows to explicitly specify the affected buffers. In fact, displaying other buffers is not affected in any way by a customization for @file{*foo*}. For example, @@ -3382,7 +3369,7 @@ explaining who added this and the subsequent elements) is: @end example @noindent -Note that among the internal functions listed here +Note that among the internal functions listed here, @code{display-buffer--maybe-same-window} is effectively ignored while @code{display-buffer--maybe-pop-up-frame-or-window} actually runs @code{display-buffer-pop-up-window}. @@ -3398,7 +3385,7 @@ The action alist passed in each function call is: @noindent which shows that we have used the second specification of -@code{display-buffer-alist} above overriding the specification +@code{display-buffer-alist} above, overriding the specification supplied by @code{display-buffer-base-action}. Suppose our user had written that as @@ -3432,7 +3419,7 @@ regard, the application would have to specify an appropriate @noindent This last example shows that while the precedence order of action -functions is fixed as described in @ref{Choosing Window}, an action +functions is fixed, as described in @ref{Choosing Window}, an action alist entry specified by a display action ranked lower in that order can affect the execution of a higher ranked display action. @@ -3468,13 +3455,13 @@ layouts. back on a split & delete windows metaphor is not a good idea either. Buffer display functions give Lisp programs and users a framework to reconcile their different needs; no comparable framework exists for -splitting and deleting windows. They also allow to at least partially -restore the layout of a frame when removing a buffer from it later -(@pxref{Quitting Windows}). +splitting and deleting windows. Buffer display functions also allow +to at least partially restore the layout of a frame when removing a +buffer from it later (@pxref{Quitting Windows}). Below we will give a number of guidelines to redeem the frustration -mentioned above and thus to avoid that buffers literally get lost in -between the windows of a frame. +mentioned above and thus to avoid literally losing buffers in-between +the windows of a frame. @table @asis @item Write display actions without stress @@ -3499,7 +3486,7 @@ also the last example of the preceding subsection. @end example @noindent -on the other hand specifies one action function and an empty action +on the other hand, specifies one action function and an empty action alist. To combine the effects of the above two specifications one would write the form @@ -3588,7 +3575,7 @@ Options}). This was one major reason for redesigning @code{display-buffer}---to provide a clear framework specifying what users and applications should be allowed to do. - Lisp Programs must be prepared that a user's customizations may + Lisp programs must be prepared that user customizations may cause buffers to get displayed in an unexpected way. They should never assume in their subsequent behavior, that the buffer has been shown precisely the way they asked for in the @var{action} argument of @@ -3597,11 +3584,11 @@ shown precisely the way they asked for in the @var{action} argument of Users should not pose too many and too severe restrictions on how arbitrary buffers get displayed. Otherwise, they will risk to lose the characteristics of showing a buffer for a certain purpose. -Suppose an lisp program has been written to compare different versions +Suppose a Lisp program has been written to compare different versions of a buffer in two windows side-by-side. If the customization of @code{display-buffer-alist} prescribes that any such buffer should be -always shown in or below the selected window, the lisp program will -have a hard time to set up the desired window configuration via +always shown in or below the selected window, the program will have a +hard time to set up the desired window configuration via @code{display-buffer}. To specify a preference for showing an arbitrary buffer, users @@ -3611,7 +3598,7 @@ in the previous subsection. @code{display-buffer-alist} should be reserved for displaying specific buffers in a specific way. @item Consider reusing a window that already shows the buffer -Generally, it's always a good idea for users and lisp program +Generally, it's always a good idea for users and Lisp programmers to be prepared for the case that a window already shows the buffer in question and to reuse that window. In the preceding subsection we have shown that failing to do so properly may cause @@ -3655,19 +3642,19 @@ configurations. To produce a window configuration displaying multiple buffers (or different views of one and the same buffer) in one and the same -display cycle, lisp program programmers will unavoidably have to write +display cycle, Lisp programmers will unavoidably have to write their own action functions. A few tricks listed below might help in this regard. @itemize @bullet @item -Making windows atomic (@pxref{Atomic Windows}) avoids that an -existing window composition gets broken when popping up a new window. +Making windows atomic (@pxref{Atomic Windows}) avoids breaking an +existing window composition when popping up a new window. The new window will pop up outside the composition instead. @item Temporarily dedicating windows to their buffers (@pxref{Dedicated -Windows}) avoids that a window gets used for displaying a different +Windows}) avoids using a window for displaying a different buffer. A non-dedicated window will be used instead. @item @@ -3679,8 +3666,8 @@ the same combination can be shrunk instead, though. @item Side windows (@pxref{Side Windows}) can be used for displaying specific buffers always in a window at the same position of a frame. -This permits to group buffers that do not compete for being shown at -the same time on a frame and show any such buffer in the same window +This permits grouping buffers that do not compete for being shown at +the same time on a frame and showing any such buffer in the same window without disrupting the display of other buffers. @item From aa556596fabe07af8ee33f59c6d3ec3b882f369e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 6 Nov 2018 17:49:58 +0200 Subject: [PATCH 101/567] Fix call to GlobalMemoryStatusEx in w32.c * src/w32.c (system_process_attributes): Initialize the size of the data structure passed to GlobalMemoryStatusEx, otherwise it fails. --- src/w32.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/w32.c b/src/w32.c index 5ac66181403a..b89e5104dc02 100644 --- a/src/w32.c +++ b/src/w32.c @@ -7157,6 +7157,7 @@ system_process_attributes (Lisp_Object pid) code_convert_string_norecord (tem, Vlocale_coding_system, 0)), attrs); + memstex.dwLength = sizeof (memstex); if (global_memory_status_ex (&memstex)) #if __GNUC__ || (defined (_MSC_VER) && _MSC_VER >= 1300) totphys = memstex.ullTotalPhys / 1024.0; From fa605f242eec680b2c7d1374d1405510818d9103 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Thu, 8 Nov 2018 20:20:13 +0100 Subject: [PATCH 102/567] Rewrite buffer display related doc-strings and doc * lisp/window.el (display-buffer-overriding-action) (display-buffer-alist, display-buffer-base-action) (display-buffer-fallback-action, display-buffer-assq-regexp) (display-buffer): Rewrite doc-strings using suggestions by Alan Mackenzie . (display-buffer-use-some-frame): Adjust doc-string and reformat code. * doc/lispref/windows.texi (Buffer Display Action Alists): Make docs on 'window-height', 'window-width' and 'preserve-size' entries more accurate. --- doc/lispref/windows.texi | 58 +++++--- lisp/window.el | 286 +++++++++++++++++++++------------------ 2 files changed, 195 insertions(+), 149 deletions(-) diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 640c9923e99a..106074e13d1f 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -2747,8 +2747,8 @@ the buffer. This entry is used by @vindex reusable-frames@r{, a buffer display action alist entry} @item reusable-frames -The value specifies the frame(s) to search for a window that can be -reused because it already displays the buffer. It can be set as +The value specifies the set of frames to search for a window that can +be reused because it already displays the buffer. It can be set as follows: @itemize @bullet @@ -2792,17 +2792,20 @@ entry. @vindex window-height@r{, a buffer display action alist entry} @item window-height The value specifies whether and how to adjust the height of the chosen -window, and can have the following values: +window and can be one of the following: @itemize @bullet @item @code{nil} means to leave the height of the chosen window alone. @item -A number specifies the desired height of the chosen window. An -integer specifies the number of lines of the window. A floating-point -number gives the fraction of the window's height with respect to the -height of the frame's root window. +An integer number specifies the desired total height of the chosen +window in lines. + +@item +A floating-point number specifies the fraction of the chosen window's +desired total height with respect to the total height of its frame's +root window. @item If the value specifies a function, that function is called with one @@ -2812,7 +2815,11 @@ are @code{shrink-window-if-larger-than-buffer} and @code{fit-window-to-buffer}, see @ref{Resizing Windows}. @end itemize -All action functions that choose a window should process this entry. +By convention, the height of the chosen window is adjusted only if the +window is part of a vertical combination (@pxref{Windows and Frames}) +to avoid changing the height of other, unrelated windows. Also, this +entry should be processed only under certain conditions which are +specified right below this list. @vindex window-width@r{, a buffer display action alist entry} @item window-width @@ -2825,10 +2832,13 @@ value can be one of the following: @code{nil} means to leave the width of the chosen window alone. @item -A number specifies the desired width of the chosen window. An integer -specifies the number of columns of the window. A floating-point -number gives the fraction of the window's width with respect to the -width of the frame's root window. +An integer specifies the desired total width of the chosen window in +columns. + +@item +A floating-point number specifies the fraction of the chosen window's +desired total width with respect to the total width of the frame's +root window. @item If the value specifies a function, that function is called with one @@ -2836,16 +2846,21 @@ argument---the chosen window. The function is supposed to adjust the width of the window; its return value is ignored. @end itemize -All action functions that choose a window should process this entry. +By convention, the width of the chosen window is adjusted only if the +window is part of a horizontal combination (@pxref{Windows and +Frames}) to avoid changing the width of other, unrelated windows. +Also, this entry should be processed under only certain conditions +which are specified right below this list. @vindex preserve-size@r{, a buffer display action alist entry} @item preserve-size If non-@code{nil} such an entry tells Emacs to preserve the size of the window chosen (@pxref{Preserving Window Sizes}). The value should -be either @code{(t . nil)} to preserve the width of the window, -@code{(nil . t)} to preserve its height or @code{(t . t)} to preserve -both its width and its height. All action functions that choose a -window should process this entry. +be either @w{@code{(t . nil)}} to preserve the width of the window, +@w{@code{(nil . t)}} to preserve its height or @w{@code{(t . t)}} to +preserve both, its width and its height. This entry should be +processed only under certain conditions which are specified right +after this list. @vindex pop-up-frame-parameters@r{, a buffer display action alist entry} @item pop-up-frame-parameters @@ -2900,6 +2915,15 @@ will display the buffer. @code{display-buffer-no-window} is the only action function that cares about this entry. @end table +By convention, the entries @code{window-height}, @code{window-width} +and @code{preserve-size} are applied after the chosen window's buffer +has been set up and if and only if that window never showed another +buffer before. More precisely, the latter means that the window must +have been either created by the current @code{display-buffer} call or +the window was created earlier by @code{display-buffer} to show the +buffer and never was used to show another buffer until it was reused +by the current invocation of @code{display-buffer}. + @node Choosing Window Options @subsection Additional Options for Displaying Buffers diff --git a/lisp/window.el b/lisp/window.el index f96c887be480..92cd8c273806 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -6705,7 +6705,11 @@ live." ((or (eq type 'frame) (and (eq (car quit-restore) 'same) (eq (nth 1 quit-restore) 'frame))) - ;; Adjust size of frame if asked for. + ;; A window that never showed another buffer but BUFFER ever + ;; since it was created on a new frame. + ;; + ;; Adjust size of frame if asked for. We probably should do + ;; that only for a single window frame. (cond ((not size)) ((consp size) @@ -6724,7 +6728,10 @@ live." ((or (eq type 'window) (and (eq (car quit-restore) 'same) (eq (nth 1 quit-restore) 'window))) - ;; Adjust height of window if asked for. + ;; A window that never showed another buffer but BUFFER ever + ;; since it was created on an existing frame. + ;; + ;; Adjust width and/or height of window if asked for. (cond ((not height)) ((numberp height) @@ -6820,31 +6827,41 @@ The actual non-nil value of this variable will be copied to the "Custom type for `display-buffer' actions.") (defvar display-buffer-overriding-action '(nil . nil) - "User-defined overriding action to perform to display a buffer. -This action overrides all the other actions in the action variables -and arguments passed to `display-buffer'. -Value should be a cons cell (FUNCTION . ALIST), where FUNCTION is -a function or a list of functions. Each function should accept -two arguments: a buffer to display and an alist similar to ALIST. -The default value is empty. -See `display-buffer' for details.") + "Overriding action for buffer display. +This action overrides all the other actions in the action +variables and arguments passed to `display-buffer'. The value +should be a cons cell (FUNCTIONS . ALIST), where FUNCTIONS is a +function or a list of functions. Each function should accept two +arguments: a buffer to display and an alist similar to ALIST. +See `display-buffer' for details. + +This variable is not intended for user customization. Lisp +programs should never set this variable permanently but may bind +it around calls of buffer display functions like `display-buffer' +or `pop-to-buffer'. Since such a binding will affect any nested +buffer display requests, this variable should be used with utmost +care.") (put 'display-buffer-overriding-action 'risky-local-variable t) (defcustom display-buffer-alist nil "Alist of user-defined conditional actions for `display-buffer'. -Its value takes effect before `display-buffer-base-action' -and `display-buffer-fallback-action', but after +Its value takes effect before processing the ACTION argument of +`display-buffer' and before `display-buffer-base-action' and +`display-buffer-fallback-action', but after `display-buffer-overriding-action', which see. -If non-nil, this is a list of elements (CONDITION . ACTION), where: + +If non-nil, this is an alist of elements (CONDITION . ACTION), +where: CONDITION is either a regexp matching buffer names, or a function that takes two arguments - a buffer name and the ACTION argument of `display-buffer' - and returns a boolean. - ACTION is a cons cell (FUNCTION . ALIST), where FUNCTION is a - function or a list of functions. Each such function should - accept two arguments: a buffer to display and an alist of the - same form as ALIST. See `display-buffer' for details. + ACTION is a cons cell (FUNCTIONS . ALIST), where FUNCTIONS is an + action function or a list of action functions and ALIST is an + action alist. Each such action function should accept two + arguments: a buffer to display and an alist of the same form as + ALIST. See `display-buffer' for details. `display-buffer' scans this alist until it either finds a matching regular expression or the function specified by a @@ -6864,11 +6881,12 @@ associated action to the list of actions it will try." This is the default action used by `display-buffer' if no other actions are specified or all fail, before falling back on `display-buffer-fallback-action'. -It should be a cons cell (FUNCTION . ALIST), where FUNCTION is a -function or a list of functions. Each function should accept two -arguments: a buffer to display and an alist similar to ALIST. -The default value is empty. -See `display-buffer' for details." + +It should be a cons cell (FUNCTIONS . ALIST), where FUNCTIONS is +an action function or a list of action functions and ALIST is an +action alist. Each such action function should accept two +arguments: a buffer to display and an alist of the same form as +ALIST. See `display-buffer' for details." :type display-buffer--action-custom-type :risky t :version "24.1" @@ -6884,17 +6902,20 @@ See `display-buffer' for details." display-buffer-pop-up-frame)) "Default fallback action for `display-buffer'. This is the action used by `display-buffer' if no other actions -specified, e.g. by the user options `display-buffer-alist' or -`display-buffer-base-action', or they all fail. See `display-buffer'.") +have been specified, for example, by the user options +`display-buffer-alist' or `display-buffer-base-action', or they +all fail. It should never be set by programs or users. See +`display-buffer'.") (put 'display-buffer-fallback-action 'risky-local-variable t) (defun display-buffer-assq-regexp (buffer-name alist action) "Retrieve ALIST entry corresponding to BUFFER-NAME. -This returns the cdr of the ALIST entry if either its key is a -string that matches BUFFER-NAME, as reported by `string-match-p'; -or if the key is a function that returns a non-nil when called -with 3 arguments: the ALIST key, BUFFER-NAME, and ACTION. -ACTION should have the form of the action argument passed to `display-buffer'." +This returns the cdr of the alist entry ALIST if either its key +is a string that matches BUFFER-NAME, as reported by +`string-match-p'; or if the key is a function that returns +non-nil when called with three arguments: the ALIST key, +BUFFER-NAME and ACTION. ACTION should have the form of the +action argument passed to `display-buffer'." (catch 'match (dolist (entry alist) (let ((key (car entry))) @@ -6923,100 +6944,99 @@ fails, call `display-buffer-pop-up-frame'.") (defun display-buffer (buffer-or-name &optional action frame) "Display BUFFER-OR-NAME in some window, without selecting it. -BUFFER-OR-NAME must be a buffer or the name of an existing -buffer. Return the window chosen for displaying BUFFER-OR-NAME, -or nil if no such window is found. - -Optional argument ACTION, if non-nil, should specify a display -action. Its form is described below. - -Optional argument FRAME, if non-nil, acts like an additional -ALIST entry (reusable-frames . FRAME) to the action list of ACTION, -specifying the frame(s) to search for a window that is already -displaying the buffer. See `display-buffer-reuse-window'. - -If ACTION is non-nil, it should have the form (FUNCTION . ALIST), -where FUNCTION is either a function or a list of functions, and -ALIST is an arbitrary association list (alist). - -Each such function should accept two arguments: the buffer to -display and an alist. Based on those arguments, it should -display the buffer and return the window. If the caller is -prepared to handle the case of not displaying the buffer -and returning nil from `display-buffer' it should pass -\(allow-no-window . t) as an element of the ALIST. - -The `display-buffer' function builds a function list and an alist -by combining the functions and alists specified in +BUFFER-OR-NAME must be a buffer or a string naming a live buffer. +Return the window chosen for displaying that buffer, or nil if no +such window is found. + +Optional argument ACTION, if non-nil, should specify a buffer +display action of the form (FUNCTIONS . ALIST). FUNCTIONS is +either an \"action function\" or a possibly empty list of action +functions. ALIST is a possibly empty \"action alist\". + +An action function is a function that accepts two arguments: the +buffer to display and an action alist. Based on those arguments, +it should try to display the buffer in a window and return that +window. An action alist is an association list mapping symbols +to values. Action functions use the action alist passed to them +to fine-tune their behaviors. + +`display-buffer' builds a list of action functions and an action +alist by combining any action functions and alists specified by `display-buffer-overriding-action', `display-buffer-alist', the ACTION argument, `display-buffer-base-action', and `display-buffer-fallback-action' (in order). Then it calls each function in the combined function list in turn, passing the -buffer as the first argument and the combined alist as the second -argument, until one of the functions returns non-nil. - -If ACTION is nil, the function list and the alist are built using -only the other variables mentioned above. - -Available action functions include: - `display-buffer-same-window' - `display-buffer-reuse-window' - `display-buffer-pop-up-frame' - `display-buffer-in-child-frame' - `display-buffer-pop-up-window' - `display-buffer-in-previous-window' - `display-buffer-use-some-window' - `display-buffer-use-some-frame' - -Recognized alist entries include: - - `inhibit-same-window' -- A non-nil value prevents the same - window from being used for display. - - `inhibit-switch-frame' -- A non-nil value prevents any other - frame from being raised or selected, - even if the window is displayed there. - - `reusable-frames' -- Value specifies frame(s) to search for a - window that already displays the buffer. - See `display-buffer-reuse-window'. - - `pop-up-frame-parameters' -- Value specifies an alist of frame - parameters to give a new frame, if - one is created. - - `window-height' -- Value specifies either an integer (the number - of lines of a new window), a floating point number (the - fraction of a new window with respect to the height of the - frame's root window) or a function to be called with one - argument - a new window. The function is supposed to adjust - the height of the window; its return value is ignored. - Suitable functions are `shrink-window-if-larger-than-buffer' - and `fit-window-to-buffer'. - - `window-width' -- Value specifies either an integer (the number - of columns of a new window), a floating point number (the - fraction of a new window with respect to the width of the - frame's root window) or a function to be called with one - argument - a new window. The function is supposed to adjust - the width of the window; its return value is ignored. - - `allow-no-window' -- A non-nil value indicates readiness for the case - of not displaying the buffer and FUNCTION can safely return - a non-window value to suppress displaying. - - `preserve-size' -- Value should be either (t . nil) to - preserve the width of the window, (nil . t) to preserve its - height or (t . t) to preserve both. - - `window-parameters' -- Value specifies an alist of window - parameters to give the chosen window. - -The ACTION argument to `display-buffer' can also have a non-nil -and non-list value. This means to display the buffer in a window -other than the selected one, even if it is already displayed in -the selected window. If called interactively with a prefix -argument, ACTION is t." +buffer as the first argument and the combined action alist as the +second argument, until one of the functions returns non-nil. + +Action functions and the action they try to perform are: + `display-buffer-same-window' -- Use the selected window. + `display-buffer-reuse-window' -- Use a window already showing + the buffer. + `display-buffer-in-previous-window' -- Use a window that did + show the buffer before. + `display-buffer-use-some-window' -- Use some existing window. + `display-buffer-pop-up-window' -- Pop up a new window. + `display-buffer-below-selected' -- Use or pop up a window below + the selected one. + `display-buffer-at-bottom' -- Use or pop up a window at the + bottom of the selected frame. + `display-buffer-pop-up-frame' -- Show the buffer on a new frame. + `display-buffer-in-child-frame' -- Show the buffer in a + child frame. + `display-buffer-no-window' -- Do not display the buffer and + have `display-buffer' return nil immediately. + +Action alist entries are: + 'inhibit-same-window' -- A non-nil value prevents the same + window from being used for display. + 'inhibit-switch-frame' -- A non-nil value prevents any frame + used for showing the buffer from being raised or selected. + 'reusable-frames' -- The value specifies the set of frames to + search for a window that already displays the buffer. + Possible values are nil (the selected frame), t (any live + frame), visible (any visible frame), 0 (any visible or + iconified frame) or an existing live frame. + 'pop-up-frame-parameters' -- The value specifies an alist of + frame parameters to give a new frame, if one is created. + 'window-height' -- The value specifies the desired height of the + window chosen and is either an integer (the total height of + the window), a floating point number (the fraction of its + total height with respect to the total height of the frame's + root window) or a function to be called with one argument - + the chosen window. The function is supposed to adjust the + height of the window; its return value is ignored. Suitable + functions are `shrink-window-if-larger-than-buffer' and + `fit-window-to-buffer'. + 'window-width' -- The value specifies the desired width of the + window chosen and is either an integer (the total width of + the window), a floating point number (the fraction of its + total width with respect to the width of the frame's root + window) or a function to be called with one argument - the + chosen window. The function is supposed to adjust the width + of the window; its return value is ignored. + 'preserve-size' -- The value should be either (t . nil) to + preserve the width of the chosen window, (nil . t) to + preserve its height or (t . t) to preserve its height and + width in future changes of the window configuration. + 'window-parameters' -- The value specifies an alist of window + parameters to give the chosen window. + 'allow-no-window' -- A non-nil value means that `display-buffer' + may not display the buffer and return nil immediately. + +The entries 'window-height', 'window-width' and 'preserve-size' +are applied only when the window used for displaying the buffer +never showed another buffer before. + +The ACTION argument can also have a non-nil and non-list value. +This means to display the buffer in a window other than the +selected one, even if it is already displayed in the selected +window. If called interactively with a prefix argument, ACTION +is t. Non-interactive calls should always supply a list or nil. + +The optional third argument FRAME, if non-nil, acts like a +\(reusable-frames . FRAME) entry appended to the action alist +specified by the ACTION argument." (interactive (list (read-buffer "Display buffer: " (other-buffer)) (if current-prefix-arg t))) (let ((buffer (if (bufferp buffer-or-name) @@ -7074,9 +7094,10 @@ its documentation for additional customization information." ;;; `display-buffer' action functions: (defun display-buffer-use-some-frame (buffer alist) - "Display BUFFER in an existing frame that meets a predicate -\(by default any frame other than the current frame). If -successful, return the window used; otherwise return nil. + "Display BUFFER in an existing frame that meets a predicate. +The default predicate is to use any frame other than the selected +frame. If successful, return the window used; otherwise return +nil. If ALIST has a non-nil `inhibit-switch-frame' entry, avoid raising the frame. @@ -7089,17 +7110,18 @@ predicate. If ALIST has a non-nil `inhibit-same-window' entry, avoid using the currently selected window (only useful with a frame-predicate that allows the selected frame)." - (let* ((predicate (or (cdr (assq 'frame-predicate alist)) - (lambda (frame) - (and - (not (eq frame (selected-frame))) - (not (window-dedicated-p - (or - (get-lru-window frame) - (frame-first-window frame))))) - ))) + (let* ((predicate + (or (cdr (assq 'frame-predicate alist)) + (lambda (frame) + (and (not (eq frame (selected-frame))) + (not (window-dedicated-p + (or (get-lru-window frame) + (frame-first-window frame)))))))) (frame (car (filtered-frame-list predicate))) - (window (and frame (get-lru-window frame nil (cdr (assq 'inhibit-same-window alist)))))) + (window + (and frame + (get-lru-window + frame nil (cdr (assq 'inhibit-same-window alist)))))) (when window (prog1 (window--display-buffer From 39e85a0c6c8de75b446e8e4dc41cdfdca96907e3 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Mon, 29 Oct 2018 19:01:07 -0400 Subject: [PATCH 103/567] Note that lex bound lambda forms are not self-quoting (Bug#33199) * doc/lispref/functions.texi (Anonymous Functions): * lisp/subr.el (lambda): Note that under lexical binding a lambda form yields a closure object (Bug#33199). --- doc/lispref/functions.texi | 9 ++++++--- lisp/subr.el | 13 +++++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index 242d754dea90..216666c713ac 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -1082,15 +1082,18 @@ This macro returns an anonymous function with argument list @var{args}, documentation string @var{doc} (if any), interactive spec @var{interactive} (if any), and body forms given by @var{body}. -In effect, this macro makes @code{lambda} forms self-quoting: -evaluating a form whose @sc{car} is @code{lambda} yields the form -itself: +Under dynamic binding, this macro effectively makes @code{lambda} +forms self-quoting: evaluating a form whose @sc{car} is @code{lambda} +yields the form itself: @example (lambda (x) (* x x)) @result{} (lambda (x) (* x x)) @end example +Note that when evaluting under lexical binding the result is a closure +object (@pxref{Closures}). + The @code{lambda} form has one other effect: it tells the Emacs evaluator and byte-compiler that its argument is a function, by using @code{function} as a subroutine (see below). diff --git a/lisp/subr.el b/lisp/subr.el index 59f6949b2115..d09789340fc3 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -93,12 +93,13 @@ Info node `(elisp)Specification List' for details." `(put (quote ,symbol) 'edebug-form-spec (quote ,spec))) (defmacro lambda (&rest cdr) - "Return a lambda expression. -A call of the form (lambda ARGS DOCSTRING INTERACTIVE BODY) is -self-quoting; the result of evaluating the lambda expression is the -expression itself. The lambda expression may then be treated as a -function, i.e., stored as the function value of a symbol, passed to -`funcall' or `mapcar', etc. + "Return an anonymous function. +Under dynamic binding, a call of the form (lambda ARGS DOCSTRING +INTERACTIVE BODY) is self-quoting; the result of evaluating the +lambda expression is the expression itself. Under lexical +binding, the result is a closure. Regardless, the result is a +function, i.e., it may be stored as the function value of a +symbol, passed to `funcall' or `mapcar', etc. ARGS should take the same form as an argument list for a `defun'. DOCSTRING is an optional documentation string. From a3242cc4593a1682f467d00b93670e538171c620 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 9 Nov 2018 11:13:32 +0200 Subject: [PATCH 104/567] Improve documentation of Diff mode * doc/emacs/files.texi (Diff Mode): Document the effect of prefix argument on the Diff mode's commands. Document 'diff-jump-to-old-file'. --- doc/emacs/files.texi | 93 +++++++++++++++++++++++++++++--------------- 1 file changed, 61 insertions(+), 32 deletions(-) diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index 61aa2fc3016a..9c57bbe267c3 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -1427,23 +1427,30 @@ manually, type @kbd{M-x diff-mode}. @cindex hunk, diff The changes specified in a patch are grouped into @dfn{hunks}, which are contiguous chunks of text that contain one or more changed lines. -Hunks can also include unchanged lines to provide context for the +Hunks usually also include unchanged lines to provide context for the changes. Each hunk is preceded by a @dfn{hunk header}, which -specifies the old and new line numbers at which the hunk occurs. Diff -mode highlights each hunk header, to distinguish it from the actual -contents of the hunk. +specifies the old and new line numbers where the hunk's changes occur. +Diff mode highlights each hunk header, to distinguish it from the +actual contents of the hunk. + + The first hunk in a patch is preceded by a file header, which shows +the names of the new and the old versions of the file, and their time +stamps. If a patch shows changes for more than one file, each file +has such a header before the first hunk of that file's changes. @vindex diff-update-on-the-fly You can edit a Diff mode buffer like any other buffer. (If it is -read-only, you need to make it writable first. @xref{Misc Buffer}.) -Whenever you change a hunk, Diff mode attempts to automatically -correct the line numbers in the hunk headers, to ensure that the patch -remains correct. To disable automatic line number correction, -change the variable @code{diff-update-on-the-fly} to @code{nil}. - - Diff mode treats each hunk as an error message, similar to -Compilation mode. Thus, you can use commands such as @kbd{C-x `} to -visit the corresponding source locations. @xref{Compilation Mode}. +read-only, you need to make it writable first; see @ref{Misc Buffer}.) +Whenever you edit a hunk, Diff mode attempts to automatically correct +the line numbers in the hunk headers, to ensure that the patch remains +correct, and could still be applied by @command{patch}. To disable +automatic line number correction, change the variable +@code{diff-update-on-the-fly} to @code{nil}. + + Diff mode arranges for hunks to be treated as compiler error +messages by @kbd{C-x `} and other commands that handle error messages +(@pxref{Compilation Mode}). Thus, you can use the compilation-mode +commands to visit the corresponding source locations. In addition, Diff mode provides the following commands to navigate, manipulate and apply parts of patches: @@ -1451,7 +1458,8 @@ manipulate and apply parts of patches: @table @kbd @item M-n @findex diff-hunk-next -Move to the next hunk-start (@code{diff-hunk-next}). +Move to the next hunk-start (@code{diff-hunk-next}). With prefix +argument @var{n}, move forward to the @var{n}th next hunk. @findex diff-auto-refine-mode @cindex mode, Diff Auto-Refine @@ -1469,19 +1477,22 @@ default, add this to your init file (@pxref{Hooks}): @item M-p @findex diff-hunk-prev -Move to the previous hunk-start (@code{diff-hunk-prev}). Like +Move to the previous hunk-start (@code{diff-hunk-prev}). With prefix +argument @var{n}, move back to the @var{n}th previous hunk. Like @kbd{M-n}, this has the side-effect of refining the hunk you move to, unless you disable Diff Auto-Refine mode. @item M-@} @findex diff-file-next Move to the next file-start, in a multi-file patch -(@code{diff-file-next}). +(@code{diff-file-next}). With prefix argument @var{n}, move forward +to the start of the @var{n}th next file. @item M-@{ @findex diff-file-prev Move to the previous file-start, in a multi-file patch -(@code{diff-file-prev}). +(@code{diff-file-prev}). With prefix argument @var{n}, move back to +the start of the @var{n}th previous file. @item M-k @findex diff-hunk-kill @@ -1496,7 +1507,10 @@ In a multi-file patch, kill the current file part. @findex diff-apply-hunk @cindex patches, applying Apply this hunk to its target file (@code{diff-apply-hunk}). With a -prefix argument of @kbd{C-u}, revert this hunk. +prefix argument of @kbd{C-u}, revert this hunk, i.e.@: apply the +reverse of the hunk, which changes the ``new'' version into the ``old'' +version. If @code{diff-jump-to-old-file} is non-@code{nil}, apply the +hunk to the ``old'' version of the file instead. @item C-c C-b @findex diff-refine-hunk @@ -1506,8 +1520,16 @@ of each changed line were actually changed. @item C-c C-c @findex diff-goto-source +@vindex diff-jump-to-old-file Go to the source file and line corresponding to this hunk -(@code{diff-goto-source}). +(@code{diff-goto-source}). By default, this jumps to the ``new'' +version of the file, the one shown first on the file header. +With a prefix argument, jump to the ``old'' version instead. If +@code{diff-jump-to-old-file} is non-@code{nil}, this command by +default jumps to the ``old'' file, and the meaning of the prefix +argument is reversed. If the prefix argument is a number greater than +8 (e.g., if you type @kbd{C-u C-u C-c C-c}), then this command also +sets @code{diff-jump-to-old-file} for the next invocation. @item C-c C-e @findex diff-ediff-patch @@ -1517,41 +1539,47 @@ Start an Ediff session with the patch (@code{diff-ediff-patch}). @item C-c C-n @findex diff-restrict-view Restrict the view to the current hunk (@code{diff-restrict-view}). -@xref{Narrowing}. With a prefix argument of @kbd{C-u}, restrict the +@xref{Narrowing}. With a prefix argument, restrict the view to the current file of a multiple-file patch. To widen again, use @kbd{C-x n w} (@code{widen}). @item C-c C-r @findex diff-reverse-direction Reverse the direction of comparison for the entire buffer -(@code{diff-reverse-direction}). +(@code{diff-reverse-direction}). With a prefix argument, reverse the +direction only inside the current region (@pxref{Mark}). Reversing +the direction means changing the hunks and the file-start headers to +produce a patch that would change the ``new'' version into the ``old'' +one. @item C-c C-s @findex diff-split-hunk -Split the hunk at point (@code{diff-split-hunk}). This is for -manually editing patches, and only works with the @dfn{unified diff -format} produced by the @option{-u} or @option{--unified} options to -the @command{diff} program. If you need to split a hunk in the -@dfn{context diff format} produced by the @option{-c} or -@option{--context} options to @command{diff}, first convert the buffer -to the unified diff format with @kbd{C-c C-u}. +Split the hunk at point (@code{diff-split-hunk}) into two separate +hunks. This inserts a hunk header and modifies the header of the +current hunk. This command is useful for manually editing patches, +and only works with the @dfn{unified diff format} produced by the +@option{-u} or @option{--unified} options to the @command{diff} +program. If you need to split a hunk in the @dfn{context diff format} +produced by the @option{-c} or @option{--context} options to +@command{diff}, first convert the buffer to the unified diff format +with @kbd{C-c C-u}. @item C-c C-d @findex diff-unified->context Convert the entire buffer to the @dfn{context diff format} (@code{diff-unified->context}). With a prefix argument, convert only -the text within the region. +the hunks within the region. @item C-c C-u @findex diff-context->unified Convert the entire buffer to unified diff format (@code{diff-context->unified}). With a prefix argument, convert unified format to context format. When the mark is active, convert -only the text within the region. +only the hunks within the region. @item C-c C-w @findex diff-ignore-whitespace-hunk -Re-diff the current hunk, disregarding changes in whitespace +Re-generate the current hunk, disregarding changes in whitespace (@code{diff-ignore-whitespace-hunk}). @item C-x 4 A @@ -1582,7 +1610,8 @@ that whitespace in both the patch and the patched source file(s). This command does not save the modifications that it makes, so you can decide whether to save the changes (the list of modified files is displayed in the echo area). With a prefix argument, it tries to -modify the original source files rather than the patched source files. +modify the original (``old'') source files rather than the patched +(``new'') source files. @node Copying and Naming @section Copying, Naming and Renaming Files From 92296de42bc5805670d083e2518e00251cb1375c Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 9 Nov 2018 09:51:54 -0500 Subject: [PATCH 105/567] * src/data.c (Ftype_of): xwidget objects are possible! (bug#33294) (syms_of_data): Define Qwidget here. * src/xwidget.c (syms_of_xwidget): Instead of here. --- src/data.c | 10 +++++++--- src/xwidget.c | 2 -- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/data.c b/src/data.c index 8d58cbd94103..0a098c999495 100644 --- a/src/data.c +++ b/src/data.c @@ -276,10 +276,12 @@ for example, (type-of 1) returns `integer'. */) } case PVEC_MODULE_FUNCTION: return Qmodule_function; - /* "Impossible" cases. */ case PVEC_XWIDGET: - case PVEC_OTHER: + return Qxwidget; case PVEC_XWIDGET_VIEW: + return Qxwidget_view; + /* "Impossible" cases. */ + case PVEC_OTHER: case PVEC_SUB_CHAR_TABLE: case PVEC_FREE: ; } @@ -3732,8 +3734,8 @@ syms_of_data (void) DEFSYM (Qmarker, "marker"); DEFSYM (Qoverlay, "overlay"); DEFSYM (Qfinalizer, "finalizer"); -#ifdef HAVE_MODULES DEFSYM (Qmodule_function, "module-function"); +#ifdef HAVE_MODULES DEFSYM (Quser_ptr, "user-ptr"); #endif DEFSYM (Qfloat, "float"); @@ -3756,6 +3758,8 @@ syms_of_data (void) DEFSYM (Qfont_entity, "font-entity"); DEFSYM (Qfont_object, "font-object"); DEFSYM (Qterminal, "terminal"); + DEFSYM (Qxwidget, "xwidget"); + DEFSYM (Qxwidget_view, "xwidget-view"); DEFSYM (Qdefun, "defun"); diff --git a/src/xwidget.c b/src/xwidget.c index 530d1af707ad..bcc450bac60b 100644 --- a/src/xwidget.c +++ b/src/xwidget.c @@ -992,8 +992,6 @@ syms_of_xwidget (void) defsubr (&Sxwidget_buffer); defsubr (&Sset_xwidget_plist); - DEFSYM (Qxwidget, "xwidget"); - DEFSYM (QCxwidget, ":xwidget"); DEFSYM (QCtitle, ":title"); From c7b8a51b79bfe76c03a04fed3d46bc026ba0139a Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Sat, 10 Nov 2018 20:32:36 +0100 Subject: [PATCH 106/567] ; * doc/lispref/functions.texi (Anonymous Functions): Fix typo. --- doc/lispref/functions.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index 216666c713ac..37c94c1db747 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -1091,8 +1091,8 @@ yields the form itself: @result{} (lambda (x) (* x x)) @end example -Note that when evaluting under lexical binding the result is a closure -object (@pxref{Closures}). +Note that when evaluating under lexical binding the result is a +closure object (@pxref{Closures}). The @code{lambda} form has one other effect: it tells the Emacs evaluator and byte-compiler that its argument is a function, by using From 8c2778a9fbb82ed55335404f2b312fcc04bafaea Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 10 Nov 2018 22:22:39 +0200 Subject: [PATCH 107/567] Improve documentation of 'move-file-to-trash' * doc/emacs/files.texi (Misc File Ops): Index move-file-to-trash. State that the way to restore trashed files is system-dependent. --- doc/emacs/files.texi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index 9c57bbe267c3..e4b97e58fca9 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -1697,10 +1697,12 @@ Dired rather than @code{delete-file}. @xref{Dired Deletion}. @cindex trash @cindex recycle bin +@findex move-file-to-trash @kbd{M-x move-file-to-trash} moves a file into the system @dfn{Trash} (or @dfn{Recycle Bin}). This is a facility available on most operating systems; files that are moved into the Trash can be -brought back later if you change your mind. +brought back later if you change your mind. (The way to restore +trashed files is system-dependent.) @vindex delete-by-moving-to-trash By default, Emacs deletion commands do @emph{not} use the Trash. To From d614b84fa4af512a2caccb950643a08616e14355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simen=20Heggest=C3=B8yl?= Date: Sun, 11 Nov 2018 10:21:30 +0100 Subject: [PATCH 108/567] Fix typos in midnight.el * lisp/midnight.el (clean-buffer-list-delay-general) (clean-buffer-list-kill-regexps) (clean-buffer-list-kill-buffer-names): Fix docstring typos. --- lisp/midnight.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/midnight.el b/lisp/midnight.el index 82994c579f7b..7c4096c326f4 100644 --- a/lisp/midnight.el +++ b/lisp/midnight.el @@ -64,7 +64,7 @@ the time when it is run.") (defcustom clean-buffer-list-delay-general 3 "The number of days before any buffer becomes eligible for autokilling. -The autokilling is done by `clean-buffer-list' when is it in `midnight-hook'. +The autokilling is done by `clean-buffer-list' when it is in `midnight-hook'. Currently displayed and/or modified (unsaved) buffers, as well as buffers matching `clean-buffer-list-kill-never-buffer-names' and `clean-buffer-list-kill-never-regexps' are excluded." @@ -81,7 +81,7 @@ displayed more than this many seconds ago." "List of regexps saying which buffers will be killed at midnight. If buffer name matches a regexp in the list and the buffer was not displayed in the last `clean-buffer-list-delay-special' seconds, it is killed by -`clean-buffer-list' when is it in `midnight-hook'. +`clean-buffer-list' when it is in `midnight-hook'. If a member of the list is a cons, its `car' is the regexp and its `cdr' is the number of seconds to use instead of `clean-buffer-list-delay-special'. See also `clean-buffer-list-kill-buffer-names', @@ -101,7 +101,7 @@ if the buffer should be killed by `clean-buffer-list'." "List of strings saying which buffers will be killed at midnight. Buffers with names in this list, which were not displayed in the last `clean-buffer-list-delay-special' seconds, are killed by `clean-buffer-list' -when is it in `midnight-hook'. +when it is in `midnight-hook'. If a member of the list is a cons, its `car' is the name and its `cdr' is the number of seconds to use instead of `clean-buffer-list-delay-special'. See also `clean-buffer-list-kill-regexps', From 913c001f43350a70c8fc9d3eb846242eb63c9ae8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 11 Nov 2018 18:17:51 +0200 Subject: [PATCH 109/567] * lisp/files.el (write-file): Clarify the doc string. (Bug#33339) --- lisp/files.el | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lisp/files.el b/lisp/files.el index 9a8ed64e702f..eb09a7c83f56 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -4246,12 +4246,15 @@ the old visited file has been renamed to the new name FILENAME." "Write current buffer into file FILENAME. This makes the buffer visit that file, and marks it as not modified. -If you specify just a directory name as FILENAME, that means to use -the default file name but in that directory. You can also yank -the default file name into the minibuffer to edit it, using \\\\[next-history-element]. - -If the buffer is not already visiting a file, the default file name -for the output file is the buffer name. +Interactively, prompt for FILENAME. +If you specify just a directory name as FILENAME, that means to write +to a file in that directory. In this case, the base name of the file +is the same as that of the file visited in the buffer, or the buffer +name sans leading directories, if any, if the buffer is not already +visiting a file. + +You can also yank the file name into the minibuffer to edit it, +using \\\\[next-history-element]. If optional second arg CONFIRM is non-nil, this function asks for confirmation before overwriting an existing file. From 1d79c2ebd9bd9aa36586e57463502373c0296d11 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 11 Nov 2018 22:34:46 -0800 Subject: [PATCH 110/567] Work around dumping bug on GNU/Linux ppc64le Problem reported by Thomas Fitzsimmons (Bug#33174). Do not merge to master, as we have a better fix there. * src/Makefile.in (emacs$(EXEEXT)): (bootstrap-emacs$(EXEEXT)): Unset EMACS_HEAP_EXEC before invoking temacs. --- src/Makefile.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Makefile.in b/src/Makefile.in index 6ed8f3cc9162..53c18e7ac030 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -534,6 +534,7 @@ emacs$(EXEEXT): temacs$(EXEEXT) \ ifeq ($(CANNOT_DUMP),yes) ln -f temacs$(EXEEXT) $@ else + unset EMACS_HEAP_EXEC; \ LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup dump ifneq ($(PAXCTL_dumped),) $(PAXCTL_dumped) $@ @@ -739,6 +740,7 @@ bootstrap-emacs$(EXEEXT): temacs$(EXEEXT) ifeq ($(CANNOT_DUMP),yes) ln -f temacs$(EXEEXT) $@ else + unset EMACS_HEAP_EXEC; \ $(RUN_TEMACS) --batch $(BUILD_DETAILS) --load loadup bootstrap ifneq ($(PAXCTL_dumped),) $(PAXCTL_dumped) emacs$(EXEEXT) From 9723c214a58bd6257231ce4d52c884f38f941855 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Mon, 12 Nov 2018 16:42:49 +0100 Subject: [PATCH 111/567] ; ChangeLog.3 update --- ChangeLog.3 | 2192 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 2191 insertions(+), 1 deletion(-) diff --git a/ChangeLog.3 b/ChangeLog.3 index a0a4794b4e03..6e1f68fe9947 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,3 +1,2193 @@ +2018-11-12 Paul Eggert + + Work around dumping bug on GNU/Linux ppc64le + + Problem reported by Thomas Fitzsimmons (Bug#33174). + Do not merge to master, as we have a better fix there. + * src/Makefile.in (emacs$(EXEEXT)): + (bootstrap-emacs$(EXEEXT)): + Unset EMACS_HEAP_EXEC before invoking temacs. + +2018-11-11 Eli Zaretskii + + * lisp/files.el (write-file): Clarify the doc string. (Bug#33339) + +2018-11-11 Simen Heggestøyl + + Fix typos in midnight.el + + * lisp/midnight.el (clean-buffer-list-delay-general) + (clean-buffer-list-kill-regexps) + (clean-buffer-list-kill-buffer-names): Fix docstring typos. + +2018-11-10 Eli Zaretskii + + Improve documentation of 'move-file-to-trash' + + * doc/emacs/files.texi (Misc File Ops): Index + move-file-to-trash. State that the way to restore trashed + files is system-dependent. + +2018-11-09 Stefan Monnier + + * src/data.c (Ftype_of): xwidget objects are possible! (bug#33294) + + (syms_of_data): Define Qwidget here. + * src/xwidget.c (syms_of_xwidget): Instead of here. + +2018-11-09 Eli Zaretskii + + Improve documentation of Diff mode + + * doc/emacs/files.texi (Diff Mode): Document the effect of + prefix argument on the Diff mode's commands. Document + 'diff-jump-to-old-file'. + +2018-11-09 Noam Postavsky + + Note that lex bound lambda forms are not self-quoting (Bug#33199) + + * doc/lispref/functions.texi (Anonymous Functions): + * lisp/subr.el (lambda): Note that under lexical binding a lambda form + yields a closure object (Bug#33199). + +2018-11-08 Martin Rudalics + + Rewrite buffer display related doc-strings and doc + + * lisp/window.el (display-buffer-overriding-action) + (display-buffer-alist, display-buffer-base-action) + (display-buffer-fallback-action, display-buffer-assq-regexp) + (display-buffer): Rewrite doc-strings using suggestions by + Alan Mackenzie . + (display-buffer-use-some-frame): Adjust doc-string and + reformat code. + * doc/lispref/windows.texi (Buffer Display Action Alists): + Make docs on 'window-height', 'window-width' and + 'preserve-size' entries more accurate. + +2018-11-06 Eli Zaretskii + + Fix call to GlobalMemoryStatusEx in w32.c + + * src/w32.c (system_process_attributes): Initialize the size + of the data structure passed to GlobalMemoryStatusEx, + otherwise it fails. + +2018-11-04 Eli Zaretskii + + Improve recent changes in documentation of window handling + + * doc/lispref/windows.texi (Displaying Buffers) + (Choosing Window, Buffer Display Action Functions) + (Buffer Display Action Alists, Choosing Window Options) + (Precedence of Action Functions, The Zen of Buffer Display): + Fix wording, punctuation, and markup. Remove redundant + cross-references. + + * doc/emacs/windows.texi (Window Choice, Temporary Displays): + Fix wording and punctuation. + +2018-11-04 Martin Rudalics + + Rewrite documentation of buffer display + + * doc/emacs/windows.texi (Window Choice): Rewrite, replacing + references to older buffer display options with references to + and examples of buffer display actions. + (Temporary Displays): Rewrite display of *Completions* + example. + + * doc/lispref/elisp.texi (Top): New Windows section + 'Displaying Buffers'. + * doc/lispref/frames.texi (Child Frames): Adjust cross + reference. + * doc/lispref/windows.texi (Windows): New section 'Displaying + Buffers'. Move sections 'Choosing Window', 'Display Action + Functions' and 'Choosing Window Options' there and adjust + namings. Preferably write 'Buffer Display Action' instead of + 'Display Action'. More consistently use @w{} to make key + binding specifications unsplittable. + (Displaying Buffers): New section. + (Choosing Window): Make it a subsection of 'Displaying + Buffers'. More explicitly describe how 'display-buffer' + compiles its list of action functions and the action alist. + (Buffer Display Action Functions): Rename from 'Display Action + Functions', make it a subsection of 'Displaying Buffers' and + rewrite it. Elide more detailed descriptions of action alist + entries; these are now in the new section 'Buffer Display + Action Functions'. Remove example. + (Buffer Display Action Alists): New subsection of 'Displaying + Buffers' giving a comprehensive description of recognized + action alist entries with appropriate indexing. Contents were + partially moved here from the old 'Display Action Functions' + section. + (Choosing Window Options): Make it a subsection of 'Displaying + Buffers'. Add examples of how to rewrite old buffer display + options with the help of buffer display actions. + (Precedence of Action Functions): New subsection of + 'Displaying Buffers' explaining the execution order of action + functions with the help of a detailed example. + (The Zen of Buffer Display): New subsection of 'Displaying + Buffers' supplying guidelines on how to write and use buffer + display actions with examples. + (Side Windows, Displaying Buffers in Side Windows) + (Frame Layouts with Side Windows, Atomic Windows): Update + references to the 'Displaying Buffers' subsections. + +2018-11-03 Eli Zaretskii + + Improve documentation of destructuring-binding macros + + * lisp/emacs-lisp/pcase.el (pcase-dolist, pcase-let) + (pcase-let*): Improve the doc strings. + + * doc/lispref/sequences.texi (Sequence Functions): Improve + wording and rename arguments of seq-let to be more + descriptive. Add a cross-reference to "Destructuring with + pcase Patterns". + * doc/lispref/control.texi (Pattern-Matching Conditional): + Improve wording and the menu. + (pcase Macro): Incorporate patch suggested by Paul Eggert + . Reformat text. + (Destructuring with pcase Patterns): Rename from + "Destructuring patterns", and improve wording and indexing. + +2018-11-03 Eli Zaretskii + + Avoid byte compilation warning in rcirc.el + + * lisp/net/rcirc.el (rcirc-prompt-start-marker): Move + definition before 1st use to avoild byte-compiler warning. + +2018-11-03 Basil L. Contovounesios + + Avoid race in rcirc process filter (bug#33145) + + * lisp/net/rcirc.el (rcirc-filter): Clear rcirc-process-output + before processing its constituent lines. Otherwise, if rcirc-filter + runs again before the last rcirc-process-server-response is + finished, the contents of rcirc-process-output could be duplicated. + +2018-11-03 Jordan Wilson (tiny change) + + Avoid file-name errors when viewing PDF from Gnus + + * lisp/doc-view.el (doc-view-mode): Run the output file name + through 'convert-standard-filename', to avoid problems with + characters that are not allowed in file names on some + systems. (Bug#32989) + +2018-11-02 Eli Zaretskii + + Avoid crashes with remapped default face in Org mode + + * src/xfaces.c (face_at_buffer_position): Look up BASE_FACE_ID + anew if it is not in the frame's face cache. This avoids + crashes when Org mode sets up for a new major mode in embedded + code fragment, and the default face is remapped. (Bug#33222) + +2018-11-01 Eric Abrahamsen + + Doc fix for checkdoc-continue + + * lisp/emacs-lisp/checkdoc.el (checkdoc-continue): There is no second + optional argument, and the function always starts from point. + +2018-11-01 Eli Zaretskii + + Fix a typo in autoload.el + + * lisp/emacs-lisp/autoload.el (update-directory-autoloads): + Remove stray backslashes. (Bug#33231) + +2018-10-31 Stefan Monnier + + * doc/lispref/control.texi (Destructuring patterns): New subsection. + +2018-10-31 Gemini Lasswell + + Add regression test for Bug#33014 + + Backport from master. + * test/src/eval-tests.el: + (eval-tests-byte-code-being-evaluated-is-protected-from-gc): New test. + (eval-tests-33014-var): New variable. + (eval-tests-33014-func, eval-tests-33014-redefine): New functions. + +2018-10-31 Paul Eggert + + Refer to bytecode constant vectors (Bug#33014) + + Backport from master. + * src/bytecode.c (exec_byte_code): Save VECTOR into stack slot + so that it survives GC. The stack slot was otherwise unused, + so this doesn’t cost us memory, only a store insn. + +2018-10-30 Stefan Monnier + + * lisp/emacs-lisp/pcase.el: Improve docstrings. + +2018-10-30 Eli Zaretskii + + * lisp/emacs-lisp/rx.el (rx): Fix typo in doc string. (Bug#33205) + +2018-10-30 Eli Zaretskii + + Improve doc string of 'call-process' + + * src/callproc.c (Fcall_process): Clarify DESTINATION in the + doc string. + +2018-10-30 Eli Zaretskii + + Document that generic functions cannot be commands + + * doc/lispref/commands.texi (Defining Commands): + * doc/lispref/functions.texi (Generic Functions): Document + that generic functions cannot be turned into commands. + (Bug#33170) + +2018-10-28 Charles A. Roelli + + * lisp/mail/rmailsum.el (rmail-summary-output): Add lost word to doc. + +2018-10-28 Charles A. Roelli + + Add index entries for more isearch commands/bindings (Bug#32990) + + * doc/emacs/search.texi (Basic Isearch): Index isearch-exit, + isearch-abort, isearch-cancel, isearch-repeat-forward, + isearch-repeat-backward and their bindings. + (Repeat Isearch): Index isearch-ring-advance, + isearch-ring-retreat and isearch-edit-string. + (Special Isearch): Index isearch-quote-char, + isearch-char-by-name and their bindings. Index + isearch-query-replace and isearch-query-replace-regexp, and + the latter's binding. Explain what + isearch-query-replace-regexp does. Index isearch-complete. + (Word Search): Index isearch-toggle-word. + +2018-10-27 Noam Postavsky + + * lisp/simple.el (filter-buffer-substring): Clarify doc (Bug#33179). + +2018-10-27 Eli Zaretskii + + Fix recent change in lispref/processes.texi. + + * doc/lispref/processes.texi (Asynchronous Processes): Clarify + wording. Suggested by Thomas Fitzsimmons . + (Bug#33050) + +2018-10-27 Eli Zaretskii + + * lisp/simple.el (region-extract-function): Doc fix. (Bug#33167) + + * lisp/simple.el (region-bounds): Doc fix. (Bug#33168) + +2018-10-27 Eli Zaretskii + + Improve documentation of 'process-connection-type' + + * doc/lispref/processes.texi (Asynchronous Processes): Clarify + better when it is advisable to use pipes for communicating + with subprocesses. (Bug#33050) + +2018-10-27 Pierre Téchoueyres + + Unify prompt for gnupg passphrase between GNU/Linux and MS-Windows. + + * lisp/epg.el (epg--start): Use 'raw-text' for coding system instead + of 'binary', in order to avoid spurious carriage return on Microsoft + Windows and MS-DOS when prompting for a password. (Bug#33040) + +2018-10-27 Eli Zaretskii + + Doc fix of 'gnus-fetch-old-headers' + + * lisp/gnus/gnus-sum.el (gnus-fetch-old-headers): Avoid + treating 'some' and 'invisible' as symbols that need to be + hyperlinked. Reported by Robert Pluim . + (Bug#33090) + +2018-10-27 Eric Abrahamsen + + Deactivate incorrect hyperlinking in gnus-build-sparse-threads doc + + * lisp/gnus/gnus-sum.el (gnus-build-sparse-threads): Add the word + "symbol" so it doesn't link to the `some' function. (Bug#33090) + +2018-10-27 Eli Zaretskii + + Minor copyedits in cmdargs.texi + + * doc/emacs/cmdargs.texi (Initial Options): Document '-nsl'. + Add a cross-reference to "Writing Dynamic Modules". + +2018-10-27 Eli Zaretskii + + Improve documentation of X resource loading + + * doc/emacs/cmdargs.texi (Initial Options): + * doc/emacs/frames.texi (Frame Parameters): + * doc/emacs/xresources.texi (Resources): Document the + '--no-x-resources' command-line option and the fact that X + resources override .emacs settings of frame parameters. + (Bug#32975) + +2018-10-27 Michael Albinus + + * lisp/net/tramp-sh.el (tramp-inline-compress-commands): + + Suppress warnings about obsolete environment variable GZIP. + +2018-10-25 Noam Postavsky + + Don't error when indenting malformed Lisp (Bug#30891) + + * lisp/emacs-lisp/lisp-mode.el (lisp-indent-calc-next): If we run out + of indent stack, reset the parse state. + +2018-10-25 Charles A. Roelli + + Improve 'isearch-delete-char' documentation (Bug#32990) + + * doc/emacs/search.texi (Basic Isearch): Index + 'isearch-delete-char', its keybinding and the isearch "input + item" concept, and define the latter. + (Error in Isearch): Clarify the different uses of DEL and + C-M-w during isearch. + + * lisp/isearch.el (isearch-delete-char): Correct its + documentation and link to the Info node '(emacs)Basic Isearch' + which explains less technically how this function works in + everyday usage. + +2018-10-25 Alan Third + + Improve XPM load failure message (bug#33126) + + * src/image.c (xpm_load_image): Only XPM3 is supported, so make that + explicit. + +2018-10-25 Eli Zaretskii + + Avoid infloop in CPerl mode fontification + + * lisp/progmodes/cperl-mode.el + (cperl-font-lock-fontify-region-function): Stop the loop at + EOB, to avoid inflooping there. (Bug#33114) + +2018-10-25 Andreas Schwab + + Fix minibuffer-help-form for lexical binding + + * lisp/simple.el (set-variable): Substitute var into + minibuffer-help-form. + * lisp/cus-edit.el (custom-prompt-variable): Likewise. + +2018-10-24 Alan Third + + Fix some NS drawing issues (bug#32932) + + * src/nsterm.m (ns_clip_to_rect): + (ns_reset_clipping): Remove gsaved variable and associated code. + (ns_flush_display): Remove function. + (ns_copy_bits): use translateRectsNeedingDisplayInRect:by: to copy any + pending drawing actions along with the image. + ([EmacsView windowWillResize:toSize:]): Remove unneeded call. + ([EmacsView drawRect:]): Remove redundant call to ns_clear_frame_area, + and optimize the exposed rectangles. + (ns_draw_window_cursor): Remove unneeded disabling of screen updates. + +2018-10-24 Katsumi Yamaoka + + * lisp/gnus/mm-util.el (mm-decompress-buffer): Fix split-string args. + +2018-10-24 Noam Postavsky + + * doc/misc/calc.texi (Summary): The +/- key is 'p', not 'P'. + +2018-10-23 Robert Pluim + + Correct typo in GNU ELPA url + + * doc/misc/efaq.texi (Packages that do not come with Emacs): + Correct typo in GNU ELPA url (Bug#33072). Change other url + references to use https scheme. + +2018-10-22 Eli Zaretskii + + * doc/misc/dired-x.texi (Omitting Variables): Fix wording. (Bug#33112) + +2018-10-20 Michael Heerdegen + + Fix help-form binding in dired-create-files + + This fixes Bug#32630: since "dired-aux" moved to lexical binding mode, + the free variable TO in the constructed HELP-FORM got out of scope of + the surrounding 'let'. + + * lisp/dired-aux.el (dired-create-files): Make the binding of + HELP-FORM a string. + +2018-10-20 Eli Zaretskii + + Fix a pasto in a Gnus doc string + + * lisp/gnus/gnus-art.el (gnus-article-treat-fold-newsgroups): + Doc string fix. (Bug#33081) + +2018-10-19 Mauro Aranda (tiny change) + + Update revert-buffer documentation + + * doc/emacs/files.texi (Reverting): Document that revert-buffer + does keep undo history. (Bug#33084) + +2018-10-18 Juri Linkov + + * lisp/mail/smtpmail.el (smtpmail-send-queued-mail): Load file with .el suffix. + + For the case when load-prefer-newer is t, ensure loading the right file + by explicitly adding the .el suffix. Use the same variable names + as in the function smtpmail-send-it. (Bug#33055) + +2018-10-16 Glenn Morris + + Tweak Makefile emacs-module.h handling + + * Makefile.in (install-arch-indep, uninstall): Respect DESTDIR. + Handle whitespace. Remove non-portable mkdir argument. + + (cherry picked from commit c1d0dbd6ca92cb221024382b19654e4fbf1d1ed3) + +2018-10-16 Philipp Stephani + + Install emacs-module.h (Bug#31929) + + * Makefile.in (includedir): New variable. + (install-arch-indep): Install emacs-module.h. + (uninstall): Uninstall emacs-module.h. + + (cherry picked from commit 00ea749f2af44bff6ea8c1259477fbf0ead8a306) + +2018-10-15 Alan Mackenzie + + Clarify documentation of fractional vertical scrolling and some doc strings + + * doc/lispref/windows.texi (vertical scrolling): Clarify the meaning of + vertical scrolling by referring to tall screen lines, images, and the display + action. Clarify an ambiguous English tense. + + * src/window.c (window-vscroll, set-window-vscroll): Amend doc strings to + refer to display. + +2018-10-15 Charles A. Roelli + + * lisp/isearch.el (isearch-cmds): Recall absent isearch--state slot. + +2018-10-14 Alan Mackenzie + + doc/lispref/edebug.texi (Specification List) Remove obstrusive blank line + +2018-10-14 Eli Zaretskii + + Fix wording in module API documentation + + * doc/lispref/internals.texi (Module Functions): Fix confusing + wording. Reported by Basil L. Contovounesios . + +2018-10-13 Eli Zaretskii + + Fix redisplay of glyphless characters + + * src/conf_post.h (bool_bf): Use 'unsigned int' in the MinGW + builds. Suggested by Tom Tromey . (Bug#33017) + * src/dispnew.c (scrolling_window): Update commentary + regarding xwidget builds. + +2018-10-13 Robert Pluim + + Update --without-toolkit-scroll-bars doc + + * configure.ac (--without-toolkit-scroll-bars): Update list of + affected toolkits. + +2018-10-13 Robert Pluim + + Call GTK functions only on GTK scrollbars + + * src/gtkutil.c (xg_set_background_color) [USE_TOOLKIT_SCROLL_BARS]: + Don't call GTK functions on non-GTK scrollbars (Bug#32975). + +2018-10-13 Eli Zaretskii + + Update the description of startup in ELisp manual + + * doc/lispref/os.texi (Startup Summary): Remove stale + reference to window-system-initialization-alist. Reported by + Zhang Haijun . + +2018-10-13 Eli Zaretskii + + Use the 'line-number' face for line-number fields past EOB + + * src/xdisp.c (get_phys_cursor_geometry): Treat rows at and + beyond ZV specially. Don't let the cursor exceed the + vertical dimensions of the row. + (maybe_produce_line_number): Use the 'line-number' face + instead of 'default' for blank fields beyond ZV. Don't update + the IT metrics when displaying blank line-number fields beyond + ZV. (Bug#32337) + +2018-10-12 Alan Third + + Ensure NS frame is redrawn correctly after scroll + + * src/nsterm.m (ns_copy_bits): Set needsDisplay so the previous cursor + position is redrawn. + +2018-10-12 Alex Branham + + Avoid byte-compiler warning in em-rebind.el + + * lisp/eshell/em-rebind.el (eshell-delete-backward-char): Use + 'delete-char' instead of delete-backward-char. (Bug#32945) + +2018-10-12 Eli Zaretskii + + Improve indexing of 'C-SPC C-SPC' + + * doc/emacs/mark.texi (Disabled Transient Mark): Fix + indexing. (Bug#32959) + +2018-10-11 Eric Abrahamsen + + Fix bug with precious entries in Gnus registry + + * lisp/registry.el (registry-collect-prune-candidates): This `cdr' was + an error: it meant that the last key in the precious list, would be + considered a nil. Since the precious list only contains the symbol + 'mark by default, marks were never considered precious. + * doc/misc/gnus.texi (Store arbitrary data): Fix typo: "marks" should + be "mark". + +2018-10-11 Eli Zaretskii + + Document in the ELisp manual how to write loadable modules + + * doc/lispref/internals.texi (Writing Dynamic Modules) + (Module Initialization, Module Functions, Module Values) + (Module Misc, Module Nonlocal): New nodes. + * doc/lispref/loading.texi (Dynamic Modules): Add + cross-reference to the new node. + * doc/lispref/internals.texi (GNU Emacs Internals): + * doc/lispref/elisp.texi (Top): Update menus for the new nodes. + +2018-10-11 Tino Calancha + + dired-do-shell-command: Notify users after abort the command + + * lisp/dired-aux.el (dired-do-shell-command): Notify users that + the command have aborted when they answer 'n' to the prompt (Bug#32969). + +2018-10-11 Michael Albinus + + Adapt Tramp version. Do not merge with master + + * lisp/net/trampver.el: Change version to "2.3.5.26.2". + (customize-package-emacs-version-alist): Add Tramp version + integrated in Emacs 26.2. + +2018-10-10 Alan Third + + Fix Apple Script permissions error + + * nextstep/templates/Info.plist.in: Add NSAppleEventsUsageDescription + message to enable AppleEvents usage. + +2018-10-10 Mauro Aranda (tiny change) + + Fix typo in 'timerp' documentation + + * doc/lispref/os.texi (Timers): Fix typo in 'timerp' documentation. + (Bug#32999) + +2018-10-08 Charles A. Roelli + + * doc/emacs/mark.texi (Mark): Index "(de)activating the mark". + + (Bug#32956) + +2018-10-08 Scott Corley (tiny change) + + Fix overflow lockup with frames > 255 lines + + Backport from master. + * src/scroll.c (struct matrix_elt): Change unsigned char fields to + int to handle frames with more than 255 lines (Bug#32951). + +2018-10-07 Eli Zaretskii + + Avoid assertion violations in nonsensical calls to 'signal' + + * src/eval.c (Fsignal): If both arguments are nil, replace the + first one with 'error', to avoid assertion violations further + down the line. (Bug#32961) + +2018-10-06 Charles A. Roelli + + * lisp/simple.el (transient-mark-mode): Correct documentation. (Bug#32956) + +2018-10-06 Eli Zaretskii + + Update the locale and language database + + * lisp/international/mule-cmds.el (locale-language-names): + Update the list of supported locales. Use existing language + names where available. + +2018-10-05 Eli Zaretskii + + Fix a typo in a doc string. + + * lisp/window.el (display-buffer-alist): Fix a typo in a doc string. + Reported by Michael Heerdegen . + +2018-10-05 Katsumi Yamaoka + + Make nneething allow CRLF-encoded files (bug#32940) + + * lisp/gnus/nneething.el (nneething-request-article): + Bind coding system to raw-text instead of binary when reading a file, + that may be CRLF-encoded (bug#32940). + +2018-10-04 Eric Abrahamsen + + Further fix to eieio-persistent + + * lisp/emacs-lisp/eieio-base.el (eieio-persistent-validate/fix-slot-value): + Make handling of hash tables and vectors recursive. This is + necessary because the write process, in `eieio-override-prin1' is + also recursive. With any luck, this will be the last fix of its + kind. If that's true, cherry-pick to Emacs 26.2 later on. + +2018-10-04 Eli Zaretskii + + Avoid ridiculously high stack limit requests on macOS + + * src/emacs.c (main): Avoid wraparound in subtraction of + rlim_t values, in case rlim_t is an unsigned type. (Bug#32338) + +2018-10-03 Charles A. Roelli + + Improve documentation of 'read-hide-char' + + * src/minibuf.c (syms_of_minibuf) : Clarify + documentation and mention where else the variable is used. + * doc/lispref/minibuf.texi (Reading a Password): Add an index + entry for 'read-hide-char'. + +2018-10-03 Alan Mackenzie + + In follow mode, prevent the cursor resting on a partially displayed line + + Don't merge to master. This fixes bug #32848 + + * lisp/follow.el (follow-adjust-window): If point ends up in a partially + displayed line in a left hand or middle window, move it one line + forward, to + prevent unwanted scrolling should make-cursor-line-fully-visible be + non-nil. + +2018-10-03 Alan Mackenzie + + Revert "Temporary workaround for bug #32848 for branch emacs-26" + + This reverts commit 6650751ce73413d05599df07a9c5bc70744260f3. + +2018-10-03 Alan Mackenzie + + Revert "* etc/NEWS: Note setting make-cursor-line-fully-visible to nil in follow-mode" + + This reverts commit f3c8f4bde2de2b9d42c44f5e44f34c427bebdc58. + +2018-10-03 Alan Mackenzie + + * etc/NEWS: Note setting make-cursor-line-fully-visible to nil in follow-mode + + Also re-insert the "temporary note" explaining --- and +++. + +2018-10-03 Noam Postavsky + + Fix note about interactive advice (Bug#32905) + + * doc/lispref/functions.texi (Core Advising Primitives): Add missing + ':', and finish the sentence fragment. + +2018-10-01 Michael Albinus + + Comple fix for Bug#32550 + + * lisp/net/tramp.el (tramp-rfn-eshadow-update-overlay): + Use `save-excursion'. This completes the fix of Bug#32550. + +2018-10-01 Eli Zaretskii + + * lisp/savehist.el (savehist-mode): Doc fix. (Bug#32889) + +2018-09-30 Nicolas Goaziou + + Org manual: Rewrite the Org Mobile section + + * doc/misc/org.texi (Org Mobile): Rewritten from "MobileOrg" section. + Remove all references to non-free software. + Moved into "Miscellaneous", much like Org Crypt library. No longer an + appendix. + (Footnotes): Remove a reference to "MobileOrg". + (Bug#32722) + +2018-09-30 Alan Mackenzie + + Temporary workaround for bug #32848 for branch emacs-26 + + Do not merge with master. + + * lisp/follow.el (follow-mode): Set make-cursor-line-fully-visible to nil + buffer locally whilst follow-mode is active. + +2018-09-29 Tino Calancha + + Improve cl-do, cl-do* docstrings + + * lisp/emacs-lisp/cl-macs.el(cl-do, cl-do*): + Improve docstring (Bug#32803). + +2018-09-29 Eli Zaretskii + + Avoid returning early in 'while-no-input' due to subprocesses + + * src/keyboard.c (kbd_buffer_store_buffered_event): Support + also the internal buffer-switch events. + (syms_of_keyboard) : New DEFSYM. + + * lisp/subr.el (while-no-input-ignore-events): Ignore + 'buffer-switch' events. Reported by Michael Heerdegen + . + + * etc/NEWS: Mention the change in behavior of 'while-no-input' + +2018-09-29 John Shahid + + Cleanup when opening a new terminal fails. (Bug#32794) + + * src/term.c (init_tty): Call delete_terminal_internal if emacs_open + fail. + * src/terminal.c (delete_terminal): Move some code into + delete_terminal_internal and call it. + (delete_terminal_internal): New function. + * src/termhooks.h: Prototype for delete_terminal_internal. + +2018-09-28 Alan Third + + Fix deprecation warning + + * src/nsterm.m (ns_term_init): Use writeToFile or writeToURL as + required. + +2018-09-28 Alan Third + + Make all NS drawing be done from drawRect + + See bug#31904 and bug#32812. + + * src/nsterm.m (ns_update_begin): Don't lock focus, only clip if there + is already a view focused. + (ns_update_end): Don't mess with view focusing any more. + (ns_focus): Only clip drawing if there is already a focused view, + otherwise mark area dirty for later drawing. Renamed ns_clip_to_rect. + All callers changed. + (ns_unfocus): Don't unfocus the view any more. Renamed + ns_reset_clipping. All callers changed. + (ns_clip_to_row): Update to match ns_clip_to_rect. + (ns_clear_frame): + (ns_clear_frame_area): + (ns_draw_fringe_bitmap): + (ns_draw_window_cursor): + (ns_draw_vertical_window_border): + (ns_draw_window_divider): + (ns_dumpglyphs_stretch): + (ns_draw_glyph_string): Only draw if ns_focus or ns_clip_to_row + return YES. + (ns_copy_bits): Remove superfluous calls to ns_(un)focus. + (ns_flush_display): New function. + +2018-09-28 Michael Albinus + + Fix Bug#32828 + + * lisp/net/dbus.el (dbus-init-bus): Return number of connections, + as promised by the docstring. (Bug#32828) + +2018-09-28 Noam Postavsky + + * lisp/net/shr.el (shr-copy-url): Fix docstring. + +2018-09-27 Eli Zaretskii + + Fix typos in documentation + + * doc/misc/vhdl-mode.texi (Custom Indentation Functions): + * doc/misc/url.texi (Customization): + * doc/misc/tramp.texi (Overview): + * doc/misc/srecode.texi (Developing Template Functions): + * doc/misc/sieve.texi (Sieve Mode): + * doc/misc/reftex.texi (Options - Creating Citations): + * doc/misc/org.texi (Cooperation, Conflicts): + * doc/misc/gnus.texi (Misc Group Stuff): + * doc/misc/eshell.texi (Bugs and ideas): + * doc/misc/calc.texi (Summary): + * doc/man/emacsclient.1: + * doc/lispref/os.texi (Security Considerations): + * doc/lispref/control.texi (pcase Macro): + * CONTRIBUTE: Fix typos. Reported by Mak Kolybabi + (Bug#32853) + +2018-09-24 Stefan Monnier + + * doc/emacs/kmacro.texi (Basic Keyboard Macro): Mention old bindings + + According to Apple gospel, function keys are partly going the way of the dodo + so F3/F4 can, like in the good old days, be hard to reach for some users. + +2018-09-24 Eli Zaretskii + + Improve docs of functions/variables related to 'display-buffer' + + * lisp/window.el (display-buffer, pop-to-buffer-same-window) + (display-buffer-same-window, display-buffer-in-side-window) + (same-window-p, display-buffer-overriding-action) + (display-buffer-base-action) + (display-buffer--same-window-action) + (display-buffer--other-frame-action) + (with-current-buffer-window, with-displayed-buffer-window) + (display-buffer-alist, display-buffer-assq-regexp) + (display-buffer-other-frame): Clarify and improve the doc + strings. (Bug#32798) + +2018-09-23 Stefan Monnier + + * lisp/mouse.el (tear-off-window): Fix non-mouse use (bug#32799) + +2018-09-22 Eli Zaretskii + + Improve documentation of directory-local variables + + * lisp/files.el (hack-local-variables, normal-mode) + (after-find-file, find-file-hook): Mention directory-local + variables in the doc strings. Suggested by Marcin Borkowski + . + + * doc/emacs/custom.texi (File Variables, Directory Variables): + Clarify that directory-local variables are overridden by + file-local ones. + +2018-09-22 Eli Zaretskii + + Don't use obsolete variable 'save-place' in documentation + + * doc/lispref/customize.texi (Variable Definitions): Replace + example of saveplace defcustom with a fictitious one, which + will not bit-rot with time. (Bug#32741) + +2018-09-22 Mark A. Hershberger + + Use save-place-mode instead of save-place + + * lisp/menu-bar.el (menu-bar-options-save, menu-bar-options-menu): + * lisp/saveplace.el (save-place-to-alist, save-places-to-alist) + (save-place-find-file-hook, save-place-dired-hook): Use + save-place-mode instead of the obsolete save-place. + +2018-09-20 Eli Zaretskii + + More accurate docs for 'text-char-description' + + * src/keymap.c (Ftext_char_description): + * doc/lispref/help.texi (Describing Characters): More accurate + description of 'text-char-description'. Remove incorrect + examples from the ELisp manual. (Bug#32743) + +2018-09-20 Noam Postavsky + + Document synchronous behavior of eshell/make (Bug#32513) + + * doc/misc/eshell.texi (Built-ins): + * lisp/eshell/em-unix.el (eshell/make): Mention that it falls back to + the external 'make' command when called synchronously. + +2018-09-20 Shigeru Fukaya + + Fix bs-show with wide characters (Bug#17822) + + * lisp/bs.el (bs--insert-one-entry, bs-show-in-buffer): Use + string-width instead of length. + +2018-09-19 Eli Zaretskii + + Improve Custom menu labels for 2 options + + * lisp/dired.el (dired-use-ls-dired): + * lisp/progmodes/xref.el (xref-prompt-for-identifier): Improve + the doc string and the defcustom menu/tags text. (Bug#32756) + +2018-09-19 Eli Zaretskii + + Improve wording of last change in dired-x.texi + + * doc/misc/dired-x.texi (Shell Command Guessing): Clarify + wording in description of 'dired-guess-shell-alist-user'. + Avoid passive tense. (Bug#32733) + +2018-09-18 Eli Zaretskii + + Fix GnuTLS test suite with GnuTLS versions 3.4.x + + * src/gnutls.c (gnutls_cipher_get_tag_size): Make it return + zero only for versions of GnuTLS < 3.2.2, where + gnutls_cipher_get_tag_size was introduced. This fixes the + GnuTLS test suite, which assumes that any cipher whose tag + size is non-zero is AEAD-capable, and doesn't test such ciphers + if AEAD is not available, i.e. for GnuTLS < 3.5.1. (Bug#32446) + +2018-09-17 Noam Postavsky + + Fix build with gnutls versions 3.0 to 3.2 (Bug#32446) + + We previously used functions available only in 3.2+ for all 3.x + versions. + * src/gnutls.c [GNUTLS_VERSION_NUMBER < 0x030501]: Replace calls to + gnutls_cipher_get_tag_size with 0. + [GNUTLS_VERSION_NUMBER < 0x030200]: Alias gnutls_cipher_get_iv_size + to gnutls_cipher_get_block_size, gnutls_digest_list to + gnutls_mac_list, and gnutls_digest_get_name to gnutls_mac_get_name. + [WINDOWSNT]: Adjust DLL function definitions and declarations + accordingly. + +2018-09-17 Eli Zaretskii + + Fix the Bubbles game on TTY frames + + * lisp/play/bubbles.el (bubbles--col-offset) + (bubbles--row-offset): Doc fixes. + (bubbles--compute-offsets): Conflate the GUI and TTY code into + a single common version. Set the offsets to simple numbers, + not to lists. + (bubbles--initialize, bubbles--show-scores): Wrap offset + values in a list, so that they are interpreted as pixel + values, not as units of character width. This fixes the game + on TTY frames. (Bug#32744) + +2018-09-17 Allen Li + + Add choice to reshow certificate information (Bug#31877) + + In various situations, the window displaying the certificate + information can be hidden (such as if the user accidentally presses ?, + which causes the read-multiple-choice help window to replace it). + Instead of leaving the user to make a choice blindly, add a choice to + reshow the certification information. + + * lisp/net/nsm.el (nsm-query-user): Add reshow choice. + +2018-09-16 Glenn Morris + + * src/alloc.c (Fbool_vector, Flist, Fvector): Doc tweak. + + Use a simpler, consistent form. + +2018-09-15 Alan Mackenzie + + * src/alloc.c (vector): Fix grammatical error in doc string: "are" -> "is". + +2018-09-15 Eli Zaretskii + + Avoid adverse side effects of fixing bug#21824 + + * test/src/buffer-tests.el + (overlay-modification-hooks-deleted-overlay): New test. + + * src/buffer.c (report_overlay_modification): Don't bypass all + the overlay-modification hooks; instead, invoke each function + only if the buffer associated with the overlay is the current + buffer. (Bug#30823) + +2018-09-15 Eli Zaretskii + + Document changes called out in NEWS + + * doc/lispref/lists.texi (Association Lists): Document + 'assoc-delete-all'. + * doc/lispref/minibuf.texi (Minibuffers): Adapt menu. + (Multiple Queries): Document 'read-answer'. + + * etc/NEWS: Reflect the above documentation in the respective + entries. + +2018-09-14 Glenn Morris + + Tiny doc updates re yum/dnf etc + + * INSTALL: Mention dnf and Debian unversioned emacs package. + * doc/misc/efaq.texi (Installing Emacs): Mention dnf. + +2018-09-14 Leo Liu + + Remove unused variable + + * lisp/progmodes/prolog.el (prolog-hungry-delete-key-flag): Remove. + +2018-09-14 Leo Liu + + Fix (thing-at-point 'list) regression (Bug#31772) + + * lisp/thingatpt.el (thing-at-point-bounds-of-list-at-point): Revert + to pre 26.1 behavior. Return whole sexp at point if no enclosing + list. + (list-at-point): New optional arg to ignore comments and strings. + + * test/lisp/thingatpt-tests.el + (thing-at-point-bounds-of-list-at-point): Fix and augment tests. + +2018-09-14 Robert Pluim + + Clarify meaning of '*' + + * doc/misc/dired-x.texi (Shell Command Guessing): Clarify meaning + of '*'. (Bug#32733) + +2018-09-12 Paul Eggert + + * etc/PROBLEMS: Document Ubuntu 16.04 issue. + +2018-09-12 Alex Branham (tiny change) + + Increase default value for imenu-auto-rescan-maxout + + * lisp/imenu.el (imenu-auto-rescan-maxout): Increase default value to + 600000. (Bug#18426) + * doc/emacs/programs.texi (imenu-auto-rescan-maxout): Add + documentation for imenu-auto-rescan-maxout. + +2018-09-11 Eli Zaretskii + + Improve recent change to ELisp manual + + * doc/lispref/commands.texi (Keyboard Events): Add index entry + for "character event". (Bug#32562) + +2018-09-11 Eli Zaretskii + + * doc/lispref/display.texi (SVG Images): Improve wording. + + * doc/lispref/display.texi (SVG Images): Fix a typo. (Bug#32690) + +2018-09-10 Eli Zaretskii + + Clarify completion text in the ELisp manual + + * doc/lispref/minibuf.texi (Programmed Completion): Clarify + text. Suggested by Stefan Monnier . + +2018-09-10 Eli Zaretskii + + Fix handling of abbreviated control command in gdb-mi.el + + * lisp/progmodes/gdb-mi.el (gdb-control-commands-regexp): + Support unambiguous abbreviations of commands. (Bug#32576) + +2018-09-10 Eli Zaretskii + + Clarify documentation of functions reading character events + + * doc/lispref/help.texi (Describing Characters): + * doc/lispref/commands.texi (Keyboard Events) + (Reading One Event, Classifying Events): Make the distinction + between characters and character events more explicit. + + * src/keymap.c (Ftext_char_description) + (Fsingle_key_description): + * src/lread.c (Fread_char, Fread_char_exclusive): Doc fixes, + to make a clear distinction between a character input event + and a character code. (Bug#32562) + +2018-09-07 Eli Zaretskii + + Record :version for built-in variables while dumping + + * lisp/cus-start.el (standard): Record the ':version; of the + symbols when dumping, so that 'describe-variable' could tell + which built-in variables were added/changed in recent + versions. + +2018-09-07 YAMAMOTO Mitsuharu + + * src/process.c (connect_network_socket): Fix memory leak. (Bug#32604) + +2018-09-05 Glenn Morris + + * Makefile.in (appdatadir): Use the non-obsolete location "metainfo". + +2018-09-04 Stefan Monnier + + Better fix for bug#32550 + + * lisp/rfn-eshadow.el (rfn-eshadow-overlay): Give it a global default. + + * lisp/net/tramp.el (rfn-eshadow-overlay): Declare it as dynamically scoped. + (tramp-rfn-eshadow-update-overlay): Revert the corresponding part of + last change. + +2018-09-04 Michael Albinus + + Fix Bug#32550 + + * lisp/net/tramp.el (tramp-rfn-eshadow-setup-minibuffer): Do not + use `symbol-value'. + (tramp-rfn-eshadow-update-overlay): Do not use `symbol-value'. Do + not let-bind `rfn-eshadow-overlay', assign it directly (due to + lexical binding). (Bug#32550) + +2018-09-04 Martin Rudalics + + Don't call XGetGeometry for frames without outer X window (Bug#32615) + + * src/xfns.c (frame_geometry): Don't call XGetGeometry when + FRAME has no outer X window; return nil instead. (Bug#32615) + +2018-09-03 Paul Eggert + + * lisp/calculator.el: Fix doc typo. + +2018-09-03 Glenn Morris + + Standardize calc bug reporting instructions + + * doc/misc/calc.texi (Reporting Bugs): Use standard commands. + * lisp/calc/calc-misc.el (report-calc-bug, calc-report-bug): + * lisp/calc/calc.el (calc-bug-address): Change to be + obsolete aliases for standard Emacs bug reporting items. + +2018-08-31 Michael Albinus + + Rename thread-alive-p to thread-live-p + + * doc/lispref/threads.texi (Basic Thread Functions): Use thread-live-p. + + * etc/NEWS: 'thread-alive-p' has been renamed to 'thread-live-p'. + + * src/thread.c (thread_live_p): Rename from thread_alive_p. Adapt + all callees. + (Fthread_live_p): Rename from Fthread_alive_p. + (syms_of_threads): Make thread-alive-p an alias of thread-live-p. + + * test/src/thread-tests.el (all): Replace `thread-alive-p' by + `thread-live-p'. + (threads-live): Rename from `threads-alive'. + +2018-08-30 Miciah Masters (tiny change) + + rcirc: Document /reconnect as a built-in command (Bug#29656) + + The change "New command rcirc-cmd-reconnect" from 2014-04-09 (shipped + in Emacs 25.1) added a /reconnect command to rcirc but did not + document it and did not delete the example /reconnect command + definition in the manual. + * doc/misc/rcirc.texi (rcirc commands): Document the built-in /reconnect + command. + (Hacking and Tweaking): Delete example reconnect command. + +2018-08-30 Noam Postavsky + + * test/lisp/calc/calc-tests.el (calc-imaginary-i): New test. + +2018-08-28 Glenn Morris + + admin.el: respect environment settings for makeinfo etc + + * admin/admin.el (manual-makeinfo, manual-texi2pdf, manual-texi2dvi): + New variables. + (manual-html-mono, manual-html-node, manual-pdf, manual-ps): Use them. + +2018-08-28 Glenn Morris + + * etc/PROBLEMS: New entry about GTK+ 3 crash with some X servers. + +2018-08-28 Noam Postavsky + + Index profiler commands in elisp manual + + * doc/lispref/debugging.texi (Profiling): Add index entries for + profiler-start, profiler-report, profiler-stop. + +2018-08-28 Noam Postavsky + + Fix math-imaginary-i check + + Reported by Bastian Erdnüß at + . + * lisp/calc/calc-cplx.el (math-imaginary-i): Check for a value + of (polar 1 ). + +2018-08-28 Eli Zaretskii + + Avoid infinite hscrolling loops when line numbers are displayed + + * src/xdisp.c (maybe_produce_line_number): Don't produce line + numbers if we don't have enough screen estate. (Bug#32351) + +2018-08-28 Eli Zaretskii + + Avoid crashes in malformed defvar + + * src/eval.c (Fdefvar): Don't call XSYMBOL on something that + might not be a symbol. This avoids crashes due to malformed + 'defvar' forms. (Bug#32552) + +2018-08-28 Glenn Morris + + * configure.ac (emacs_config_features): Add GLIB, XDBE, XIM. + + * configure.ac: Doc fixes related to --with-xim. + +2018-08-28 Glenn Morris + + Small checkdoc quoting fix (bug#32546) + + * lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine): + Fix quoting thinko. + +2018-08-26 Sergey Vinokurov + + Fix detection of freed emacs_values (Bug#32479) + + * src/emacs-module.c (module_free_global_ref): Compare a value to be + freed with all entries of the list. + + * test/data/emacs-module/mod-test.c (Fmod_test_globref_free): New + function. + (emacs_module_init): Make it accessible from Lisp. + * test/src/emacs-module-tests.el (mod-test-globref-free-test): New + test which uses it. + +2018-08-25 Eli Zaretskii + + Avoid crashes with very wide TTY frames on MS-Windows + + * src/w32console.c : Reduce the number of elements + to 80. + : New static variables. + (w32con_clear_end_of_line): If the line is wider than the + current size of the "empty row" in 'glyphs', reallocate + 'glyphs' to support the full width of the frame. This + avoids segfaults when the frame is wider than 256 columns. + (Bug#32445) + +2018-08-25 Wenjamin Petrenko (tiny change) + + Prevent `modify-file-local-variable-prop-line' from adding extra ';' + + * lisp/files-x.el (modify-file-local-variable-prop-line): Handle + whitespace when checking if there's already a ';' before the + variable (Bug#23294). + +2018-08-24 Glenn Morris + + Update GNOME bugtracker URLs + + * configure.ac, admin/notes/multi-tty, etc/PROBLEMS: + * src/emacs.c (main): + * src/xterm.c (x_connection_closed): Update GNOME bugtracker URLs. + +2018-08-23 Eli Zaretskii + + Clarify in the Emacs manual that ChangeLog files are not used + + * doc/emacs/trouble.texi (Sending Patches): Use "commit log" + instead of "change log", to avoid the interpretation that we + are talking about literal ChangeLog files. (Bug#32359) + +2018-08-21 Eli Zaretskii + + Recognize codepage 65001 as a valid encoding + + * lisp/international/mule-conf.el (cp65001): Define it as an + alias for UTF-8. + +2018-08-18 Eli Zaretskii + + Avoid compilation warning in nt/addpm.c + + * nt/addpm.c [!MINGW_W64]: Undefine _WIN32_IE before + redefining it, to avoid compilation warnings. + +2018-08-17 Basil L. Contovounesios + + Fix duplicate custom group names in bibtex.el + + * lisp/textmodes/bibtex.el (bibtex-BibTeX-entry-alist): + Change :group from BibTeX to bibtex. (bug#32436) + +2018-08-17 Eli Zaretskii + + Fix outdated text in the Calc manual + + * doc/misc/calc.texi (Internals): Don't advertise + 'calc-extensions' which no longer exists. Reported by Francis + Wright . + +2018-08-13 Paul Eggert + + Port better to x86 -fexcess-precision=fast + + Problem reported by Eli Zaretskii in: + https://lists.gnu.org/r/emacs-devel/2018-08/msg00380.html + * src/data.c (arithcompare): Work around incompatibility + between gcc -fexcess-precision=fast and the C standard on x86, + by capturing the results of floating-point comparisons before + the excess precision spontaneously decays. Although this fix + might not work in general, it does work here and is probably + good enough for the platforms we care about. + + (cherry picked from commit a84cef90957f2379cc0df6bd908317fc441971ce) + +2018-08-13 Paul Eggert + + Add comment about floating point test + + * test/src/data-tests.el (data-tests--float-greater-than-fixnums): + New constant. + (data-tests-=, data-tests-<, data-tests->, data-tests-<=) + (data-tests->=, data-tests-min): Use it. + +2018-08-13 Tino Calancha + + Ibuffer: Add toggle ibuffer-do-toggle-lock + + Toggle the locked status in marked buffers or the buffer + at point (Bug#32421). + * lisp/ibuffer.el (ibuffer-do-toggle-lock): New command. + (ibuffer-mode-map): Bind it to 'L'. + (ibuffer-mode-operate-map): Add entries for + `ibuffer-do-toggle-read-only' and `ibuffer-do-toggle-lock'. + * etc/NEWS (Changes in Specialized Modes and Packages in Emacs 26.2): + Announce the change. + +2018-08-13 Tino Calancha + + Ibuffer: Detect correctly the buffers running a process + + * lisp/ibuffer.el (filename-and-process): Store the process buffer + as a text property; check for such property to detect a buffer + with a process (Bug#32420). + +2018-08-12 Michael Albinus + + Backport fix for Bug#32226 + + * test/lisp/shadowfile-tests.el: Set Tramp variables for hydra. + (shadow-test06-literal-groups, shadow-test07-regexp-groups) + (shadow-test08-shadow-todo, shadow-test09-shadow-copy-files): + Use `set-visited-file-name' instead of setting the value in + `buffer-file-name' directly. + (shadow-test08-shadow-todo, shadow-test09-shadow-copy-files): + Test for writable temporary directory. Suppress errors in + cleanup. (Bug#32226) + +2018-08-12 Yuri D'Elia + + Do not consider external packages to be removable (Bug#27822) + + Packages which are not directly user-installed shouldn't be autoremoved, + since they can be setup through a different path (via + `package-directory-list') where we have no authority over. + * lisp/emacs-lisp/package.el (package--user-installed-p): New + function. + (package--removable-packages): Use it. + +2018-08-11 Paul Eggert + + * src/alloc.c: Remove obsolete comments. + +2018-08-11 Eli Zaretskii + + Better support utf-8-with-signature and utf-8-hfs in HTML + + * lisp/international/mule.el (sgml-html-meta-auto-coding-function): + Support UTF-8 with BOM and utf-8-hfs as variants of UTF-8, and + obey the buffer's encoding if it is one of these variants, instead + of re-encoding in UTF-8 proper. (Bug#20623) + +2018-08-11 Eli Zaretskii + + Don't use -Wabi compiler option + + * configure.ac: Add -Wabi to the list of disabled warning + options. For the details, see + http://lists.gnu.org/archive/html/emacs-devel/2018-08/msg00123.html. + +2018-08-10 Filipp Gunbin + + Fix bugs in `auth-source-netrc-parse-one'. + + * lisp/auth-source.el (auth-source-netrc-parse-one): Ensure that match + data is not overwritten in `auth-source-netrc-parse-next-interesting'. + Ensure that blanks are skipped before and after going over comments + and eols. + * test/lisp/auth-source-tests.el (auth-source-test-netrc-parse-one): New test. + + (cherry picked from commit 60ff8101449eea3a5ca4961299501efd83d011bd) + +2018-08-09 Eli Zaretskii + + Fix copying text properties by 'format' + + * src/editfns.c (styled_format): Add the spec beginning index + to the info recorded for each format spec, and use it to + detect the case that a format spec and its text property end + where the next spec with another property begins. (Bug#32404) + + * test/src/editfns-tests.el (format-properties): Add tests for + bug#32404. + +2018-08-09 Alexander Gramiak + + Improve error messages regarding initial-buffer-choice (Bug#29098) + + * lisp/startup.el (command-line-1) : Make the + messages conform to Emacs conventions, and show the invalid return + value in the message. + +2018-08-09 Glenn Morris + + * test/lisp/wdired-tests.el (wdired-test-unfinished-edit-01): Fix typo. + +2018-08-09 Lars Ingebrigtsen + + Make async :family 'local failures fail correctly again + + * src/fileio.c (get_file_errno_data): Refactor out into its own + function so that we can reuse the error handling from an async + context (bug#31901). + + * src/process.c (connect_network_socket): When an async :family + 'local client fails (with a file error, for instance), mark the + process as failed. + + (cherry picked from commit 92ba34d89ac4f5b5bbb818e1c39a3cc12a405790) + +2018-08-09 Noam Postavsky + + Fix emacsclient check for term.el buffer (Bug#21041) + + * lib-src/emacsclient.c (find_tty): Check for any TERM value with + prefix of "eterm", not just "eterm" itself. Also check for ",term:" + in INSIDE_EMACS value. + +2018-08-08 Eli Zaretskii + + Improve documentation of 'set-fontset-font' + + * doc/lispref/display.texi (Fontsets): Fix description of + 'set-fontset-font'. + * src/fontset.c (Fset_fontset_font): Doc fix. (Bug#32401) + +2018-08-07 Eli Zaretskii + + Improve documentation of M-? + + * doc/emacs/maintaining.texi (Identifier Search): + * lisp/progmodes/xref.el (xref-find-references): Improve + documentation of xref-find-references and + xref-prompt-for-identifier. (Bug#32389) + +2018-08-07 Ivan Shmakov + + Reinterpret Esperanto characters in iso-transl as iso-8859-3. + + * lisp/international/iso-transl.el (iso-transl-language-alist): + Reinterpret Esperanto characters as iso-8859-3 (were: iso-8859-1). + (Bug#32371) + +2018-08-07 Eli Zaretskii + + Fix Flyspell mode when several languages are mixed in a buffer + + * lisp/textmodes/flyspell.el (flyspell-external-point-words): + Handle "misspelled" words that actually belong to a language + unsupported by the current dictionary. (Bug#32280) Fix the test + for Ispell the program. + +2018-08-04 Juri Linkov + + New function read-answer (Bug#31782) + + * lisp/emacs-lisp/map-ynp.el (read-answer-short): New defcustom. + (read-answer): New function. + * lisp/subr.el (assoc-delete-all): New function. + * etc/NEWS: Announce them. + + * lisp/dired.el (dired-delete-file): Use read-answer. + (dired--yes-no-all-quit-help): Remove function. + (dired-delete-help): Remove defconst. + + (backported from master, "New function read-answer (bug#30073)" and + "Respect non-saved value of `read-short-answer' (Bug#31782)") + +2018-08-02 Eli Zaretskii + + Avoid assertion violations in maybe_produce_line_number + + * src/xdisp.c (redisplay_window): Make sure desired_matrix is + cleared before calling try_window. This is important when + display-line-numbers is non-nil, because line-number display code + assumes each glyph row is completely cleared when it is called to + produce a line number. (Bug#32358) + +2018-08-02 Eli Zaretskii + + Avoid assertion violations in set_text_properties_1 + + * src/textprop.c (set_text_properties): If the call to + modify_text_properties modifies the interval tree as side effect, + recalculate the correct interval for START and END. (Bug#32265) + +2018-07-31 Stephen Berman + + Fix wdired test failure when byte compiled (bug#32318) + + * test/lisp/wdired-tests.el: Require wdired. Defvar dired-query + to silence byte-compiler. + +2018-07-30 Stephen Berman + + * test/lisp/wdired-tests.el (wdired-test-symlink-name): New test. + +2018-07-29 Raimon Grau + + Fix url's thing-at-point beginning-op (Bug#32028) + + * lisp/thingatpt.el (url): Fix beginning-op making. + +2018-07-29 Eli Zaretskii + + Fix last change in 'char_width' + + * src/character.c (char_width): Make sure variable C is always + initialized. (Bug#32276) + +2018-07-29 Stephen Berman + + Add initial tests for wdired.el + + * test/lisp/wdired-tests.el: New file. + +2018-07-28 Stephen Berman + + Fix use of non-nil wdired-use-interactive-rename + + This is a fairly minimal fix for the release branch; a more + comprehensive fix is on master, so do not merge this to master. + + * lisp/wdired.el (wdired-search-and-rename): Remove dired-filename + text property in order to find new filename when it only partially + replaces old filename (bug#32173). If user quits before renaming + succeeds, restore the dired-filename text property. + +2018-07-28 Eli Zaretskii + + Fix compilation with mingw.org's MinGW 5.x headers + +2018-07-28 Eli Zaretskii + + Update the list of special forms in the ELisp manual + + * doc/lispref/eval.texi (Special Forms): + * doc/lispref/frames.texi (Mouse Tracking): 'track-mouse' is + nowadays a macro. (Bug#32284) + +2018-07-28 Noam Postavsky + + Don't fail to indent-sexp before a full sexp (Bug#31984) + + * lisp/emacs-lisp/lisp-mode.el (indent-sexp): Only signal error if the + initial forward-sexp fails. Suppress scan-error forn any of the + forward-sexp calls after that. + * test/lisp/emacs-lisp/lisp-mode-tests.el (indent-sexp-cant-go): New + test. + +2018-07-27 Eli Zaretskii + + Fix calls to modifications hooks in replace-buffer-contents + + * src/editfns.c (Freplace_buffer_contents): Call the modification + hooks on the entire region where replacements could have taken + place. The previous attempts of being more accurate just + introduced bugs. (Bug#32278) + +2018-07-27 Eli Zaretskii + + * src/character.c (char_width): Support glyphs with faces. (Bug#32276) + +2018-07-27 Eli Zaretskii + + Display raw bytes as belonging to 'eight-bit' charset + + * lisp/descr-text.el (describe-char): + * lisp/simple.el (what-cursor-position): Display characters in the + range #x3FFF80..#x3FFF9F as belonging to charset 'eight-bit', not + 'tis620-2533'. + * lisp/international/mule-diag.el (describe-character-set): + Improve description of :supplementary-p. + +2018-07-26 Eli Zaretskii + + Fix inaccurate text in the user manual + + * doc/emacs/mule.texi (International Chars): Correct inaccurate + description of raw bytes display by "C-x =". + +2018-07-26 Michael Albinus + + Copyedits in tramp.texi, improved example with bash's readline + + * doc/misc/tramp.texi (all): Unify some wordings. + (Frequently Asked Questions): Update example with bash's readline. + +2018-07-25 Michael Albinus + + Minor Tramp doc update + + * doc/misc/tramp.texi (Frequently Asked Questions): Disable bash's + INPUTRC. + +2018-07-25 Michael Albinus + + File Shadowing is not available on MS Windows + + * doc/emacs/files.texi (File Shadowing): File Shadowing is not + available on MS Windows. + + * test/lisp/shadowfile-tests.el (shadow-test00-clusters) + (shadow-test01-sites, shadow-test02-files) + (shadow-test03-expand-cluster-in-file-name) + (shadow-test04-contract-file-name, shadow-test05-file-match) + (shadow-test06-literal-groups, shadow-test07-regexp-groups) + (shadow-test08-shadow-todo, shadow-test09-shadow-copy-files): + Skip under MS Windows. + +2018-07-24 Noam Postavsky + + Let bookmark-jump override window-point (Bug#31751) + + * lisp/bookmark.el (bookmark-jump): Use pop-to-buffer-same-window + instead of switch-to-buffer, the latter obeys + switch-to-buffer-preserve-window-point and so loses the bookmark's + point. + +2018-07-23 Noam Postavsky + + Omit keymap from subword-mode docstring (Bug#32212) + + * lisp/progmodes/subword.el (subword-mode): Remove listing of + subword-mode-map bindings, since it is empty as of 2014-03-23 "Merge + capitalized-words-mode and subword-mode". + +2018-07-23 Tino Calancha + Noam Postavsky + + Prevent line-mode term from showing user passwords + + For buffers whose mode derive from comint-mode, the user password is + read from the minibuffer and it's hidden. A buffer in term-mode and + line submode, instead shows the passwords. Make buffers in line + term-mode to hide passwords too (Bug#30190). + + * lisp/term.el (term-send-invisible): Prefer the more robust + `read-passwd' instead of `term-read-noecho'. + (term-watch-for-password-prompt): New function. + (term-emulate-terminal): Call it each time we receive non-escape + sequence output. + +2018-07-22 Jonathan Kyle Mitchell + + Check for special filenames in eshell (Bug#30724) + + * lisp/eshell/esh-cmd.el (eshell-lisp-command): Check for "~" + in lisp commands with the eshell-filename-arguments property + (Bug#30724). + + * lisp/eshell/em-dirs.el (eshell/cd, eshell/pushd, eshell/popd): + * lisp/eshell/em-ls.el (eshell/ls): + * lisp/eshell/em-unix.el (eshell/rm, eshell/mkdir, eshell/rmdir) + (eshell/mv, eshell/cp, eshell/ln, eshell/cat, eshell/du, eshell/diff): + * lisp/eshell/esh-ext.el (eshell/addpath): Add + eshell-filename-arguments to symbol plist. + +2018-07-22 Noam Postavsky + + Fix indent-sexp of #s(...) (Bug#31984) + + * lisp/emacs-lisp/lisp-mode.el (indent-sexp): Look for a sexp that + ends after the current line. + * test/lisp/emacs-lisp/lisp-mode-tests.el (indent-sexp-go): New test. + +2018-07-22 Noam Postavsky + + Add save-match-data to abbreviate-file-name (Bug#32201) + + * lisp/files.el (abbreviate-file-name): Save match-data around + expand-file-name; it is not guaranteed to preserve match-data, and may + well do so depending on what file handlers and hooks are in effect. + +2018-07-21 Eli Zaretskii + + Fix last change in editfns.c + + * src/editfns.c (Freplace_buffer_contents): Fix last change: always + call buffer modification hooks, even if nothing was deleted/inserted. + (bug#32237) + +2018-07-21 Eli Zaretskii + + Fix calls to buffer modification hooks from replace-buffer-contents + + * src/editfns.c (Freplace_buffer_contents): Don't call buffer + modification hooks if nothing was deleted/inserted. (Bug#32237) + +2018-07-21 Michael Albinus + + Fix Bug#32226 + + * lisp/shadowfile.el (shadow-site-name, shadow-name-site): + Use "[-.[:word:]]+" as hostname regexp. (Bug#32226) + + * test/lisp/shadowfile-tests.el (shadow-test06-literal-groups) + (shadow-test07-regexp-groups, shadow-test08-shadow-todo) + (shadow-test09-shadow-copy-files): Skip if needed. + +2018-07-21 Eli Zaretskii + + Improve doc strings of several variables in keyboard.c + + * src/keyboard.c (syms_of_keyboard) + + : Make sure the first + sentence of the doc string fits on a single line. + +2018-07-20 Michael Albinus + + Fix (Bug#32218). Do not merge with master + + * doc/misc/trampver.texi: + * lisp/net/trampver.el: Change version to "2.3.4.26.2". + (customize-package-emacs-version-alist): Add Tramp version + integrated in Emacs 26.2. + + * lisp/net/tramp.el (tramp-handle-file-truename): + * lisp/net/tramp-adb.el (tramp-adb-handle-file-truename): + * lisp/net/tramp-sh.el (tramp-sh-handle-file-truename): Fix problem + with trailing slash. (Bug#32218) + + * test/lisp/net/tramp-tests.el (tramp-test21-file-links): + Remove `tramp--test-emacs27-p' check. + +2018-07-20 Eli Zaretskii + + Improve documentation of 'pcase-defmacro rx' + + * lisp/emacs-lisp/rx.el (rx): Clarify and improve the doc string. + For the details, see the discussion starting at + http://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00399.html. + +2018-07-19 Eli Zaretskii + + Fix TTY colors breakage by 'clear-face-cache' + + Without examining the right frame, 'tty-color-24bit' was erroneously + treating a GUI frame as a 24-bit TTY frame. + * lisp/term/tty-colors.el (tty-color-24bit): Accept optional + argument DISPLAY and pass it to display-color-cells. Doc fix. + (tty-color-define, tty-color-desc): Pass the FRAME argument to + tty-color-24bit. (Bug#32072) + +2018-07-18 Michael Albinus + + * admin/MAINTAINERS: Add files maintained by me (Michael Albinus). + +2018-07-18 Michael Albinus + + Adapt shadowfile.el for Tramp (Bug#4526, Bug#4846) + + * etc/NEWS: Mention changes in shadowfile.el. + + * lisp/shadowfile.el (top): Require 'tramp instead of 'ange-ftp. + (shadow-cluster): New defstruct. + (shadow-make-cluster, shadow-cluster-name, shadow-cluster-primary) + (shadow-cluster-regexp, shadow-get-user) + (shadow-parse-fullname): Remove. + (shadow-info-file, shadow-todo-file, shadow-system-name) + (shadow-homedir, shadow-regexp-superquote, shadow-suffix) + (shadow-set-cluster, shadow-get-cluster, shadow-site-name) + (shadow-name-site, shadow-site-primary, shadow-site-cluster) + (shadow-read-site, shadow-parse-name, shadow-make-fullname) + (shadow-replace-name-component, shadow-local-file) + (shadow-expand-cluster-in-file-name, shadow-contract-file-name) + (shadow-same-site, shadow-file-match, shadow-define-cluster) + (shadow-define-literal-group, shadow-define-regexp-group) + (shadow-make-group, shadow-shadows-of-1, shadow-read-files) + (shadow-write-info-file, shadow-write-todo-file) + (shadow-initialize): Adapt variables and functions. + + * test/lisp/shadowfile-tests.el: New file. + +2018-07-18 Noam Postavsky + + Fix auth-source-delete (Bug#26184) + + * lisp/auth-source.el (auth-source-delete): Fix `auth-source-search' + call. + * test/lisp/auth-source-tests.el (auth-source-delete): New test. + +2018-07-17 Eli Zaretskii + + Avoid assertion violations in gnutls.c + + * src/gnutls.c (Fgnutls_hash_digest, gnutls_symmetric) + (Fgnutls_hash_mac): Check CONSP before invoking XCDR. (Bug#32187) + Report values of invalid arguments when signaling an error. + +2018-07-14 Eli Zaretskii + + Don't use a literal "C-u" in ispell.el help message text + + * lisp/textmodes/ispell.el (ispell-command-loop): Use + "\\[universal-argument]" instead of a literal "C-u". (Bug#32142) + +2018-07-14 Eli Zaretskii + + Improve documentation of 'seqp' + + * doc/lispref/sequences.texi (Sequence Functions): Add text to + explain the relation between 'seqp' and 'sequencep'. (Bug#32125) + +2018-07-14 Eli Zaretskii + + Clarify usage and dependencies between several Flyspell features + + * lisp/textmodes/flyspell.el (flyspell-region) + (flyspell-small-region, flyspell-persistent-highlight): + Documentation improvements. (Bug#32142) + +2018-07-13 Michael Albinus + + Use consistent function names in thread-tests.el + + * test/src/thread-tests.el (threads-call-error, threads-custom) + (threads-errors, threads-sticky-point, threads-signal-early): + Rename, using naming convention to prefix with "threads-". + +2018-07-13 Michael Albinus + + Fix format error in Faccept_process_output + + * src/process.c (Faccept_process_output): Do not use format spec + "%p", it isn't valid for error(). + +2018-07-13 Paul Eggert + + Lessen stack consumption in recursive read1 + + * src/lread.c (read1): Shrink local buffer size from + MAX_ALLOCA to 128 (Bug#31995). + +2018-07-13 Noam Postavsky + + Match w32 paths in grep sans --null hits (Bug#32051) + + * lisp/progmodes/grep.el (grep-regexp-alist): Add an optional part to + match paths starting with C: (other drive letters). + * test/lisp/progmodes/compile-tests.el + (compile-tests--grep-regexp-testcases) + (compile-tests--grep-regexp-tricky-testcases) + (compile-test-grep-regexps): New tests. + (compile--test-error-line): Return `compilation-message'. + +2018-07-13 Noam Postavsky + + Fix previous make-network-process change + + * src/process.c (Fmake_network_process): On 2018-07-09 "Explicitly + reject :server and :nowait (Bug#31903)", the sense of the SERVER check + was accidentally reversed so that we ended up looking for the wrong + ADDRESS. Reported by T.V Raman in + . + +2018-07-12 Eli Zaretskii + + Another documentation improvement in flyspell.el + + * lisp/textmodes/flyspell.el (flyspell-persistent-highlight): Doc + fix. + +2018-07-12 Eli Zaretskii + + Improve documentation of Flyspell + + For the background, see + http://lists.gnu.org/archive/html/help-gnu-emacs/2018-07/msg00099.html. + + * doc/emacs/fixit.texi (Spelling): Add a couple of caveats. + * lisp/textmodes/flyspell.el: Update commentary. + +2018-07-12 Michael Albinus + + Provide feature 'threads + + * src/thread.c (syms_of_threads): Provide feature "threads". + + * test/src/thread-tests.el (top): Declare the functions. + (all): Use (featurep 'threads) check. + +2018-07-11 Miciah Masters (tiny change) + + Save the server alias on reconnect (Bug#29657) + + rcirc does not retain the server alias on reconnect. As a result, rcirc + fails to re-use server and channel buffers when an alias is used. Further + problems may ensue when aliases are used to differentiate multiple + connections to the same host, for example when using a single IRC bouncer + or proxy to connect to multiple IRC networks. + + Save the server alias when connecting to a server so that reconnect will + retain the alias. + * lisp/net/rcirc.el (rcirc-connect): Include server-alias when setting + rcirc-connection-info. + +2018-07-11 Basil L. Contovounesios + + Refer to "proper lists" instead of "true lists" + + * doc/lispref/lists.texi (Cons Cells, Building Lists): + * doc/lispref/sequences.texi (Vector Functions): Use the more + popular term "proper", rather than "true", to qualify nil-terminated + lists. + + For discussion, see the following emacs-devel subthreads: + https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00112.html + https://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00138.html + +2018-07-10 John Shahid + + Avoid turning on the global-minor-mode recursively + + * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Clear + the buffer-list inside MODE-enable-in-buffers to avoid enabling the + mode recursively. (Bug#31793) + +2018-07-10 Michael Albinus + + Fix Bug#32085 + + * doc/misc/tramp.texi (GVFS based methods): `dav' and `davs' do + not support paths in the volume name. (Bug#32085) + +2018-07-10 Noam Postavsky + + Stop using indent-line-to in lisp-indent-line (Bug#32014) + + This is partial revert of "Remove ignored argument from + lisp-indent-line", because `indent-line-to' doesn't respect field + boundaries. + * lisp/emacs-lisp/lisp-mode.el (lisp-indent-line): Use delete-region + and indent-to instead of `indent-line-to'. + * test/lisp/emacs-lisp/lisp-mode-tests.el + (lisp-indent-with-read-only-field): Expect to pass. + + Don't merge to master, we will fix indent-line-to there instead. + +2018-07-10 Noam Postavsky + + Explicitly reject :server and :nowait (Bug#31903) + + * src/process.c (Fmake_network_process): Explicitly check for and + signal an error when passed both :server and :nowait non-nil. In + Emacs 25, :nowait would be ignored in this case, but as of Emacs 26.1 + this gives an error, albeit an unclear one. Also remove obsolete + comment regarding configurations lacking non-blocking mode, the + corresponding code was removed in 2012-11-17 "Assume POSIX 1003.1-1988 + or later for fcntl.h." + +2018-07-09 Michael Albinus + + Fix Bug#32090 + + * lisp/files-x.el (connection-local-normalize-criteria): Do not + use PROPERTIES anymore. + (connection-local-get-profiles): Rewrite, in order to accept any + property as optional. (Bug#32090) + (connection-local-set-profiles): + Adapt ´connection-local-normalize-criteria' call. + + * test/lisp/files-x-tests.el + (files-x-test-connection-local-set-profiles) + (files-x-test-hack-connection-local-variables-apply): Extend tests. + +2018-07-08 Paul Eggert + + Fix floating point exceptions on Alpha (Bug#32086) + + Backport from master. + * admin/merge-gnulib (GNULIB_MODULES): Add fpieee. + * m4/fpieee.m4: New file, copied from Gnulib. + * m4/gnulib-comp.m4: Regenerate. + +2018-07-08 Paul Eggert + + Fix bootstrap infloop in GNU/Linux alpha + + * src/emacs.c (main): Do not re-exec if EMACS_HEAP_EXEC + is already set (Bug#32083). + +2018-07-08 Eli Zaretskii + + Minor fix of a recent documentation change + + * lisp/net/gnutls.el (gnutls-algorithm-priority): Clarify the doc + string. + +2018-07-08 Lars Ingebrigtsen + + Mention the NSM in the gnutls variable doc strings + + * lisp/net/gnutls.el (gnutls-algorithm-priority): Mention the Network + Security Manager here since this variable is an obvious place + for people concerned about network security to look. + (gnutls-verify-error): Ditto. + (gnutls-min-prime-bits): Ditto. + +2018-07-08 Michael Albinus + + Remove test code from last commit + +2018-07-08 Michael Albinus + + Fix Bug#32084 + + * test/lisp/net/dbus-tests.el (dbus-test02-register-service-own-bus): + Unset $DISPLAY when calling dbus-launch, in order to avoid + possible X11 authentication errors. (Bug#32084) + +2018-07-07 Basil L. Contovounesios + + Fix (length NON-SEQUENCE) documentation + + Suggested by Eli Zaretskii in the following threads: + https://lists.gnu.org/archive/html/emacs-devel/2018-07/msg00171.html + https://lists.gnu.org/archive/html/emacs-devel/2018-07/msg00206.html + + * doc/lispref/sequences.texi (Sequence Functions): Mention that + 'length' signals a 'wrong-type-argument' also when given a + non-sequencep argument. + +2018-07-07 Eli Zaretskii + + Fix bug #11732 + + * src/w32fns.c (w32_wnd_proc): Fix handling of Windows input + methods. (Bug#11732) + +2018-07-07 Eli Zaretskii + + Improve documentation of 'emacs-lock-mode' + + * lisp/emacs-lock.el (emacs-lock-mode): Mention in the doc string + the special handling of some major modes due to + 'emacs-lock-unlockable-modes'. + +2018-07-07 Eli Zaretskii + + * lisp/imenu.el (imenu-generic-expression): Doc fix. (Bug#32016) + +2018-07-07 Eli Zaretskii + + Improve indexing of 'eval-defun' in ELisp manual + + * doc/lispref/display.texi (Defining Faces): + * doc/lispref/debugging.texi (Explicit Debug): + * doc/lispref/customize.texi (Variable Definitions): + * doc/lispref/variables.texi (Defining Variables): Add index + entries for 'eval-defun'. (Bug#32066) + +2018-07-06 Paul Eggert + + Fix (length CIRCULAR) documentation + + * doc/lispref/sequences.texi (Sequence Functions): + Correct documentation of what (length X) does when + X is a circular list. + +2018-07-06 Michael Albinus + + Tramp editorials + + * doc/misc/tramp.texi (Android shell setup): Mention Termux. + + * lisp/net/tramp-sh.el (tramp-remote-process-environment): + Use proper spelling "Tramp" in docstring. + +2018-07-06 Eli Zaretskii + + Clarify and improve doc strings of 'eval-last-sexp' and friends + + * lisp/simple.el (eval-expression, eval-expression-print-format): + * lisp/progmodes/elisp-mode.el (eval-last-sexp): Doc fixes. + (Bug#32064) + +2018-07-06 Glenn Morris + + Automate upload of Emacs manuals to gnu.org + + * admin/make-manuals, admin/upload-manuals: New scripts. + * admin/admin.el (make-manuals, make-manuals-dist): Handle batch mode. + * admin/make-tarball.txt: Update web-page details. + +2018-07-05 Mike Kupfer + + Fix MH-E mail composition with GNU Mailutils (SF#485) + + * lisp/mh-e/mh-comp.el (mh-bare-components): Recursively delete + the temporary folder. + +2018-07-03 Eli Zaretskii + + Speed up 'replace-buffer-contents' some more + + * src/editfns.c (EXTRA_CONTEXT_FIELDS): New members beg_a and beg_b. + (Freplace_buffer_contents): Set up ctx.beg_a and ctx.beg_b. + (buffer_chars_equal): Use ctx->beg_a and ctx->beg_b instead of + calling BUF_BEGV, which is expensive. This speeds up the recipe + in bug#31888 by 30%. + +2018-07-03 Glenn Morris + + * doc/emacs/docstyle.texi: Avoid messing up the html output. + + Previously the @hyphenation commands somehow caused the + section to go missing, with makeinfo 4.13 at least. + 2018-07-01 Paul Eggert * etc/HISTORY: Cite Brinkhoff on early history. @@ -61157,7 +63347,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit f205928d1f93f4373d755ca91805a88e022ac414 (inclusive). +commit 1d79c2ebd9bd9aa36586e57463502373c0296d11 (inclusive). See ChangeLog.1 for earlier changes. ;; Local Variables: From 189c49ebd89c4da6506f6bff931cb23218140ba7 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Mon, 12 Nov 2018 16:43:30 +0100 Subject: [PATCH 112/567] * etc/AUTHORS: Update. --- etc/AUTHORS | 224 +++++++++++++++++++++++++++++----------------------- 1 file changed, 124 insertions(+), 100 deletions(-) diff --git a/etc/AUTHORS b/etc/AUTHORS index a0cd4a7f58b6..23c88d559099 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -9,7 +9,7 @@ Aaron Ecay: changed ob-R.el ob-core.el org-src.el ox-latex.el nsterm.m ob-awk.el ob-exp.el ob-python.el ob-tangle.el org-bibtex.el org-id.el org.el org.texi package.el paren.el -Aaron Jensen: changed frameset.el Info.plist.in nsterm.m +Aaron Jensen: changed frameset.el nsterm.m Info.plist.in mouse.el Aaron Larson: co-wrote bibtex.el @@ -93,10 +93,10 @@ Alakazam Petrofsky: changed hanoi.el Alan Mackenzie: wrote cc-awk.el and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-fonts.el cc-langs.el cc-mode.el cc-styles.el cc-vars.el -and changed cc-mode.texi bytecomp.el subr.el edebug.el modes.texi - syntax.texi display.texi font-lock.el isearch.el programs.texi - follow.el help.el ispell.el lread.c control.texi cus-start.el doc.c - eval.c frames.texi help-fns.el lisp.el and 133 other files +and changed cc-mode.texi bytecomp.el subr.el edebug.el follow.el + modes.texi syntax.texi display.texi font-lock.el isearch.el + programs.texi help.el ispell.el lread.c windows.texi control.texi + cus-start.el doc.c eval.c frames.texi help-fns.el and 134 other files Alan Modra: changed unexelf.c @@ -108,9 +108,9 @@ Alan Shutko: changed diary-lib.el calendar.el bindings.el cal-hebrew.el Alan Third: wrote dabbrev-tests.el and changed nsterm.m nsfns.m nsterm.h nsmenu.m frame.el macfont.m - nsimage.m ns-win.el conf_post.h frame.c frame.h frames.texi keyboard.c - macfont.h macos.texi picture.el rect.el Info.plist.in battery.el - callproc.c configure.ac and 11 other files + nsimage.m ns-win.el Info.plist.in conf_post.h frame.c frame.h + frames.texi keyboard.c macfont.h macos.texi picture.el rect.el + battery.el callproc.c configure.ac and 12 other files Alastair Burt: changed gnus-art.el smiley.el @@ -128,7 +128,7 @@ Alexander Gramiak: changed faces.el display-line-numbers.el xt-mouse.el CTAGS.good ETAGS.good_1 ETAGS.good_2 ETAGS.good_3 ETAGS.good_4 ETAGS.good_5 ETAGS.good_6 Makefile TAGTEST.EL cl-lib-tests.el cl-macs-tests.el cus-start.el custom.texi display.texi erc-list.el - ert-tests.el ert.el etags.c and 15 other files + ert-tests.el ert.el etags.c and 16 other files Alexander Haeckel: changed getset.el @@ -162,7 +162,8 @@ Alexandre Veyrenc: changed fr-refcard.tex Alexandru Harsanyi: wrote soap-client.el soap-inspect.el and changed emacs3.py vc-hooks.el vc.el xml.el -Alex Branham: changed bibtex.el dired-x.el dired.el eww.el +Alex Branham: changed bibtex.el dired-x.el dired.el em-rebind.el eww.el + imenu.el programs.texi Alex Coventry: changed files.el @@ -203,8 +204,8 @@ Ali Bahrami: changed configure configure.ac sol2-10.h Alin C. Soare: changed lisp-mode.el hexl.el -Allen Li: changed abbrev.el comint.el dired-x.el misc.texi - progmodes/compile.el subr.el +Allen Li: changed abbrev.el bookmark.el comint.el dired-x.el misc.texi + nsm.el progmodes/compile.el subr.el Allen S. Rout: changed org-capture.el @@ -365,8 +366,8 @@ Antonin Houska: changed newcomment.el Arash Esbati: changed reftex-vars.el reftex.el reftex-auc.el reftex-ref.el -Ari Roponen: changed atimer.c doc.c hash.texi mule.texi package.el - startup.el subr.el svg.el time-date.el woman.el +Ari Roponen: changed atimer.c doc.c hash.texi image.c mule.texi + package.el startup.el subr.el svg.el time-date.el woman.el xterm.c Arisawa Akihiro: changed characters.el coding.c epa-file.el japan-util.el language/tibetan.el message.el mm-decode.el mm-view.el ps-print.el @@ -439,8 +440,9 @@ Bartosz Duszel: changed allout.el bib-mode.el cc-cmds.el hexl.el icon.el sendmail.el ses.el simple.el verilog-mode.el vi.el vip.el viper-cmd.el xscheme.el -Basil L. Contovounesios: changed simple.el message.el css-mode-tests.el - css-mode.el customize.texi gnus-art.el json-tests.el json.el man.el +Basil L. Contovounesios: changed simple.el message.el sequences.texi + bibtex.el css-mode-tests.el css-mode.el customize.texi display.texi + gnus-art.el json-tests.el json.el lists.texi man.el rcirc.el shr-color.el text.texi Bastian Beischer: changed include.el mru-bookmark.el refs.el @@ -668,10 +670,10 @@ Changwoo Ryu: changed files.el Chao-Hong Liu: changed TUTORIAL.cn TUTORIAL.zh -Charles A. Roelli: changed nsterm.m display.texi nsfns.m nsterm.h - org-clock.el DEBUG INSTALL add-log.el anti.texi buffers.texi comint.el - data.c diff-mode.el eldoc.el files.el fill.el find-func.el flymake.el - frame.el internals.texi macfont.m and 13 other files +Charles A. Roelli: changed nsterm.m display.texi isearch.el nsfns.m + nsterm.h org-clock.el search.texi simple.el DEBUG INSTALL add-log.el + anti.texi buffers.texi comint.el data.c diff-mode.el eldoc.el files.el + fill.el find-func.el flymake.el and 19 other files Charles Hannum: changed aix3-1.h aix3-2.h configure ibmrs6000.h keyboard.c netbsd.h pop.c sysdep.c systime.h systty.h xrdb.c @@ -778,7 +780,7 @@ Christophe Deleuze: changed icalendar.el Christoph Egger: changed configure.ac -Christophe Junke: changed org-agenda.el org.el +Christophe Junke: changed ido.el org-agenda.el org.el Christopher Allan Webber: changed gamegrid.el org-agenda.el tetris.el @@ -872,7 +874,8 @@ Dale Sedivec: changed sgml-mode.el wisent/python.el Damien Cassou: wrote auth-source-pass-tests.el and co-wrote auth-source-pass.el auth-source-tests.el and changed seq-tests.el seq.el simple-tests.el simple.el auth-source.el - auth.texi imenu-tests.el imenu.el info.el isearch.el sequences.texi + auth.texi imenu-tests.el imenu.el info.el isearch.el rmc.el + sequences.texi Damien Elmes: changed erc.el erc-dcc.el erc-track.el erc-log.el erc-pcomplete.el README erc-button.el erc-nets.el erc-ring.el Makefile @@ -1343,9 +1346,9 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c] chartab-tests.el coding-tests.el doc-tests.el etags-tests.el rxvt.el tty-colors.el and changed xdisp.c msdos.c w32.c display.texi w32fns.c simple.el - files.el fileio.c w32proc.c keyboard.c w32term.c files.texi text.texi - dispnew.c emacs.c frames.texi lisp.h dispextern.h process.c term.c - window.c and 1111 other files + files.el fileio.c keyboard.c w32proc.c files.texi w32term.c text.texi + dispnew.c emacs.c frames.texi dispextern.h lisp.h process.c term.c + window.c and 1121 other files Emanuele Giaquinta: changed configure.ac rxvt.el charset.c etags.c fontset.c frame.el gnus-faq.texi loadup.el lread.c sh-script.el @@ -1366,11 +1369,11 @@ and changed ada-stmt.el Era Eriksson: changed bibtex.el dired.el json.el ses.el ses.texi shell.el tramp.el tramp.texi -Eric Abrahamsen: changed eieio-base.el nnimap.el registry.el +Eric Abrahamsen: changed eieio-base.el registry.el nnimap.el gnus-registry.el files.el files.texi windows.texi eieio-test-persist.el - eieio.el gnus-start.el nnir.el buffers.texi files-tests.el - gnus-bcklg.el gnus-group.el gnus-sum.el gnus.texi nnmairix.el org.el - org.texi ox-html.el ox-latex.el + eieio.el gnus-start.el gnus-sum.el gnus.texi nnir.el buffers.texi + checkdoc.el files-tests.el gnus-bcklg.el gnus-group.el nnmairix.el + org.el org.texi and 3 other files Eric Bélanger: changed image.c @@ -1548,8 +1551,8 @@ Ferenc Wagner: changed nnweb.el Filipe Cabecinhas: changed nsterm.m -Filipp Gunbin: changed autorevert.el shell.el cc-menus.el dired-aux.el - info.el info.texi +Filipp Gunbin: changed autorevert.el shell.el auth-source-tests.el + auth-source.el cc-menus.el dired-aux.el info.el info.texi Flemming Hoejstrup Hansen: changed forms.el @@ -1668,11 +1671,11 @@ G Dinesh Dutt: changed etags.el Geert Kloosterman: changed which-func.el Gemini Lasswell: wrote edebug-tests.el kmacro-tests.el testcover-tests.el -and changed edebug.el cl-macs.el cl-generic.el ert-x.el +and changed edebug.el cl-macs.el cl-generic.el ert-x.el cl-print.el edebug-test-code.el edebug.texi eieio-compat.el generator.el subr.el - autorevert-tests.el filenotify-tests.el generator-tests.el kmacro.el - lread.c map-tests.el map.el pcase.el rst.el ses.el subr-tests.el - subr-x-tests.el and 4 other files + autorevert-tests.el cl-print-tests.el emacs-lisp/debug.el eval-tests.el + eval.c filenotify-tests.el generator-tests.el kmacro.el lread.c + map-tests.el map.el and 9 other files Geoff Gole: changed align.el ibuffer.el whitespace.el @@ -1727,9 +1730,9 @@ Giuseppe Scrivano: changed browse-url.el buffer.c configure.ac sysdep.c Glenn Morris: wrote check-declare.el f90-tests.el vc-bzr-tests.el and changed configure.ac Makefile.in src/Makefile.in calendar.el diary-lib.el lisp/Makefile.in files.el rmail.el make-dist - progmodes/f90.el bytecomp.el simple.el authors.el emacs.texi - misc/Makefile.in admin.el startup.el lib-src/Makefile.in ack.texi - display.texi cal-menu.el and 1675 other files + progmodes/f90.el bytecomp.el simple.el authors.el admin.el emacs.texi + misc/Makefile.in startup.el lib-src/Makefile.in ack.texi display.texi + cal-menu.el and 1680 other files Glynn Clements: wrote gamegrid.el snake.el tetris.el @@ -1974,8 +1977,8 @@ Ivan Radanov Ivanov: changed quail/cyrillic.el Ivan Shmakov: changed eww.el shr.el desktop.el eww.texi faces.el files.el cus-dep.el descr-text.el diff-mode.el enriched.el erc-track.el - facemenu.el files.texi misearch.el nndoc.el simple.el tar-mode.el - tcl.el tex-mode.el url-cookie.el + facemenu.el files.texi iso-transl.el misearch.el nndoc.el simple.el + tar-mode.el tcl.el tex-mode.el url-cookie.el Ivan Vilata i Balaguer: changed org-clock.el org.texi @@ -2122,7 +2125,7 @@ Jay Belanger: changed calc.texi calc.el calc-ext.el calc-units.el Jay K. Adams: wrote jka-cmpr-hook.el jka-compr.el -Jay Kamat: changed erc-goodies.el +Jay Kamat: changed erc-goodies.el esh-opt.el Jay McCarthy: changed org-colview.el @@ -2376,6 +2379,8 @@ John Paul Wallington: changed ibuffer.el ibuf-ext.el subr.el help-fns.el bytecomp.el cus-theme.el font-lock.el hexl.el ibuf-macs.el info.el minibuf.c re-builder.el simple.el startup.el and 135 other files +John Shahid: changed easy-mmode.el term.c termhooks.h terminal.c + John Sullivan: changed window.c John Tobey: changed gud.el @@ -2415,6 +2420,9 @@ Jonathan I. Kamens: changed pop.c movemail.c rmail.el configure.ac b2m.pl vc.el gnus-sum.el jka-compr.el rmailout.el rnewspost.el sendmail.el simple.el timezone.el vc-hooks.el +Jonathan Kyle Mitchell: changed em-dirs.el em-ls.el em-unix.el esh-cmd.el + esh-ext.el + Jonathan Leech-Pepin: wrote ox-texinfo.el Jonathan Marchand: changed cpp-root.el @@ -2438,6 +2446,8 @@ Joost Diepenmaat: changed org.el Joost Kremers: changed reftex-toc.el +Jordan Wilson: changed doc-view.el + Jorge A. Alfaro-Murillo: changed message.el Jorgen Schäfer: wrote erc-autoaway.el erc-goodies.el erc-spelling.el @@ -2531,9 +2541,9 @@ and changed tramp-gvfs.el tramp-sh.el comint.el em-unix.el esh-util.el Juri Linkov: wrote files-x.el misearch.el replace-tests.el and changed isearch.el info.el replace.el simple.el progmodes/grep.el - dired-aux.el dired.el progmodes/compile.el startup.el faces.el files.el + dired.el dired-aux.el progmodes/compile.el startup.el faces.el files.el menu-bar.el bindings.el display.texi descr-text.el desktop.el comint.el - image-mode.el ispell.el man.el cus-edit.el and 357 other files + image-mode.el ispell.el man.el cus-edit.el and 359 other files Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h w32console.c w32heap.c w32inevt.c w32term.h @@ -2590,9 +2600,10 @@ Karl Eichwalder: changed Makefile.in add-log.el bookmark.el dired-aux.el Karl Fogel: wrote bookmark.el mail-hist.el saveplace.el and co-wrote pcvs.el and changed simple.el files.el doc-view.el image-mode.el info.el - vc-svn.el CONTRIBUTE INSTALL autogen.sh isearch.el menu-bar.el - simple-test.el subr.el tex-mode.el thingatpt.el INSTALL.REPO comint.el - configure configure.ac editfns.c electric-tests.el and 17 other files + vc-svn.el CONTRIBUTE INSTALL autogen.sh internals.texi isearch.el + menu-bar.el simple-test.el subr.el tex-mode.el thingatpt.el + INSTALL.REPO comint.el configure configure.ac editfns.c + and 18 other files Karl Heuer: changed keyboard.c lisp.h xdisp.c buffer.c xfns.c xterm.c alloc.c files.el frame.c configure.ac window.c data.c minibuf.c @@ -2622,7 +2633,7 @@ Károly Lőrentey: changed xfns.c bindings.el keyboard.c menu-bar.el Katsuhiro Hermit Endo: changed gnus-group.el gnus-spec.el Katsumi Yamaoka: wrote canlock.el -and changed gnus-art.el gnus-sum.el message.el mm-decode.el gnus.texi +and changed gnus-art.el message.el gnus-sum.el mm-decode.el gnus.texi mm-util.el mm-view.el gnus-util.el gnus-group.el gnus-msg.el shr.el mml.el rfc2047.el gnus-start.el gnus.el nntp.el gnus-agent.el nnrss.el mm-uu.el nnmail.el emacs-mime.texi and 160 other files @@ -2858,7 +2869,7 @@ and co-wrote gnus-kill.el gnus-mh.el gnus-msg.el gnus-score.el rfc2047.el time-date.el and changed gnus.texi process.c gnus-ems.el subr.el gnutls.c gnus-cite.el pop3.el smtpmail.el display.texi files.el url-http.el gnus-xmas.el - simple.el auth-source.el image.c proto-stream.el gnutls.el dired.el + simple.el auth-source.el image.c gnutls.el proto-stream.el dired.el image.el text.texi nnrss.el and 318 other files Lars Rasmusson: changed ebrowse.c @@ -2901,8 +2912,8 @@ Leo Liu: wrote calc-tests.el pcmpl-x.el and changed octave.el ido.el rcirc.el files.el subr.el lisp-mode.el eldoc.el simple.el flymake.el smie.el abbrev.el progmodes/python.el cfengine.el cl-extra.el cl-macs.el emacs-lisp/cl-lib.el fns.c - progmodes/compile.el register.el rng-valid.el window.el - and 164 other files + progmodes/compile.el register.el rng-valid.el thingatpt.el + and 165 other files Leonard H. Tower Jr.: changed rnews.el rnewspost.el emacsbug.el rmailout.el sendmail.el @@ -3040,9 +3051,9 @@ and changed erc.el erc-dcc.el erc-speak.el Makefile erc-bbdb.el Mark A. Hershberger: changed xml.el nnrss.el mm-url.el cperl-mode.el isearch.el vc-bzr.el NXML-NEWS cc-mode.texi compilation.txt ede.texi - eieio.texi esh-mode.el flymake.el gnus-group.el misc/Makefile.in - nxml-mode.texi progmodes/compile.el progmodes/python.el programs.texi - schema and 6 other files + eieio.texi esh-mode.el flymake.el gnus-group.el menu-bar.el + misc/Makefile.in nxml-mode.texi progmodes/compile.el + progmodes/python.el programs.texi and 8 other files Mark Davies: changed amdx86-64.h configure configure.ac hp800.h lib-src/Makefile.in netbsd.h ralloc.c sh3el.h sort.el @@ -3217,7 +3228,7 @@ Matthew Mundell: changed calendar.texi diary-lib.el files.texi objects.texi os.texi positions.texi searching.texi subr.el text.texi and 3 other files -Matthias Dahl: changed faces.el +Matthias Dahl: changed faces.el process.c process.h Matthias Förste: changed files.el @@ -3249,6 +3260,8 @@ Matt Simmons: changed message.el Matt Swift: changed dired.el editfns.c lisp-mode.el mm-decode.el outline.el progmodes/compile.el rx.el simple.el startup.el +Mauro Aranda: changed files.texi os.texi + Maxime Edouard Robert Froumentin: changed gnus-art.el mml.el Max Mikhanosha: changed org-agenda.el org-habit.el org.el @@ -3259,15 +3272,15 @@ Micah Anderson: changed spook.lines Michael Albinus: wrote autorevert-tests.el dbus-tests.el dbus.el filenotify-tests.el filenotify.el files-x-tests.el secrets.el - tramp-cmds.el tramp-compat.el tramp-ftp.el tramp-gvfs.el tramp-smb.el - tramp-tests.el url-tramp-tests.el url-tramp.el vc-tests.el xesam.el - zeroconf.el + shadowfile-tests.el tramp-cmds.el tramp-compat.el tramp-ftp.el + tramp-gvfs.el tramp-smb.el tramp-tests.el url-tramp-tests.el + url-tramp.el vc-tests.el xesam.el zeroconf.el and co-wrote tramp-cache.el tramp-sh.el tramp.el and changed tramp.texi tramp-adb.el trampver.el trampver.texi dbusbind.c file-notify-tests.el ange-ftp.el files.el dbus.texi files.texi autorevert.el tramp-fish.el kqueue.c tramp-gw.el tramp-imap.el os.texi configure.ac lisp.h gfilenotify.c inotify.c keyboard.c - and 217 other files + and 221 other files Michael Ben-Gershon: changed acorn.h configure.ac riscix1-1.h riscix1-2.h unexec.c @@ -3300,8 +3313,8 @@ Michael Gschwind: wrote iso-cvt.el Michael Harnois: changed nnimap.el -Michael Heerdegen: changed subr-x.el control.texi dired.el easy-mmode.el - eldoc.el pcase.el shr.el subr-x-tests.el wdired.el +Michael Heerdegen: changed subr-x.el control.texi dired-aux.el dired.el + easy-mmode.el eldoc.el pcase.el shr.el subr-x-tests.el wdired.el Michael Hoffman: changed term.el xterm.el @@ -3387,6 +3400,8 @@ and changed gnus-score.el Michihito Shigemura: changed sh-script.el +Miciah Masters: changed rcirc.el rcirc.texi + Microelectronics and Computer Technology Corporation: changed emacsclient.c etags.c lisp.h movemail.c rmail.el rmailedit.el rmailkwd.el rmailmsc.el rmailout.el rmailsum.el scribe.el server.el @@ -3410,8 +3425,8 @@ Mike Haertel: changed 7300.h Mike Kazantsev: changed erc-dcc.el -Mike Kupfer: changed mh-e.el emacs-mime.texi gnus-mh.el gnus.texi - mh-acros.el mh-comp.el mh-compat.el mh-e.texi mh-mime.el mh-utils.el +Mike Kupfer: changed mh-comp.el mh-e.el emacs-mime.texi gnus-mh.el + gnus.texi mh-acros.el mh-compat.el mh-e.texi mh-mime.el mh-utils.el Mike Lamb: changed em-unix.el esh-util.el pcmpl-unix.el @@ -3571,9 +3586,9 @@ Nicolas Petton: wrote map-tests.el map.el seq-tests.el seq.el and co-wrote auth-source-pass.el auth-source-tests.el subr-tests.el and changed sequences.texi README configure.ac sed2v2.inp authors.el emacs.png README.W32 emacs23.png arc-mode.el cl-extra.el emacs.svg - manoj-dark-theme.el Emacs.icns Makefile.in auth-source.el emacs.ico - fns.c make-tarball.txt obarray-tests.el obarray.el HISTORY - and 34 other files + manoj-dark-theme.el Emacs.icns HISTORY Makefile.in auth-source.el + emacs.ico fns.c make-tarball.txt obarray-tests.el obarray.el + and 35 other files Nicolas Richard: wrote cl-seq-tests.el cmds-tests.el replace-tests.el and changed ffap.el package.el byte-run.el help.el keyboard.c landmark.el @@ -3616,11 +3631,11 @@ and changed rsz-mini.el emacs-buffer.gdb comint.el files.el Makefile Noah Lavine: changed tramp.el -Noam Postavsky: changed progmodes/python.el lisp-mode.el xdisp.c - cl-macs.el emacs-lisp/debug.el data.c ert.el lisp-mode-tests.el - simple.el help-fns.el subr.el term.el bytecomp.el elisp-mode.el eval.c - ffap.el modes.texi search.c sh-script.el cl-preloaded.el cl-print.el - and 223 other files +Noam Postavsky: changed lisp-mode.el progmodes/python.el xdisp.c + cl-macs.el lisp-mode-tests.el emacs-lisp/debug.el data.c simple.el + term.el ert.el subr.el help-fns.el bytecomp.el cl-print.el + elisp-mode.el eval.c ffap.el modes.texi search.c sh-script.el + cl-preloaded.el and 248 other files Nobuyoshi Nakada: co-wrote ruby-mode.el @@ -3721,10 +3736,10 @@ and changed imenu.el make-mode.el Paul Eggert: wrote rcs2log and co-wrote cal-dst.el -and changed lisp.h configure.ac alloc.c process.c fileio.c xdisp.c - editfns.c sysdep.c image.c keyboard.c emacs.c xterm.c data.c lread.c +and changed lisp.h configure.ac alloc.c process.c fileio.c editfns.c + xdisp.c sysdep.c image.c keyboard.c emacs.c xterm.c data.c lread.c fns.c callproc.c Makefile.in gnulib.mk eval.c buffer.c frame.c - and 1596 other files + and 1598 other files Paul Fisher: changed fns.c @@ -3898,11 +3913,11 @@ Philipp Rumpf: changed electric.el Philipp Stephani: wrote checkdoc-tests.el ediff-diff-tests.el eval-tests.el ido-tests.el lread-tests.el mouse-tests.el xt-mouse-tests.el -and changed emacs-module.c eval.c bytecomp.el emacs-module-tests.el - files.el lread.c nsterm.m configure.ac editfns.c mod-test.c alloc.c - electric.el gtkutil.c lisp.h electric-tests.el emacs.c macfont.m - test/Makefile.in xt-mouse.el Makefile bytecomp-tests.el - and 95 other files +and changed emacs-module.c eval.c bytecomp.el nsterm.m + emacs-module-tests.el files.el lread.c configure.ac editfns.c + mod-test.c alloc.c electric.el gtkutil.c lisp.h electric-tests.el + emacs.c macfont.m test/Makefile.in xt-mouse.el Makefile + bytecomp-tests.el and 96 other files Phillip Lord: wrote ps-print-tests.el and changed lisp/Makefile.in undo.c simple.el test/Makefile.in Makefile @@ -3911,8 +3926,8 @@ and changed lisp/Makefile.in undo.c simple.el test/Makefile.in Makefile dired.el eieio-tests.el fileio.c htmlfontify.el make-test-deps.emacs-lisp reftex-tests.el and 168 other files -Phil Sainty: changed derived.el easy-mmode.el lisp.el package.el - progmodes/grep.el simple.el subword.el term.el +Phil Sainty: changed term.el derived.el easy-mmode.el lisp.el package.el + progmodes/grep.el simple.el subword.el Phil Sung: changed wdired.el dired.texi follow.el progmodes/python.el @@ -3920,7 +3935,7 @@ Pierre Lorenzon: changed eieio-custom.el Pierre Poissinger: changed charset.c -Pierre Téchoueyres: changed eieio-test-persist.el tramp-cmds.el +Pierre Téchoueyres: changed eieio-test-persist.el epg.el tramp-cmds.el Pieter E.J. Pareit: wrote mixal-mode.el @@ -3959,6 +3974,8 @@ Rafael Sepúlveda: changed TUTORIAL.es Raffael Mancini: changed misc.el +Raimon Grau: changed thingatpt.el + Rainer Orth: changed gtkutil.c lisp/Makefile.in Rainer Schöpf: changed osf1.h unexalpha.c alloc.c alpha.h buffer.c @@ -4125,10 +4142,10 @@ Roberto Rodríguez: changed ada-mode.texi glossary.texi widget.texi Robert P. Goldman: changed org.texi ob-exp.el org.el ox-latex.el -Robert Pluim: changed gtkutil.c misc.texi vc-git.el xfns.c xterm.c - bindings.el configure.ac desktop.el dired-x.texi epa.texi gnus-agent.el - gnus-demon.el gnus.texi ido.el image-mode.el minibuf.c minibuf.texi - org-agenda.el process.c progmodes/grep.el project.el and 8 other files +Robert Pluim: changed configure.ac files.texi gtkutil.c dired-x.texi + misc.texi vc-git.el xfns.c xterm.c bindings.el desktop.el efaq.texi + epa.texi filelock.c font.c ftfont.c gnus-agent.el gnus-demon.el + gnus.texi ido.el image-mode.el mail-source.el and 15 other files Robert Thorpe: changed cus-start.el indent.el @@ -4245,7 +4262,7 @@ Sam Kendall: changed etags.c etags.el Sam Steingold: wrote gulp.el midnight.el and changed progmodes/compile.el cl-indent.el simple.el vc-cvs.el vc.el - mouse.el files.el font-lock.el tex-mode.el vc-hg.el ange-ftp.el + mouse.el vc-hg.el files.el font-lock.el tex-mode.el ange-ftp.el sgml-mode.el window.el add-log.el bindings.el bookmark.el bug-reference.el calendar.el cperl-mode.el diary-lib.el dired.el and 152 other files @@ -4293,6 +4310,8 @@ Scott Bender: co-wrote ns-win.el Scott Byer: co-wrote nnfolder.el and changed gnus-sum.el +Scott Corley: changed scroll.c + Scott Draves: wrote tq.el Scott Evans: changed rect.el @@ -4354,6 +4373,8 @@ and changed ob-maxima.el ob-octave.el Sergey Poznyakoff: changed rmail.el mh-mime.el rmail.texi smtpmail.el +Sergey Vinokurov: changed emacs-module-tests.el emacs-module.c mod-test.c + Sergio Durigan Junior: changed eudcb-bbdb.el gdb-mi.el Sergio Martinez: changed nnimap.el @@ -4381,8 +4402,8 @@ and changed gnus-art.el message.el gnus-sum.el gnus-msg.el gnus.el and 93 other files Shigeru Fukaya: wrote bytecomp-tests.el -and changed apropos.el byte-opt.el bytecomp.el elint.el rx-new.el ses.el - subr.el texinfmt.el +and changed apropos.el bs.el byte-opt.el bytecomp.el elint.el rx-new.el + ses.el subr.el texinfmt.el Shinichirou Sugou: changed etags.c @@ -4407,7 +4428,8 @@ Simen Heggestøyl: wrote color-tests.el css-mode-tests.el dom-tests.el ring-tests.el rot13-tests.el sql-tests.el and changed css-mode.el json-tests.el json.el sgml-mode.el css-mode.css scss-mode.scss ring.el rot13.el scheme.el sql.el color.el files.el - js.el less-css-mode.el less-css-mode.less maintaining.texi + js.el less-css-mode.el less-css-mode.less maintaining.texi midnight.el + seq.el sequences.texi Simon Josefsson: wrote dig.el dns-mode.el flow-fill.el fringe.el imap.el mml-sec.el mml-smime.el password-cache.el rfc2104.el sieve-mode.el @@ -4471,8 +4493,8 @@ Stefan Monnier: wrote bibtex-style.el bytecomp-tests.el bzrmerge.el and co-wrote font-lock.el gitmerge.el pcvs.el and changed subr.el simple.el keyboard.c lisp.h bytecomp.el files.el vc.el cl-macs.el xdisp.c alloc.c eval.c sh-script.el - progmodes/compile.el keymap.c tex-mode.el newcomment.el window.c - buffer.c lisp-mode.el lread.c vc-hooks.el and 1280 other files + progmodes/compile.el keymap.c tex-mode.el newcomment.el buffer.c + window.c lisp-mode.el lread.c vc-hooks.el and 1282 other files Stefano Facchini: changed gtkutil.c @@ -4503,10 +4525,10 @@ Stephen A. Wood: changed fortran.el Stephen Berman: wrote todo-mode-tests.el and co-wrote todo-mode.el and changed todo-mode.texi diary-lib.el dired-tests.el doc-view.el - files.el minibuffer.el dired.el frames.texi hl-line.el info.el - menu-bar.el mouse.el otodo-mode.el subr.el .gitattributes allout.el - artist.el compile.texi cus-start.el descr-text.el dframe.el - and 39 other files + files.el minibuffer.el wdired-tests.el dired.el frames.texi hl-line.el + info.el menu-bar.el mouse.el otodo-mode.el subr.el .gitattributes + allout.el artist.el compile.texi cus-start.el descr-text.el + and 41 other files Stephen C. Gilardi: changed configure.ac @@ -4702,7 +4724,7 @@ and co-wrote hideshow.el and changed ewoc.el vc.el info.el processes.texi zone.el lisp-mode.el scheme.el text.texi vc-rcs.el display.texi fileio.c files.el vc-git.el MORE.STUFF TUTORIAL.it bindat.el cc-vars.el configure.ac dcl-mode.el - diff-mode.el dired.el and 163 other files + diff-mode.el dired.el and 169 other files Thierry Banel: co-wrote ob-C.el and changed calc-arith.el @@ -4801,9 +4823,9 @@ Tino Calancha: wrote buff-menu-tests.el ediff-ptch-tests.el em-ls-tests.el ffap-tests.el hi-lock-tests.el ls-lisp-tests.el register-tests.el rmc-tests.el and changed ibuffer.el dired-tests.el ibuf-ext.el dired.el dired-aux.el - simple.el ibuffer-tests.el ls-lisp.el diff-mode.el ibuf-macs.el - cl-seq.el dired-x.el dired.texi ediff-ptch.el em-ls.el files.el - replace.el buff-menu.el cl.texi ediff-init.el files-tests.el + simple.el replace.el ibuffer-tests.el ls-lisp.el diff-mode.el + ibuf-macs.el cl-seq.el dired-x.el dired.texi ediff-ptch.el em-ls.el + files.el replace-tests.el buff-menu.el cl.texi ediff-init.el and 82 other files Titus von der Malsburg: changed simple.el window.el @@ -5032,6 +5054,8 @@ Warren Lynn: changed tramp-sh.el Wei-Wei Guo: co-wrote rst.el +Wenjamin Petrenko: changed files-x.el + Werner Benger: changed keyboard.c Werner Lemberg: wrote sisheng.el vntelex.el @@ -5179,7 +5203,7 @@ Yu-ji Hosokawa: changed README.W32 Yukihiro Matsumoto: co-wrote ruby-mode.el -Yuri D'elia: changed message.el +Yuri D'elia: changed message.el package.el Yuri Karaban: changed pop3.el From e3b36836608cd15c62ffa1413fdf04072f9ae6cd Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Mon, 12 Nov 2018 16:45:23 +0100 Subject: [PATCH 113/567] Bump Emacs version to 26.1.90 * README: * configure.ac: * msdos/sed2v2.inp: * nt/README.W32: Bump Emacs version to 26.1.90. --- README | 2 +- configure.ac | 2 +- msdos/sed2v2.inp | 2 +- nt/README.W32 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README b/README index 8fcbb2f43d63..ceaecc25a752 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2018 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 26.1.50 of GNU Emacs, the extensible, +This directory tree holds version 26.1.90 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU diff --git a/configure.ac b/configure.ac index acea74094db6..dc6d776d45d4 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ(2.65) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT(GNU Emacs, 26.1.50, bug-gnu-emacs@gnu.org) +AC_INIT(GNU Emacs, 26.1.90, bug-gnu-emacs@gnu.org) dnl Set emacs_config_options to the options of 'configure', quoted for the shell, dnl and then quoted again for a C string. Separate options with spaces. diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 89cb7dcdd04b..e52c54c6f647 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -66,7 +66,7 @@ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ -/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "26.1.50"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "26.1.90"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/README.W32 b/nt/README.W32 index 1d3064c05d5c..4f19d630b4d1 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2018 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 26.1.50 for MS-Windows + Emacs version 26.1.90 for MS-Windows This README file describes how to set up and run a precompiled distribution of the latest version of GNU Emacs for MS-Windows. You From b8bbbe54ddb7dc49cd28bb03a7f9f1a059501d1e Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 23 Jan 2018 20:55:09 -0500 Subject: [PATCH 114/567] Avoid kill-emacs-hook errors hanging batch mode * src/emacs.c (Fkill_emacs): Prevent errors from kill-emacs-hook hanging Emacs in batch mode. (Bug#29955) (cherry picked from commit 109da684c5124e22505917fe0255ca66f2a6bfc9) --- src/emacs.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/emacs.c b/src/emacs.c index f80047e89e70..7a918b8bdf6c 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -2017,7 +2017,10 @@ all of which are called before Emacs is actually killed. */ /* Fsignal calls emacs_abort () if it sees that waiting_for_input is set. */ waiting_for_input = 0; - run_hook (Qkill_emacs_hook); + if (noninteractive) + safe_run_hooks (Qkill_emacs_hook); + else + run_hook (Qkill_emacs_hook); #ifdef HAVE_X_WINDOWS /* Transfer any clipboards we own to the clipboard manager. */ From a6ef167b8dbcfbe5e5792d19737957b030597609 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Tue, 13 Nov 2018 09:44:06 +0100 Subject: [PATCH 115/567] * test/README: Explain $REMOTE_TEMPORARY_FILE_DIRECTORY. --- test/README | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/README b/test/README index e473248c9e0c..ef5f53cba556 100644 --- a/test/README +++ b/test/README @@ -59,6 +59,15 @@ debugging. To do that, use make TEST_INTERACTIVE=yes ... +Some of the tests require a remote temporary directory +(filenotify-tests.el, shadowfile-tests.el and tramp-tests.el). Per +default, a mock-up connection method is used (this might not be +possible when running on MS Windows). If you want to test a real +remote connection, set $REMOTE_TEMPORARY_FILE_DIRECTORY to a suitable +value in order to overwrite the default value: + + env REMOTE_TEMPORARY_FILE_DIRECTORY=/ssh:host:/tmp make ... + (Also, see etc/compilation.txt for compilation mode font lock tests.) From acee0a8f2052abb9aacb8d782afcc5cd64363f04 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Tue, 13 Nov 2018 09:45:42 +0100 Subject: [PATCH 116/567] ; Cosmetic changes in etc/NEWS --- etc/NEWS | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index dfafe7c5c940..6dba2a950bd2 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -3,8 +3,8 @@ GNU Emacs NEWS -- history of user-visible changes. Copyright (C) 2016-2018 Free Software Foundation, Inc. See the end of the file for license conditions. -Please send Emacs bug reports to bug-gnu-emacs@gnu.org. -If possible, use M-x report-emacs-bug. +Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. +If possible, use 'M-x report-emacs-bug'. This file is about changes in Emacs version 26. @@ -13,7 +13,7 @@ See files NEWS.25, NEWS.24, ..., NEWS.18, and NEWS.1-17 for changes in older Emacs versions. You can narrow news to a specific version by calling 'view-emacs-news' -with a prefix argument or by typing C-u C-h C-n. +with a prefix argument or by typing 'C-u C-h C-n'. * Installation Changes in Emacs 26.2 @@ -65,12 +65,17 @@ often cause crashes. Set it to nil if you really need those fonts. --- *** Mailutils movemail will now be used if found at runtime. -The default value of mail-source-movemail-program is now "movemail". +The default value of 'mail-source-movemail-program' is now "movemail". This ensures that the movemail program from GNU Mailutils will be used if found in 'exec-path', even if it was not found at build time. To -use a different program, customize mail-source-movemail-program to the +use a different program, customize 'mail-source-movemail-program' to the absolute file name of the desired executable. +** Shadowfile + +--- +*** shadowfile.el has been rewritten to support Tramp file names. + ** Shell mode --- @@ -103,16 +108,13 @@ whether the version shown on the mode line is that of the visited file or of the repository working copy. --- -**** Display of Mercurial revisions in the mode-line has changed. +**** Display of Mercurial revisions in the mode line has changed. Previously, the mode line displayed the local number (1, 2, 3, ...) of the revision. Starting with Emacs 26.1, the default has changed, and it now shows the global revision number, in the form of its changeset hash value. To get back the previous behavior, customize the new option 'vc-hg-symbolic-revision-styles' to the value '("{rev}")'. ---- -** shadowfile.el has been rewritten to support Tramp file names. - * New Modes and Packages in Emacs 26.2 @@ -175,11 +177,11 @@ version 2.6.6 or later. ** The new option 'configure --with-mailutils' causes Emacs to rely on GNU Mailutils to retrieve email. It is recommended, and is the -default if GNU Mailutils is installed. When --with-mailutils is not +default if GNU Mailutils is installed. When '--with-mailutils' is not in effect, the Emacs build procedure by default continues to build and install a limited 'movemail' substitute that retrieves POP3 email only via insecure channels. To avoid this problem, use either ---with-mailutils or --without-pop when configuring; --without-pop +'--with-mailutils' or '--without-pop' when configuring; '--without-pop' is the default on platforms other than native MS-Windows. ** The new option 'configure --enable-gcc-warnings=warn-only' causes From 3287a7c048c0c2efc9da59ecd4a12f56f42bb044 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Wed, 14 Nov 2018 16:19:39 +0100 Subject: [PATCH 117/567] Fix Bug#33364 * lisp/net/tramp.el (tramp-parse-sconfig-group): Support also "Host host1 host2 ..." syntax. (Bug#33364) --- lisp/net/tramp.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 98ec8415c746..e9f5f7d43476 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -2739,7 +2739,9 @@ User is always nil." "Return a (user host) tuple allowed to access. User is always nil." (tramp-parse-group - (concat "^[ \t]*Host[ \t]+" "\\(" tramp-host-regexp "\\)") 1 ",")) + (concat "\\(?:^[ \t]*Host\\)" "\\|" "\\(?:^.+\\)" + "\\|" "\\(" tramp-host-regexp "\\)") + 1 "[ \t]+")) ;; Generic function. (defun tramp-parse-shostkeys-sknownhosts (dirname regexp) From 168a8c258c820804d7a57db59b7e0d986312f227 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 14 Nov 2018 17:59:05 +0200 Subject: [PATCH 118/567] * src/coding.c (Fcheck_coding_systems_region): Doc fix. (Bug#33372) --- src/coding.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/coding.c b/src/coding.c index 867f84de6097..3b1d8c95042c 100644 --- a/src/coding.c +++ b/src/coding.c @@ -9207,22 +9207,22 @@ to the string and treated as in `substring'. */) DEFUN ("check-coding-systems-region", Fcheck_coding_systems_region, Scheck_coding_systems_region, 3, 3, 0, - doc: /* Check if the region is encodable by coding systems. + doc: /* Check if text between START and END is encodable by CODING-SYSTEM-LIST. START and END are buffer positions specifying the region. CODING-SYSTEM-LIST is a list of coding systems to check. -The value is an alist ((CODING-SYSTEM POS0 POS1 ...) ...), where -CODING-SYSTEM is a member of CODING-SYSTEM-LIST and can't encode the -whole region, POS0, POS1, ... are buffer positions where non-encodable -characters are found. - If all coding systems in CODING-SYSTEM-LIST can encode the region, the -value is nil. +function returns nil. + +If some of the coding systems cannot encode the whole region, value is +an alist, each element of which has the form (CODING-SYSTEM POS1 POS2 ...), +which means that CODING-SYSTEM cannot encode the text at buffer positions +POS1, POS2, ... START may be a string. In that case, check if the string is -encodable, and the value contains indices to the string instead of -buffer positions. END is ignored. +encodable, and the value contains character indices into the string +instead of buffer positions. END is ignored in this case. If the current buffer (or START if it is a string) is unibyte, the value is nil. */) From edcd6b722c8e495498b1619e4d073962b8a8f3e8 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Tue, 13 Nov 2018 22:42:01 +0100 Subject: [PATCH 119/567] Small documentation correction. * doc/lispref/windows.texi (Textual Scrolling): In the description of scroll-up-aggressively, refer to scroll-down-aggressively instead of a recursive reference to scroll-up-aggressively. (Bug#33369) --- doc/lispref/windows.texi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 106074e13d1f..e9bd0c7d83e2 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -4908,7 +4908,8 @@ fashion. @defopt scroll-up-aggressively Likewise, for scrolling up. The value, @var{f}, specifies how far point should be placed from the bottom of the window; thus, as with -@code{scroll-up-aggressively}, a larger value scrolls more aggressively. +@code{scroll-down-aggressively}, a larger value scrolls more +aggressively. @end defopt @defopt scroll-step From a306d0397427870afea584233942e40cd78d16f7 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 20 Jan 2018 19:12:05 -0800 Subject: [PATCH 120/567] Fix tempfile creation when byte compiling This improves on the recent fix for master failing to build on FreeBSD. Suggested by Stefan Monnier in: https://lists.gnu.org/r/emacs-devel/2018-01/msg00600.html * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Put tempfile next to the target file, as was the original intent. (cherry picked from commit 64c846738617d1d037eac0cefb6586c04317b0a1) --- lisp/emacs-lisp/bytecomp.el | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 68e2fd1d104d..bc65f2cfaf06 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -1938,17 +1938,7 @@ The value is non-nil if there were no errors, nil if errors." ;; parallel bootstrap), it does not risk getting a ;; half-finished file. (Bug#4196) (tempfile - (if (file-name-absolute-p target-file) - (make-temp-file target-file) - ;; If target-file is relative and includes - ;; leading directories, make-temp-file will - ;; assume those leading directories exist - ;; under temporary-file-directory, which might - ;; not be true. So strip leading directories - ;; from relative file names before calling - ;; make-temp-file. - (make-temp-file - (file-name-nondirectory target-file)))) + (make-temp-file (expand-file-name target-file))) (default-modes (default-file-modes)) (temp-modes (logand default-modes #o600)) (desired-modes (logand default-modes #o666)) From 13bb66537210aacd9841d592c94e2514f7c5aa3a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 15 Nov 2018 21:59:32 +0200 Subject: [PATCH 121/567] Fix a typo in the Emacs manual * doc/emacs/rmail.texi (Rmail Deletion): Fix a typo. Reported by Jorge P. de Morais Neto in emacs-manual-bugs@gnu.org --- doc/emacs/rmail.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi index c0ea12f6226b..5241686cab80 100644 --- a/doc/emacs/rmail.texi +++ b/doc/emacs/rmail.texi @@ -318,7 +318,7 @@ effect of a @kbd{d} command in most cases. It undeletes the current message if the current message is deleted. Otherwise it moves backward to previous messages until a deleted message is found, and undeletes that message. A numeric prefix argument serves as a repeat count, to -allow deletion of several messages in a single command. +allow undeletion of several messages in a single command. You can usually undo a @kbd{d} with a @kbd{u} because the @kbd{u} moves back to and undeletes the message that the @kbd{d} deleted. But From 99f99a1fb227ec48f5325b6ccef5815c357b4792 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 16 Nov 2018 09:54:56 +0200 Subject: [PATCH 122/567] ; Minor editing change in windows.texi * doc/emacs/windows.texi (Window Convenience): Avoid breaking line in the middle of a key sequence. --- doc/emacs/windows.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index 3369e986f9c3..0a05c3770397 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -546,7 +546,7 @@ buffer. @xref{Follow Mode}. between neighboring windows in a frame. @kbd{M-x windmove-right} selects the window immediately to the right of the currently selected one, and similarly for the left, up, and down -counterparts. @kbd{M-x windmove-default-keybindings} binds these +counterparts. @w{@kbd{M-x windmove-default-keybindings}} binds these commands to @kbd{S-right} etc.; doing so disables shift selection for those keys (@pxref{Shift Selection}). From 936a8f3093f53442bb759880c8cddd5f4eb539a5 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 16 Nov 2018 10:19:22 +0200 Subject: [PATCH 123/567] Document Emacs 26 behavior of Dired's 'Z' on directories * doc/emacs/dired.texi (Operating on Files): Document behavior of 'Z' on directories. * etc/NEWS: Belatedly announce the new behavior of Dired's 'Z' on directory names and on .tar.gz archives. --- doc/emacs/dired.texi | 10 ++++++++-- etc/NEWS | 10 ++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index fba9d31406e0..9c408e13ae70 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi @@ -768,9 +768,15 @@ suitable guess made using the variables @code{lpr-command} and @item Z Compress the specified files (@code{dired-do-compress}). If the file appears to be a compressed file already, uncompress it instead. Each -marked file is compressed into its own archive. This uses the +marked file is compressed into its own archive; this uses the @command{gzip} program if it is available, otherwise it uses -@command{compress}. +@command{compress}. On a directory name, this command produces a +compressed @file{.tar.gz} archive containing all of the directory's +files, by running the @command{tar} command with output piped to +@command{gzip}. To allow decompression of compressed directories, +typing @kbd{Z} on a @file{.tar.gz} or @file{.tgz} archive file unpacks +all the files in the archive into a directory whose name is the +archive name with the extension removed. @findex dired-do-compress-to @kindex c @r{(Dired)} diff --git a/etc/NEWS b/etc/NEWS index 6dba2a950bd2..4197317fdd4c 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -51,6 +51,16 @@ often cause crashes. Set it to nil if you really need those fonts. * Changes in Specialized Modes and Packages in Emacs 26.2 +** Dired ++++ +*** 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.) + ** Ibuffer --- From d6542ea0f032d154da5a6e896a860adc9176a00a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 16 Nov 2018 21:52:34 +0200 Subject: [PATCH 124/567] Avoid errors in zone.el when there's overlay at EOB * lisp/play/zone.el (zone): Make sure the window-end position is calculated accurately, to avoid errors from buffer-substring. (Bug#33384) --- lisp/play/zone.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/play/zone.el b/lisp/play/zone.el index 4584d26f385d..75f13646190a 100644 --- a/lisp/play/zone.el +++ b/lisp/play/zone.el @@ -109,7 +109,7 @@ If the element is a function or a list of a function and a number, (save-window-excursion (let ((f (selected-frame)) (outbuf (get-buffer-create "*zone*")) - (text (buffer-substring (window-start) (window-end))) + (text (buffer-substring (window-start) (window-end nil t))) (wp (1+ (- (window-point) (window-start))))) (put 'zone 'orig-buffer (current-buffer)) From 88762b4063a42a69234bda74b1626b646734715a Mon Sep 17 00:00:00 2001 From: Gary Fredericks Date: Sun, 18 Nov 2018 09:15:00 +0100 Subject: [PATCH 125/567] Run 'window--adjust-process-windows' when frame size changes (Bug#32720) * lisp/window.el (window-size-change-functions): Run 'window--adjust-process-windows' from 'window-size-change-functions' too (Bug#32720, "another issue" in Bug#33230). Copyright-paperwork-exempt: yes --- lisp/window.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/window.el b/lisp/window.el index 92cd8c273806..94ac65cfc5b5 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -9288,6 +9288,8 @@ displaying that processes's buffer." (set-process-window-size process (cdr size) (car size)))))))))) (add-hook 'window-configuration-change-hook 'window--adjust-process-windows) +(add-hook 'window-size-change-functions (lambda (_frame) + (window--adjust-process-windows))) ;; Some of these are in tutorial--default-keys, so update that if you From 72525076996cd709086b1afb47ab0d095322e9b7 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Sun, 18 Nov 2018 09:24:10 +0100 Subject: [PATCH 126/567] Fix description of some window hooks * doc/lispref/windows.texi (Window Hooks): Remove text that warns against using 'save-window-excursion' while running 'window-size-change-functions', it's no more relevant. Clarify description of 'window-configuration-change-hook'. --- doc/lispref/windows.texi | 32 +++++++++++++++----------------- lisp/window.el | 7 ++++++- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index e9bd0c7d83e2..46f106838a5c 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -6016,26 +6016,24 @@ whether a specific window has changed size, compare the return values of @code{window-pixel-height} for that window (@pxref{Window Sizes}). These function are usually only called when at least one window was -added or has changed size since the last time this hook was run for the -associated frame. In some rare cases this hook also runs when a window -that was added intermittently has been deleted afterwards. In these -cases none of the windows on the frame will appear to have changed its -size. - -You may use @code{save-selected-window} in these functions -(@pxref{Selecting Windows}). However, do not use -@code{save-window-excursion} (@pxref{Window Configurations}); exiting -that macro counts as a size change, which would cause these functions to -be called again. +added or has changed size since the last time this hook was run for +the associated frame. In some rare cases this hook also runs when a +window that was added intermittently has been deleted afterwards. In +these cases none of the windows on the frame will appear to have +changed its size. @end defvar @defvar window-configuration-change-hook -A normal hook that is run every time the window configuration of a frame -changes. Window configuration changes include splitting and deleting -windows, and the display of a different buffer in a window. Resizing the -frame or individual windows do not count as configuration changes. Use -@code{window-size-change-functions}, see above, when you want to track -size changes that are not caused by the deletion or creation of windows. +A normal hook that is run every time the window configuration of a +frame changes. Window configuration changes include splitting and +deleting windows, and the display of a different buffer in a window. + +The hook can be also used for tracking changes of window sizes. It +is, however, not run when the size of a frame changes or automatic +resizing of a minibuffer window (@pxref{Minibuffer Windows}) changes +the size of another window. As a rule, adding a function to +@code{window-size-change-functions}, see above, is the recommended way +for reliably tracking size changes of any window. The buffer-local value of this hook is run once for each window on the affected frame, with the relevant window selected and its buffer diff --git a/lisp/window.el b/lisp/window.el index 94ac65cfc5b5..f252b0e041ae 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -9287,10 +9287,15 @@ displaying that processes's buffer." (when size (set-process-window-size process (cdr size) (car size)))))))))) +;; Remove the following call in Emacs 27, running +;; 'window-size-change-functions' should suffice. (add-hook 'window-configuration-change-hook 'window--adjust-process-windows) + +;; Catch any size changes not handled by +;; 'window-configuration-change-hook' (Bug#32720, "another issue" in +;; Bug#33230). (add-hook 'window-size-change-functions (lambda (_frame) (window--adjust-process-windows))) - ;; Some of these are in tutorial--default-keys, so update that if you ;; change these. From 195880834db3cf3dad2a1e184cb3fdaccf2dea4d Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Mon, 19 Nov 2018 16:21:41 +0100 Subject: [PATCH 127/567] * etc/AUTHORS: Update. --- etc/AUTHORS | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/etc/AUTHORS b/etc/AUTHORS index 23c88d559099..07cdf0acfcf9 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -1658,6 +1658,8 @@ Gary Delp: wrote mailpost.el (public domain) Gary D. Foster: wrote crisp.el scroll-all.el and changed gnus-group.el gnus-topic.el +Gary Fredericks: changed window.el + Gary Howell: changed server.el Gary Oberbrunner: changed gud.el @@ -3124,7 +3126,7 @@ Markus Triska: wrote linum.el and changed bytecomp.el byte-opt.el doctor.el image-mode.el processes.texi calc-math.el emacs.c expand.el flymake.el flymake.texi flyspell.el handwrite.el internals.texi proced.el prolog.el ps-mode.el - speedbar.el subr.el tumme.el widget.texi xterm.c + speedbar.el subr.el tumme.el widget.texi windows.texi xterm.c Mark W. Eichin: changed keyboard.c xterm.c @@ -3584,8 +3586,8 @@ Nicolas Graner: changed message.el Nicolas Petton: wrote map-tests.el map.el seq-tests.el seq.el thunk-tests.el thunk.el and co-wrote auth-source-pass.el auth-source-tests.el subr-tests.el -and changed sequences.texi README configure.ac sed2v2.inp authors.el - emacs.png README.W32 emacs23.png arc-mode.el cl-extra.el emacs.svg +and changed README sequences.texi configure.ac sed2v2.inp authors.el + README.W32 emacs.png emacs23.png arc-mode.el cl-extra.el emacs.svg manoj-dark-theme.el Emacs.icns HISTORY Makefile.in auth-source.el emacs.ico fns.c make-tarball.txt obarray-tests.el obarray.el and 35 other files From 7851ae8b443c62a41ea4f4440512aa56cc87b9b7 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Mon, 19 Nov 2018 16:22:16 +0100 Subject: [PATCH 128/567] ; ChangeLog.3 update --- ChangeLog.3 | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 1 deletion(-) diff --git a/ChangeLog.3 b/ChangeLog.3 index 6e1f68fe9947..194fa685c915 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,3 +1,104 @@ +2018-11-18 Martin Rudalics + + Fix description of some window hooks + + * doc/lispref/windows.texi (Window Hooks): Remove text that + warns against using 'save-window-excursion' while running + 'window-size-change-functions', it's no more relevant. + Clarify description of 'window-configuration-change-hook'. + +2018-11-18 Gary Fredericks (tiny change) + + Run 'window--adjust-process-windows' when frame size changes (Bug#32720) + + * lisp/window.el (window-size-change-functions): Run + 'window--adjust-process-windows' from + 'window-size-change-functions' too (Bug#32720, "another issue" + in Bug#33230). + +2018-11-16 Eli Zaretskii + + Avoid errors in zone.el when there's overlay at EOB + + * lisp/play/zone.el (zone): Make sure the window-end position + is calculated accurately, to avoid errors from + buffer-substring. (Bug#33384) + +2018-11-16 Eli Zaretskii + + Document Emacs 26 behavior of Dired's 'Z' on directories + + * doc/emacs/dired.texi (Operating on Files): Document behavior + of 'Z' on directories. + + * etc/NEWS: Belatedly announce the new behavior of Dired's 'Z' + on directory names and on .tar.gz archives. + +2018-11-15 Eli Zaretskii + + Fix a typo in the Emacs manual + + * doc/emacs/rmail.texi (Rmail Deletion): Fix a typo. + Reported by Jorge P. de Morais Neto + in emacs-manual-bugs@gnu.org + +2018-11-15 Paul Eggert + + Fix tempfile creation when byte compiling + + This improves on the recent fix for master failing to build + on FreeBSD. Suggested by Stefan Monnier in: + https://lists.gnu.org/r/emacs-devel/2018-01/msg00600.html + * lisp/emacs-lisp/bytecomp.el (byte-compile-file): + Put tempfile next to the target file, as was the original intent. + + (cherry picked from commit 64c846738617d1d037eac0cefb6586c04317b0a1) + +2018-11-14 Markus Triska + + Small documentation correction. + + * doc/lispref/windows.texi (Textual Scrolling): In the description of + scroll-up-aggressively, refer to scroll-down-aggressively instead of + a recursive reference to scroll-up-aggressively. (Bug#33369) + +2018-11-14 Eli Zaretskii + + * src/coding.c (Fcheck_coding_systems_region): Doc fix. (Bug#33372) + +2018-11-14 Michael Albinus + + Fix Bug#33364 + + * lisp/net/tramp.el (tramp-parse-sconfig-group): Support also + "Host host1 host2 ..." syntax. (Bug#33364) + +2018-11-13 Michael Albinus + + * test/README: Explain $REMOTE_TEMPORARY_FILE_DIRECTORY. + +2018-11-12 Glenn Morris + + Avoid kill-emacs-hook errors hanging batch mode + + * src/emacs.c (Fkill_emacs): Prevent errors from kill-emacs-hook + hanging Emacs in batch mode. (Bug#29955) + + (cherry picked from commit 109da684c5124e22505917fe0255ca66f2a6bfc9) + +2018-11-12 Nicolas Petton + + Bump Emacs version to 26.1.90 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version to 26.1.90. + +2018-11-12 Nicolas Petton + + * etc/AUTHORS: Update. + 2018-11-12 Paul Eggert Work around dumping bug on GNU/Linux ppc64le @@ -63347,7 +63448,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit 1d79c2ebd9bd9aa36586e57463502373c0296d11 (inclusive). +commit 72525076996cd709086b1afb47ab0d095322e9b7 (inclusive). See ChangeLog.1 for earlier changes. ;; Local Variables: From df7ed10e4f15d3ea8b4426f7721bafe60bf8deeb Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 19 Nov 2018 18:36:42 +0200 Subject: [PATCH 129/567] Fix decoding XML files encoded in ISO-8859 * lisp/international/mule.el (sgml-xml-auto-coding-function): Avoid signaling an error from coding-system-equal when the XML encoding tag specifies an encoding whose type is 'charset'. (Bug#33429) --- lisp/international/mule.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/international/mule.el b/lisp/international/mule.el index 148881000207..979845b72335 100644 --- a/lisp/international/mule.el +++ b/lisp/international/mule.el @@ -2500,7 +2500,11 @@ This function is intended to be added to `auto-coding-functions'." (let ((sym-type (coding-system-type sym)) (bfcs-type (coding-system-type buffer-file-coding-system))) - (if (and (coding-system-equal 'utf-8 sym-type) + ;; 'charset' will signal an error in + ;; coding-system-equal, since it isn't a + ;; coding-system. So test that up front. + (if (and (not (equal sym-type 'charset)) + (coding-system-equal 'utf-8 sym-type) (coding-system-equal 'utf-8 bfcs-type)) buffer-file-coding-system sym)) From ea1a0149825048da940365b79948e71cfc366385 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 19 Nov 2018 20:12:04 +0200 Subject: [PATCH 130/567] Fix window scrolling on TTY frames when there's no mode line * src/window.c (window_internal_height): Remove tests for next, prev, and parent pointers, as they are unrelated to whether a window has a mode line. (Bug#33363) --- src/window.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/window.c b/src/window.c index 9026a7b5f2a3..9cde2c5ecc45 100644 --- a/src/window.c +++ b/src/window.c @@ -4934,25 +4934,21 @@ window_wants_header_line (struct window *w) : 0); } -/* Return number of lines of text (not counting mode lines) in W. */ +/* Return number of lines of text in window W, not counting the mode + line and header line, if any. Do NOT use this for windows on GUI + frames; use window_body_height instead. This function is only for + windows on TTY frames, where it is much more efficient. */ int window_internal_height (struct window *w) { int ht = w->total_lines; - if (!MINI_WINDOW_P (w)) - { - if (!NILP (w->parent) - || WINDOWP (w->contents) - || !NILP (w->next) - || !NILP (w->prev) - || window_wants_mode_line (w)) - --ht; + if (window_wants_mode_line (w)) + --ht; - if (window_wants_header_line (w)) - --ht; - } + if (window_wants_header_line (w)) + --ht; return ht; } From 60457d7ae0cc560115d3e8c83bb308f015e7088d Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 19 Nov 2018 20:31:49 +0200 Subject: [PATCH 131/567] Improve documentation of the window tree * doc/lispref/windows.texi (Windows and Frames): More accurate wording regarding the relation of a mini-window to its frame's window tree. * src/window.h (struct window): Improve commentary to some fields. --- doc/lispref/windows.texi | 13 +++++++------ src/window.h | 12 ++++++++---- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 46f106838a5c..04689f1c5e23 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -198,12 +198,13 @@ relationships between live windows. The root node of a window tree is called the @dfn{root window}. It can be either a live window (if the frame has just one window), or an internal window. - A minibuffer window (@pxref{Minibuffer Windows}) is not part of its -frame's window tree unless the frame is a minibuffer-only frame. -Nonetheless, most of the functions in this section accept the -minibuffer window as an argument. Also, the function -@code{window-tree} described at the end of this section lists the -minibuffer window alongside the actual window tree. + A minibuffer window (@pxref{Minibuffer Windows}) that is not alone +on its frame does not have a parent window, so it strictly speaking is +not part of its frame's window tree. Nonetheless, it is a sibling +window of the frame's root window, and thus can be reached via +@code{window-next-sibling}. Also, the function @code{window-tree} +described at the end of this section lists the minibuffer window +alongside the actual window tree. @defun frame-root-window &optional frame-or-window This function returns the root window for @var{frame-or-window}. The diff --git a/src/window.h b/src/window.h index 629283ac40cb..c7f525e27047 100644 --- a/src/window.h +++ b/src/window.h @@ -93,12 +93,14 @@ struct window /* The frame this window is on. */ Lisp_Object frame; - /* Following (to right or down) and preceding (to left or up) child - at same level of tree. */ + /* Following (to right or down) and preceding (to left or up) + child at same level of tree. Whether this is left/right or + up/down is determined by the 'horizontal' flag, see below. + A minibuffer window has the frame's root window pointed by 'prev'. */ Lisp_Object next; Lisp_Object prev; - /* The window this one is a child of. */ + /* The window this one is a child of. For a minibuffer window: nil. */ Lisp_Object parent; /* The normal size of the window. These are fractions, but we do @@ -113,7 +115,9 @@ struct window Lisp_Object new_normal; Lisp_Object new_pixel; - /* May be buffer, window, or nil. */ + /* For a leaf window: a buffer; for an internal window: a window; + for a pseudo-window (such as menu bar or tool bar): nil. It is + a buffer for a minibuffer window as well. */ Lisp_Object contents; /* A marker pointing to where in the text to start displaying. From 070e82b96bfadb5a3622607a8c5c97c127ec62db Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 19 Nov 2018 20:35:28 +0200 Subject: [PATCH 132/567] ; * src/window.c (window_scroll): Improve commentary. --- src/window.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/window.c b/src/window.c index 9cde2c5ecc45..5d99098cba15 100644 --- a/src/window.c +++ b/src/window.c @@ -4977,8 +4977,8 @@ window_scroll (Lisp_Object window, EMACS_INT n, bool whole, bool noerror) if (whole && Vfast_but_imprecise_scrolling) specbind (Qfontification_functions, Qnil); - /* If we must, use the pixel-based version which is much slower than - the line-based one but can handle varying line heights. */ + /* On GUI frames, use the pixel-based version which is much slower + than the line-based one but can handle varying line heights. */ if (FRAME_WINDOW_P (XFRAME (XWINDOW (window)->frame))) window_scroll_pixel_based (window, n, whole, noerror); else From b8b42c23151298565e4354b38d7060e91465daed Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Wed, 24 Oct 2018 20:56:40 +0200 Subject: [PATCH 133/567] Fix Bug#33141 * lisp/net/tramp.el (tramp-make-tramp-file-name): Avoid check for empty method with simplified `tramp-syntax'. (Bug#33141) --- lisp/net/tramp.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index e9f5f7d43476..5fa9f9a44d4a 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -1374,7 +1374,9 @@ default values are used." (method user domain host port localname &optional hop) "Constructs a Tramp file name from METHOD, USER, HOST and LOCALNAME. When not nil, optional DOMAIN, PORT and HOP are used." - (when (zerop (length method)) + ;; Unless `tramp-syntax' is `simplified', we need a method. + (when (and (not (zerop (length tramp-postfix-method-format))) + (zerop (length method))) (signal 'wrong-type-argument (list 'stringp method))) (concat tramp-prefix-format hop (unless (zerop (length tramp-postfix-method-format)) From d667318a7f89a9daeffca6fb47503889bd23f3bd Mon Sep 17 00:00:00 2001 From: Stephen Berman Date: Mon, 19 Nov 2018 23:12:52 +0100 Subject: [PATCH 134/567] Fix two Edebug defcustoms (bug#33428) * lisp/emacs-lisp/edebug.el (edebug-print-length) (edebug-print-level): Fix customization type to allow setting the documented valid value nil via the Customize interface. --- lisp/emacs-lisp/edebug.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 7e4d244f5e21..939b3b82eaed 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -191,11 +191,11 @@ Use this with caution since it is not debugged." (defcustom edebug-print-length 50 "If non-nil, default value of `print-length' for printing results in Edebug." - :type 'integer + :type '(choice integer (const nil)) :group 'edebug) (defcustom edebug-print-level 50 "If non-nil, default value of `print-level' for printing results in Edebug." - :type 'integer + :type '(choice integer (const nil)) :group 'edebug) (defcustom edebug-print-circle t "If non-nil, default value of `print-circle' for printing results in Edebug." From 0d59ae3f49ac122203d94aa02acc9c7ae920aeef Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 20 Nov 2018 20:45:07 +0200 Subject: [PATCH 135/567] Update the docs of object internals * doc/lispref/internals.texi (Buffer Internals) (Window Internals, Process Internals): Update the descriptions of Lisp objects. --- doc/lispref/internals.texi | 148 ++++++++++++++++++++++--------------- 1 file changed, 88 insertions(+), 60 deletions(-) diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index b68c94d5c780..6c9bba126e39 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -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. From 93242b14769ed40ae58e89d0ea45df8872f59869 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 21 Nov 2018 17:11:43 +0200 Subject: [PATCH 136/567] * etc/NEWS: Clarify what 'Z' does in Dired. (Bug#33450) --- etc/NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index 4197317fdd4c..dab43024f221 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -56,7 +56,9 @@ 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 +'.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' or '.tgz' extension. (This change was actually made in Emacs 26.1, but was not called out in its NEWS.) From 52715e36dead5b1514930045045796b221b3ed39 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 22 Nov 2018 17:28:51 +0200 Subject: [PATCH 137/567] Improve doc string and display of 'describe-character' * lisp/descr-text.el (describe-char): Explain how does the function obtain the various data about the character. Don't display "preferred" before "charset": it tends to confuse people. --- lisp/descr-text.el | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lisp/descr-text.el b/lisp/descr-text.el index 00b40826f48a..517e2895cb4f 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el @@ -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))) @@ -562,7 +571,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)) From 9c09b1d23124cc3fc27deb476994b288e66bcad0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 22 Nov 2018 20:54:05 +0200 Subject: [PATCH 138/567] ; * etc/NES: Minor change in the description of Dired's 'Z'. --- etc/NEWS | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index dab43024f221..0cc6a29f0da8 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -56,12 +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 -the current directory; thus, typing 'Z' on a '.tar.gz' archive created -by a previous 'Z' command will extract the archived files into a +'.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' or '.tgz' -extension. (This change was actually made in Emacs 26.1, but was not -called out in its NEWS.) +extension. (This change was actually made in Emacs 25.1 and 26.1, but +was only partially called out in their NEWS.) ** Ibuffer From 477414ac38399a63fd69f3b2457f5716a02b3eae Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 22 Nov 2018 21:05:14 +0200 Subject: [PATCH 139/567] Improve documentation of 'dired-do-compress' * lisp/dired-aux.el (dired-do-compress): Describe in the doc string the effect on directories and on compressed archive. (Bug#33450) --- lisp/dired-aux.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index eaf5f257012c..2800bbe90213 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1225,7 +1225,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)) From 3c643e73b276acaa33759af5eea5feebf2c00339 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 22 Nov 2018 15:34:48 -0800 Subject: [PATCH 140/567] ; NEWS tweak --- etc/NEWS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 0cc6a29f0da8..399508cacc58 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -59,9 +59,9 @@ directory and all of its subdirectories. For symmetry, 'Z' on a '.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' or '.tgz' -extension. (This change was actually made in Emacs 25.1 and 26.1, but -was only partially called out in their NEWS.) +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 From 8f0c7887ef7dc8f25326d6476fa025e13caa1981 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 23 Nov 2018 12:16:48 +0200 Subject: [PATCH 141/567] Improve documentation of 'edit-abbrevs-mode' * lisp/abbrev.el (edit-abbrevs-mode): Refer to 'edit-abbrevs' for more detailed usage information. (Bug#33443) (edit-abbrevs): Doc fix. --- lisp/abbrev.el | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lisp/abbrev.el b/lisp/abbrev.el index 734cefbb7bed..f0fc59f31e80 100644 --- a/lisp/abbrev.el +++ b/lisp/abbrev.el @@ -150,11 +150,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-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, @@ -1022,7 +1023,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) From 4ae0a75435cefd8f673011c58a09b8cc6302a04b Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 23 Nov 2018 22:59:54 +0200 Subject: [PATCH 142/567] Better support for display of U+1F900..U+1F9FF block * lisp/international/fontset.el (setup-default-fontset): Add the [#x1F900..#x1F9FF] block to those supported by Symbola. --- lisp/international/fontset.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el index 23db54a4a3be..63452b3db5d6 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el @@ -826,7 +826,8 @@ (#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 (set-fontset-font "fontset-default" symbol-subgroup '("Symbola" . "iso10646-1") nil 'prepend)) ;; Box Drawing and Block Elements From 7a4992a0d392843c0f13709a575a08ecaf56b51c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 23 Nov 2018 23:33:31 +0200 Subject: [PATCH 143/567] More Symbola-related extensions for default fontset * lisp/international/fontset.el (setup-default-fontset): Add few more blocks of symbols and punctuation supported by latest Symbola. --- lisp/international/fontset.el | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el index 63452b3db5d6..f17b126b1fb6 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el @@ -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 @@ -827,7 +834,8 @@ (#x1F700 . #x1F77F) ;; Alchemical Symbols (#x1F780 . #x1F7FF) ;; Geometric Shapes Extended (#x1F800 . #x1F8FF) ;; Supplemental Arrows-C - (#x1F900 . #x1F9FF))) ;; Supplemental Symbols and Pictographs + (#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 From 56e3e4fe6816b5f13c410300e2bf5a0c1fcbe03a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 24 Nov 2018 10:00:55 +0200 Subject: [PATCH 144/567] Improve indexing in the ELisp manual * doc/lispref/control.texi (Control Structures, Sequencing) (Conditionals, Iteration, Catch and Throw, Handling Errors) (Cleanups): * doc/lispref/eval.texi (Self-Evaluating Forms) (Symbol Forms, Function Forms, Macro Forms, Special Forms) (Quoting, Backquote): Add index entries that begin with "forms". (Bug#33440) --- doc/lispref/control.texi | 7 +++++++ doc/lispref/eval.texi | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 8989b7de91b9..4e5422aaa70c 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -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 @@ -1273,6 +1276,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 @@ -1496,6 +1500,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 @@ -1867,6 +1872,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 diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi index 373b12e79d59..416815e19006 100644 --- a/doc/lispref/eval.texi +++ b/doc/lispref/eval.texi @@ -127,6 +127,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 @@ -179,6 +180,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 @@ -215,6 +218,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 @@ -349,6 +353,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 @@ -372,6 +377,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 @@ -418,6 +424,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 @@ -539,6 +546,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 @@ -598,6 +606,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 From 25a4205271f5550a34b5cfbf484fe7f16410d1f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulrich=20M=C3=BCller?= Date: Sat, 17 Nov 2018 11:43:06 +0100 Subject: [PATCH 145/567] Update the calc units table On 2018-11-16, the 26th meeting of the General Conference on Weights and Measures (CGPM) has redefined the International System of Units by adopting fixed values for the Planck constant, the elementary charge, the Boltzmann constant, and the Avogadro constant: https://www.bipm.org/utils/en/pdf/CGPM/Draft-Resolution-A-EN.pdf * lisp/calc/calc-units.el (math-standard-units): Update according to redefinition of the SI in 2018. (Bug#33412) --- lisp/calc/calc-units.el | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el index ab76ded8186f..17d16acee0e3 100644 --- a/lisp/calc/calc-units.el +++ b/lisp/calc/calc-units.el @@ -46,6 +46,9 @@ ;; CODATA values updated February 2016, using 2014 adjustment ;; http://arxiv.org/pdf/1507.07956.pdf +;; Updated November 2018 for the redefinition of the SI +;; https://www.bipm.org/utils/en/pdf/CGPM/Draft-Resolution-A-EN.pdf + (defvar math-standard-units '( ;; Length ( m nil "*Meter" ) @@ -118,7 +121,7 @@ ( mph "mi/hr" "*Miles per hour" ) ( kph "km/hr" "Kilometers per hour" ) ( knot "nmi/hr" "Knot" ) - ( c "299792458 m/s" "Speed of light" ) ;;; CODATA + ( c "299792458 m/s" "Speed of light" ) ;; SI definition ;; Acceleration ( ga "980665*10^(-5) m/s^2" "*\"g\" acceleration" nil @@ -207,8 +210,8 @@ ( C "A s" "Coulomb" ) ( Fdy "ech Nav" "Faraday" ) ( e "ech" "Elementary charge" ) - ( ech "1.6021766208*10^(-19) C" "Elementary charge" nil - "1.6021766208 10^-19 C (*)") ;;(approx) CODATA + ( ech "1.602176634*10^(-19) C" "Elementary charge" nil + "1.602176634 10^-19 C") ;; SI definition ( V "W/A" "Volt" ) ( ohm "V/A" "Ohm" ) ( Ω "ohm" "Ohm" ) @@ -256,18 +259,21 @@ ( sr nil "*Steradian" ) ;; Other physical quantities - ;; The values are from CODATA, and are approximate. - ( h "6.626070040*10^(-34) J s" "*Planck's constant" nil - "6.626070040 10^-34 J s (*)") + ;; Unless otherwise mentioned, the values are from CODATA, + ;; and are approximate. + ( h "6.62607015*10^(-34) J s" "*Planck's constant" nil + "6.62607015 10^-34 J s") ;; SI definition ( hbar "h / (2 pi)" "Planck's constant" ) ;; Exact - ( mu0 "4 pi 10^(-7) H/m" "Permeability of vacuum") ;; Exact - ( μ0 "mu0" "Permeability of vacuum") ;; Exact - ( eps0 "1 / (mu0 c^2)" "Permittivity of vacuum" ) + ;; After the 2018 SI redefinition, eps0 and mu0 are measured quantities, + ;; and mu0 no longer has the previous exact value of 4 pi 10^(-7) H/m. + ( eps0 "ech^2 / (2 alpha h c)" "Permittivity of vacuum" ) ( ε0 "eps0" "Permittivity of vacuum" ) + ( mu0 "1 / (eps0 c^2)" "Permeability of vacuum") ;; Exact + ( μ0 "mu0" "Permeability of vacuum") ;; Exact ( G "6.67408*10^(-11) m^3/(kg s^2)" "Gravitational constant" nil "6.67408 10^-11 m^3/(kg s^2) (*)") - ( Nav "6.022140857*10^(23) / mol" "Avogadro's constant" nil - "6.022140857 10^23 / mol (*)") + ( Nav "6.02214076*10^(23) / mol" "Avogadro's constant" nil + "6.02214076 10^23 / mol") ;; SI definition ( me "9.10938356*10^(-31) kg" "Electron rest mass" nil "9.10938356 10^-31 kg (*)") ( mp "1.672621898*10^(-27) kg" "Proton rest mass" nil @@ -280,12 +286,10 @@ "1.883531594 10^-28 kg (*)") ( Ryd "10973731.568508 /m" "Rydberg's constant" nil "10973731.568508 /m (*)") - ( k "1.38064852*10^(-23) J/K" "Boltzmann's constant" nil - "1.38064852 10^-23 J/K (*)") - ( sigma "5.670367*10^(-8) W/(m^2 K^4)" "Stefan-Boltzmann constant" nil - "5.670367 10^-8 W/(m^2 K^4) (*)") - ( σ "sigma" "Stefan-Boltzmann constant" nil - "5.670367 10^-8 W/(m^2 K^4) (*)") + ( k "1.380649*10^(-23) J/K" "Boltzmann's constant" nil + "1.380649 10^-23 J/K") ;; SI definition + ( sigma "2 pi^5 k^4 / (15 h^3 c^2)" "Stefan-Boltzmann constant") + ( σ "sigma" "Stefan-Boltzmann constant") ( alpha "7.2973525664*10^(-3)" "Fine structure constant" nil "7.2973525664 10^-3 (*)") ( α "alpha" "Fine structure constant" nil @@ -298,8 +302,7 @@ "-928.4764620 10^-26 J/T (*)") ( mup "1.4106067873*10^(-26) J/T" "Proton magnetic moment" nil "1.4106067873 10^-26 J/T (*)") - ( R0 "8.3144598 J/(mol K)" "Molar gas constant" nil - "8.3144598 J/(mol K) (*)") + ( R0 "Nav k" "Molar gas constant") ;; Exact ( V0 "22.710947*10^(-3) m^3/mol" "Standard volume of ideal gas" nil "22.710947 10^-3 m^3/mol (*)") ;; Logarithmic units From 9877c03293241091ba4069002d4dc4d74b557414 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Sat, 24 Nov 2018 10:31:53 +0000 Subject: [PATCH 146/567] Fix bug #33416, where typing a ) in a comment at EOB caused a loop (CC Mode). * lisp/progmodes/cc-mode.el (c-fl-decl-start): A c-forward-syntactic-ws leaves point inside whitespace when moving over a comment at EOB which has no terminating LF. Check this possibility and correct for it. --- lisp/progmodes/cc-mode.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 664f01012b89..424cde52474b 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -1512,7 +1512,10 @@ Note that this is a strict tail, so won't match, e.g. \"0x....\".") (c-syntactic-skip-backward "^;{}" bod-lim t) (> (point) bod-lim) (progn (c-forward-syntactic-ws) - (setq bo-decl (point)) + ;; Have we got stuck in a comment at EOB? + (not (and (eobp) + (c-literal-start)))) + (progn (setq bo-decl (point)) (or (not (looking-at c-protection-key)) (c-forward-keyword-clause 1))) (progn From 094fcf62d289f19a4633275812e9e5e500463e91 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Mon, 29 Oct 2018 15:37:35 +0000 Subject: [PATCH 147/567] Fix more drawing bugs in NS port (bug#32932) * src/nsterm.m (ns_row_rect): New function. (ns_clip_to_row): Remove function. (ns_copy_bits): Fix mistake. (ns_shift_glyphs_for_insert): Mark the frame as dirty instead of directly copying. (ns_draw_fringe_bitmap): Stop using ns_clip_to_row. (ns_draw_window_cursor): Stop using ns_clip_to_row and perform a display when not in redisplay. (ns_update_window_begin): Remove redundant code that never executes. ([EmacsView drawRect:]): Show the rectangle being exposed in NSTRACE. * src/xdisp.c (expose_window_tree) [HAVE_NS]: (expose_frame) [HAVE_NS]: Redraw even if the frame is garbaged. --- src/nsterm.m | 149 +++++++++++++++++++++++++++------------------------ src/xdisp.c | 15 +++++- 2 files changed, 91 insertions(+), 73 deletions(-) diff --git a/src/nsterm.m b/src/nsterm.m index 4b5d025ee3cc..948dd1da2e18 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -796,6 +796,27 @@ Free a pool and temporary objects it refers to (callable from C) } +static NSRect +ns_row_rect (struct window *w, struct glyph_row *row, + enum glyph_row_area area) +/* Get the row as an NSRect. */ +{ + struct frame *f = XFRAME (WINDOW_FRAME (w)); + NSRect rect; + int window_x, window_y, window_width; + + window_box (w, area, &window_x, &window_y, &window_width, 0); + + rect.origin.x = window_x; + rect.origin.y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, row->y)); + rect.origin.y = max (rect.origin.y, window_y); + rect.size.width = window_width; + rect.size.height = row->visible_height; + + return rect; +} + + /* ========================================================================== Focus (clipping) and screen update @@ -1048,29 +1069,6 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) if (! tbar_visible != ! [toolbar isVisible]) [toolbar setVisible: tbar_visible]; } - - /* drawRect may have been called for say the minibuffer, and then clip path - is for the minibuffer. But the display engine may draw more because - we have set the frame as garbaged. So reset clip path to the whole - view. */ - /* FIXME: I don't think we need to do this. */ - if ([NSView focusView] == FRAME_NS_VIEW (f)) - { - NSBezierPath *bp; - NSRect r = [view frame]; - NSRect cr = [[view window] frame]; - /* If a large frame size is set, r may be larger than the window frame - before constrained. In that case don't change the clip path, as we - will clear in to the tool bar and title bar. */ - if (r.size.height - + FRAME_NS_TITLEBAR_HEIGHT (f) - + FRAME_TOOLBAR_HEIGHT (f) <= cr.size.height) - { - bp = [[NSBezierPath bezierPathWithRect: r] retain]; - [bp setClip]; - [bp release]; - } - } #endif } @@ -1206,28 +1204,6 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) } -static BOOL -ns_clip_to_row (struct window *w, struct glyph_row *row, - enum glyph_row_area area, BOOL gc) -/* -------------------------------------------------------------------------- - Internal (but parallels other terms): Focus drawing on given row - -------------------------------------------------------------------------- */ -{ - struct frame *f = XFRAME (WINDOW_FRAME (w)); - NSRect clip_rect; - int window_x, window_y, window_width; - - window_box (w, area, &window_x, &window_y, &window_width, 0); - - clip_rect.origin.x = window_x; - clip_rect.origin.y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, row->y)); - clip_rect.origin.y = max (clip_rect.origin.y, window_y); - clip_rect.size.width = window_width; - clip_rect.size.height = row->visible_height; - - return ns_clip_to_rect (f, &clip_rect, 1); -} - /* ========================================================================== Visible bell and beep. @@ -2692,7 +2668,7 @@ so some key presses (TAB) are swallowed by the system. */ ns_copy_bits (struct frame *f, NSRect src, NSRect dest) { NSSize delta = NSMakeSize (dest.origin.x - src.origin.x, - dest.origin.y - src.origin.y) + dest.origin.y - src.origin.y); NSTRACE ("ns_copy_bits"); if (FRAME_NS_VIEW (f)) @@ -2825,12 +2801,20 @@ so some key presses (TAB) are swallowed by the system. */ External (RIF): copy an area horizontally, don't worry about clearing src -------------------------------------------------------------------------- */ { - NSRect srcRect = NSMakeRect (x, y, width, height); + //NSRect srcRect = NSMakeRect (x, y, width, height); NSRect dstRect = NSMakeRect (x+shift_by, y, width, height); NSTRACE ("ns_shift_glyphs_for_insert"); - ns_copy_bits (f, srcRect, dstRect); + /* This doesn't work now as we copy the "bits" before we've had a + chance to actually draw any changes to the screen. This means in + certain circumstances we end up with copies of the cursor all + over the place. Just mark the area dirty so it is redrawn later. + + FIXME: Work out how to do this properly. */ + // ns_copy_bits (f, srcRect, dstRect); + + [FRAME_NS_VIEW (f) setNeedsDisplayInRect:dstRect]; } @@ -2911,6 +2895,9 @@ so some key presses (TAB) are swallowed by the system. */ struct face *face = p->face; static EmacsImage **bimgs = NULL; static int nBimgs = 0; + NSRect clearRect = NSZeroRect; + NSRect imageRect = NSZeroRect; + NSRect rowRect = ns_row_rect (w, row, ANY_AREA); NSTRACE_WHEN (NSTRACE_GROUP_FRINGE, "ns_draw_fringe_bitmap"); NSTRACE_MSG ("which:%d cursor:%d overlay:%d width:%d height:%d period:%d", @@ -2925,25 +2912,40 @@ so some key presses (TAB) are swallowed by the system. */ nBimgs = max_used_fringe_bitmap; } - /* Must clip because of partially visible lines. */ - if (ns_clip_to_row (w, row, ANY_AREA, YES)) + /* Work out the rectangle we will composite into. */ + if (p->which) + imageRect = NSMakeRect (p->x, p->y, p->wd, p->h); + + /* Work out the rectangle we will need to clear. Because we're + compositing rather than blitting, we need to clear the area under + the image regardless of anything else. */ + if (!p->overlay_p) + { + clearRect = NSMakeRect (p->bx, p->by, p->nx, p->ny); + clearRect = NSUnionRect (clearRect, imageRect); + } + else + { + clearRect = imageRect; + } + + /* Handle partially visible rows. */ + clearRect = NSIntersectionRect (clearRect, rowRect); + + /* The visible portion of imageRect will always be contained within + clearRect. */ + if (ns_clip_to_rect (f, &clearRect, 1)) { - if (!p->overlay_p) + if (! NSIsEmptyRect (clearRect)) { - int bx = p->bx, by = p->by, nx = p->nx, ny = p->ny; + NSTRACE_RECT ("clearRect", clearRect); - if (bx >= 0 && nx > 0) - { - NSRect r = NSMakeRect (bx, by, nx, ny); - NSRectClip (r); - [ns_lookup_indexed_color (face->background, f) set]; - NSRectFill (r); - } + [ns_lookup_indexed_color(face->background, f) set]; + NSRectFill (clearRect); } if (p->which) { - NSRect r = NSMakeRect (p->x, p->y, p->wd, p->h); EmacsImage *img = bimgs[p->which - 1]; if (!img) @@ -2964,13 +2966,6 @@ so some key presses (TAB) are swallowed by the system. */ xfree (cbits); } - NSTRACE_RECT ("r", r); - - NSRectClip (r); - /* Since we composite the bitmap instead of just blitting it, we need - to erase the whole background. */ - [ns_lookup_indexed_color(face->background, f) set]; - NSRectFill (r); { NSColor *bm_color; @@ -2990,7 +2985,7 @@ so some key presses (TAB) are swallowed by the system. */ NSTRACE_RECT ("fromRect", fromRect); - [img drawInRect: r + [img drawInRect: imageRect fromRect: fromRect operation: NSCompositingOperationSourceOver fraction: 1.0 @@ -2998,7 +2993,7 @@ so some key presses (TAB) are swallowed by the system. */ hints: nil]; #else { - NSPoint pt = r.origin; + NSPoint pt = imageRect.origin; pt.y += p->h; [img compositeToPoint: pt operation: NSCompositingOperationSourceOver]; } @@ -3088,7 +3083,9 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar cursors. r.size.width = w->phys_cursor_width; /* Prevent the cursor from being drawn outside the text area. */ - if (ns_clip_to_row (w, glyph_row, TEXT_AREA, NO)) + r = NSIntersectionRect (r, ns_row_rect (w, glyph_row, TEXT_AREA)); + + if (ns_clip_to_rect (f, &r, 1)) { face = FACE_FROM_ID_OR_NULL (f, phys_cursor_glyph->face_id); if (face && NS_FACE_BACKGROUND (face) @@ -3128,11 +3125,18 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar cursors. NSRectFill (s); break; } - ns_reset_clipping (f); /* draw the character under the cursor */ if (cursor_type != NO_CURSOR) draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR); + + ns_reset_clipping (f); + } + else if (! redisplaying_p) + { + /* If this function is called outside redisplay, it probably + means we need an immediate update. */ + [FRAME_NS_VIEW (f) display]; } } @@ -8096,6 +8100,9 @@ - (void)drawRect: (NSRect)rect for (int i = 0 ; i < numRects ; i++) { NSRect r = rectList[i]; + + NSTRACE_RECT ("r", r); + expose_frame (emacsframe, NSMinX (r), NSMinY (r), NSWidth (r), NSHeight (r)); diff --git a/src/xdisp.c b/src/xdisp.c index 357f0fb30cd8..808eab7e5384 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -32258,7 +32258,14 @@ expose_window_tree (struct window *w, XRectangle *r) struct frame *f = XFRAME (w->frame); bool mouse_face_overwritten_p = false; - while (w && !FRAME_GARBAGED_P (f)) + /* NS toolkits may have aleady modified the frame in expectation of + a successful redraw, so don't bail out here if the frame is + garbaged. */ + while (w +#if !defined (HAVE_NS) + && !FRAME_GARBAGED_P (f) +#endif + ) { mouse_face_overwritten_p |= (WINDOWP (w->contents) @@ -32286,12 +32293,16 @@ expose_frame (struct frame *f, int x, int y, int w, int h) TRACE ((stderr, "expose_frame ")); - /* No need to redraw if frame will be redrawn soon. */ +#if !defined (HAVE_NS) + /* No need to redraw if frame will be redrawn soon except under NS + where the toolkit may have already modified the frame in + expectation of us redrawing it. */ if (FRAME_GARBAGED_P (f)) { TRACE ((stderr, " garbaged\n")); return; } +#endif /* If basic faces haven't been realized yet, there is no point in trying to redraw anything. This can happen when we get an expose From ea624626ccc2a108c3d6420d4f7ed3edae185425 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Sat, 24 Nov 2018 09:30:17 +0000 Subject: [PATCH 148/567] Set tooltip text color (bug#33452) ; Do not merge into master * src/nsmenu.m: ([EmacsTooltip init]): Set text color to black. --- src/nsmenu.m | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/nsmenu.m b/src/nsmenu.m index 604adcf40b57..52a7d52e8e05 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m @@ -1318,8 +1318,9 @@ @implementation EmacsTooltip - (instancetype)init { - NSColor *col = [NSColor colorWithCalibratedRed: 1.0 green: 1.0 + NSColor *bgcol = [NSColor colorWithCalibratedRed: 1.0 green: 1.0 blue: 0.792 alpha: 0.95]; + NSColor *fgcol = [NSColor blackColor]; NSFont *font = [NSFont toolTipsFontOfSize: 0]; NSFont *sfont = [font screenFont]; int height = [sfont ascender] - [sfont descender]; @@ -1328,7 +1329,8 @@ - (instancetype)init textField = [[NSTextField alloc] initWithFrame: r]; [textField setFont: font]; - [textField setBackgroundColor: col]; + [textField setTextColor: fgcol]; + [textField setBackgroundColor: bgcol]; [textField setEditable: NO]; [textField setSelectable: NO]; @@ -1345,7 +1347,7 @@ - (instancetype)init [win setReleasedWhenClosed: NO]; [win setDelegate: self]; [[win contentView] addSubview: textField]; -/* [win setBackgroundColor: col]; */ +/* [win setBackgroundColor: bgcol]; */ [win setOpaque: NO]; return self; From 03bb7a8da9d16dd3dbd5a3ce56adb449e808bf2a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 26 Nov 2018 19:27:45 +0200 Subject: [PATCH 149/567] Avoid clearing echo-area message by auto-save-visited-file-name * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): Record the previous echo-area message, if any, and restore it before exiting. (Bug#33490) --- lisp/emacs-lisp/map-ynp.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/map-ynp.el b/lisp/emacs-lisp/map-ynp.el index 8260af572783..93235bd9ece3 100644 --- a/lisp/emacs-lisp/map-ynp.el +++ b/lisp/emacs-lisp/map-ynp.el @@ -79,6 +79,7 @@ are meaningful here. Returns the number of actions taken." (let* ((actions 0) + (msg (current-message)) user-keys mouse-event map prompt char elt def ;; Non-nil means we should use mouse menus to ask. use-menus @@ -250,9 +251,10 @@ the current %s and exit." (if delayed-switch-frame (setq unread-command-events (cons delayed-switch-frame unread-command-events)))) - ;; Clear the last prompt from the minibuffer. + ;; Clear the last prompt from the minibuffer, and restore the + ;; previous echo-area message, if any. (let ((message-log-max nil)) - (message "")) + (message (or msg ""))) ;; Return the number of actions that were taken. actions)) From 2925ce5a7ec1424cfaea9f2f86bd3cab27832584 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 26 Nov 2018 19:31:24 +0200 Subject: [PATCH 150/567] Support Hunspell 1.7.0 in ispell.el * lisp/textmodes/ispell.el (ispell-find-hunspell-dictionaries): Invoke Hunspell with an additional command-line argument, to work around a misfeature in Hunspell 1.7.0 that prevents it from reporting the loaded dictionary. (Bug#33493) --- lisp/textmodes/ispell.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index e77bc7e1128a..9789968b15cb 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -1113,7 +1113,12 @@ dictionary from that list was found." null-device t nil - "-D") + ;; Hunspell 1.7.0 (and later?) won't + ;; show LOADED DICTIONARY unless + ;; there's at least one file argument + ;; on the command line. So we feed + ;; it with the null device. + "-D" null-device) (buffer-string)) "[\n\r]+" t)) From f0531b8e64250414baf1c0d2dde3fbfc55a748a0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 27 Nov 2018 10:09:55 +0200 Subject: [PATCH 151/567] Improve documentation of Ediff wordwise commands * lisp/vc/ediff.el (ediff-windows-wordwise) (ediff-windows-linewise, ediff-regions-wordwise): Update and clarify the doc strings. * doc/misc/ediff.texi (Major Entry Points): Update and clarify the documentation of 'ediff-windows-wordwise' and 'ediff-regions-wordwise'. See the discussion starting at https://lists.gnu.org/archive/html/help-gnu-emacs/2018-11/msg00197.html for the details. --- doc/misc/ediff.texi | 13 ++++++------- lisp/vc/ediff.el | 9 ++++++--- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi index 746c4c829d26..cce8321d9ebf 100644 --- a/doc/misc/ediff.texi +++ b/doc/misc/ediff.texi @@ -210,11 +210,11 @@ ancestors. Ediff selects only the files that are under version control. @item ediff-windows-wordwise @findex ediff-windows-wordwise -Compare windows word-by-word. +Compare text visible in 2 windows word-by-word. @item ediff-windows-linewise @findex ediff-windows-linewise -Compare windows line-by-line. +Compare text visible in 2 windows line-by-line. @item ediff-regions-wordwise @findex ediff-regions-wordwise @@ -373,13 +373,12 @@ The commands @code{ediff-windows-wordwise}, @code{ediff-windows-linewise}, @code{ediff-regions-wordwise} and @code{ediff-regions-linewise} do comparison on parts of existing Emacs buffers. The commands @code{ediff-windows-wordwise} and -@code{ediff-regions-wordwise} are intended for relatively small segments -of buffers (e.g., up to 100 lines, depending on the speed of your machine), +@code{ediff-regions-wordwise} could be slow on very large buffers, as they perform comparison on the basis of words rather than lines. -(Word-wise comparison of large chunks of text can be slow.) +(Word-wise comparison of large chunks of text is relatively expensive.) -To compare large regions, use @code{ediff-regions-linewise}. This -command displays differences much like @code{ediff-files} and +To compare very large regions, use @code{ediff-regions-linewise}. +This command displays differences much like @code{ediff-files} and @code{ediff-buffers}. The functions @code{ediff-patch-file} and @code{ediff-patch-buffer} apply a diff --git a/lisp/vc/ediff.el b/lisp/vc/ediff.el index cd2b2c4e6288..da7b0f129196 100644 --- a/lisp/vc/ediff.el +++ b/lisp/vc/ediff.el @@ -927,6 +927,7 @@ MERGE-AUTOSTORE-DIR is the directory in which to store merged files." ;;;###autoload (defun ediff-windows-wordwise (dumb-mode &optional wind-A wind-B startup-hooks) "Compare WIND-A and WIND-B, which are selected by clicking, wordwise. +This compares the portions of text visible in each of the two windows. With prefix argument, DUMB-MODE, or on a non-windowing display, works as follows: If WIND-A is nil, use selected window. @@ -940,6 +941,7 @@ arguments after setting up the Ediff buffers." ;;;###autoload (defun ediff-windows-linewise (dumb-mode &optional wind-A wind-B startup-hooks) "Compare WIND-A and WIND-B, which are selected by clicking, linewise. +This compares the portions of text visible in each of the two windows. With prefix argument, DUMB-MODE, or on a non-windowing display, works as follows: If WIND-A is nil, use selected window. @@ -950,7 +952,8 @@ arguments after setting up the Ediff buffers." (ediff-windows dumb-mode wind-A wind-B startup-hooks 'ediff-windows-linewise nil)) -;; Compare WIND-A and WIND-B, which are selected by clicking. +;; Compare visible portions of text in WIND-A and WIND-B, which are +;; selected by clicking. ;; With prefix argument, DUMB-MODE, or on a non-windowing display, ;; works as follows: ;; If WIND-A is nil, use selected window. @@ -991,8 +994,8 @@ arguments after setting up the Ediff buffers." "Run Ediff on a pair of regions in specified buffers. BUFFER-A and BUFFER-B are the buffers to be compared. Regions (i.e., point and mark) can be set in advance or marked interactively. -This function is effective only for relatively small regions, up to 200 -lines. For large regions, use `ediff-regions-linewise'. +This function might be slow for large regions. If you find it slow, +use `ediff-regions-linewise' instead. STARTUP-HOOKS is a list of functions that Emacs calls without arguments after setting up the Ediff buffers." (interactive From a291f624289bd2009b7fa230d62b5940e0484c83 Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Tue, 27 Nov 2018 09:39:30 +0100 Subject: [PATCH 152/567] Don't call xwidget functions until GTK has been initialized Follow up fix to Bug#33294. * src/gtkutil.c: Define xg_gtk_initialized. (xg_initialize): Set it when GTK has finished initializing. * src/gtkutil.h: Declare xg_gtk_initialized. * src/xwidget.c (Fmake_xwidget): Error out if GTK has not been initialized. (xwidget_init_view): Likewise. --- src/gtkutil.c | 4 ++++ src/gtkutil.h | 1 + src/xwidget.c | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/src/gtkutil.c b/src/gtkutil.c index 5879ab683ea1..9540bd9072b5 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -147,6 +147,8 @@ struct xg_frame_tb_info GtkTextDirection dir; }; +bool xg_gtk_initialized; /* Used to make sure xwidget calls are possible */ + static GtkWidget * xg_get_widget_from_map (ptrdiff_t idx); @@ -5306,6 +5308,8 @@ xg_initialize (void) #ifdef HAVE_FREETYPE x_last_font_name = NULL; #endif + + xg_gtk_initialized = true; } #endif /* USE_GTK */ diff --git a/src/gtkutil.h b/src/gtkutil.h index 7dcd549f5c0e..3b074073e44b 100644 --- a/src/gtkutil.h +++ b/src/gtkutil.h @@ -202,5 +202,6 @@ extern void xg_initialize (void); to indicate that the callback should do nothing. */ extern bool xg_ignore_gtk_scrollbar; +extern bool xg_gtk_initialized; #endif /* USE_GTK */ #endif /* GTKUTIL_H */ diff --git a/src/xwidget.c b/src/xwidget.c index bcc450bac60b..09c65d0d3eed 100644 --- a/src/xwidget.c +++ b/src/xwidget.c @@ -78,6 +78,8 @@ Returns the newly constructed xwidget, or nil if construction fails. */) Lisp_Object title, Lisp_Object width, Lisp_Object height, Lisp_Object arguments, Lisp_Object buffer) { + if (!xg_gtk_initialized) + error ("make-xwidget: GTK has not been initialized"); CHECK_SYMBOL (type); CHECK_NATNUM (width); CHECK_NATNUM (height); @@ -508,6 +510,10 @@ xwidget_init_view (struct xwidget *xww, struct glyph_string *s, int x, int y) { + + if (!xg_gtk_initialized) + error ("xwidget_init_view: GTK has not been initialized"); + struct xwidget_view *xv = allocate_xwidget_view (); Lisp_Object val; From 5f3926053eaebc8ebff696abfd5a8d4365d8671d Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 27 Nov 2018 08:24:33 -0800 Subject: [PATCH 153/567] * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): Pass format to message. --- lisp/emacs-lisp/map-ynp.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/map-ynp.el b/lisp/emacs-lisp/map-ynp.el index 93235bd9ece3..5b1786af5124 100644 --- a/lisp/emacs-lisp/map-ynp.el +++ b/lisp/emacs-lisp/map-ynp.el @@ -254,7 +254,9 @@ the current %s and exit." ;; Clear the last prompt from the minibuffer, and restore the ;; previous echo-area message, if any. (let ((message-log-max nil)) - (message (or msg ""))) + (if msg + (message "%s" msg) + (message ""))) ;; Return the number of actions that were taken. actions)) From d7132ad870c13932bd58b24d0b124799aa49a277 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 27 Nov 2018 20:19:59 -0800 Subject: [PATCH 154/567] * lisp/mh-e/mh-e.el (customize-package-emacs-version-alist): Additions. --- lisp/mh-e/mh-e.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el index 05ff672da529..78fa2af52c1a 100644 --- a/lisp/mh-e/mh-e.el +++ b/lisp/mh-e/mh-e.el @@ -1022,12 +1022,13 @@ windows in the frame are removed." (when delete-other-windows-flag (delete-other-windows))) -;; FIXME: Maybe out of date? --xfq (if (boundp 'customize-package-emacs-version-alist) (add-to-list 'customize-package-emacs-version-alist '(MH-E ("6.0" . "22.1") ("6.1" . "22.1") ("7.0" . "22.1") ("7.1" . "22.1") ("7.2" . "22.1") ("7.3" . "22.1") - ("7.4" . "22.1") ("8.0" . "22.1")))) + ("7.4" . "22.1") ("8.0" . "22.1") ("8.1" . "23.1") + ("8.2" . "23.1") ("8.3" . "24.1") ("8.4" . "24.4") + ("8.5" . "24.4") ("8.6" . "24.4")))) From 19ed1e9a5f51fc27d60062bd70432c41cd08b3c1 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 27 Nov 2018 20:24:05 -0800 Subject: [PATCH 155/567] * lisp/net/trampver.el (customize-package-emacs-version-alist): Add 2.3.3. --- lisp/net/trampver.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 7badcd19f848..e4dc7168e4ea 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -69,7 +69,7 @@ ("2.2.3-24.1" . "24.1") ("2.2.3-24.1" . "24.2") ("2.2.6-24.3" . "24.3") ("2.2.9-24.4" . "24.4") ("2.2.11-24.5" . "24.5") ("2.2.13.25.1" . "25.1") ("2.2.13.25.2" . "25.2") - ("2.2.13.25.2" . "25.3") + ("2.2.13.25.2" . "25.3") ("2.3.3" . "26.1") ("2.3.3.26.1" . "26.1") ("2.3.5.26.2" . "26.2"))) (add-hook 'tramp-unload-hook From 911766d419ad9d36c01371ac88cefb415bd77919 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 28 Nov 2018 09:22:00 +0200 Subject: [PATCH 156/567] Minor markup fix in frames.texi * doc/lispref/frames.texi (Frame Layout): Fix markup of @table entries. (Bug#33531) --- doc/lispref/frames.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index e95a684912c7..3795f425e7b9 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -497,7 +497,7 @@ Height | | | Height | | | Height In practice not all of the areas shown in the drawing will or may be present. The meaning of these areas is described below. -@table @samp +@table @asis @item Outer Frame @cindex outer frame @cindex outer edges From 74a3a795afbf092d4086e5ebb4dcf0254e7c8b46 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 28 Nov 2018 09:28:36 +0200 Subject: [PATCH 157/567] Fix a typo in a doc string * lisp/emacs-lisp/map-ynp.el (read-answer-short): Fix typo. (Bug#33528) --- lisp/emacs-lisp/map-ynp.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/map-ynp.el b/lisp/emacs-lisp/map-ynp.el index 5b1786af5124..906f6c96a54e 100644 --- a/lisp/emacs-lisp/map-ynp.el +++ b/lisp/emacs-lisp/map-ynp.el @@ -269,7 +269,7 @@ the current %s and exit." "If non-nil, `read-answer' accepts single-character answers. If t, accept short (single key-press) answers to the question. If nil, require long answers. If `auto', accept short answers if -the function cell of `yes-or-no-p' is set to `y-or-on-p'." +the function cell of `yes-or-no-p' is set to `y-or-n-p'." :type '(choice (const :tag "Accept short answers" t) (const :tag "Require long answer" nil) (const :tag "Guess preference" auto)) From 809989f79ee4038f50d18765c4b727c8451ae0da Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Fri, 26 Oct 2018 16:53:19 -0400 Subject: [PATCH 158/567] LDAP: Set process-connection-type to t on Darwin * lisp/net/ldap.el (ldap-search-internal): Set process-connection-type to t on Darwin. Do not merge to master. (Bug#33050) --- lisp/net/ldap.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/net/ldap.el b/lisp/net/ldap.el index 7b47a54b9fb5..b106de02e9b7 100644 --- a/lisp/net/ldap.el +++ b/lisp/net/ldap.el @@ -646,7 +646,12 @@ an alist of attribute/value pairs." (not (equal "" sizelimit))) (setq arglist (nconc arglist (list (format "-z%s" sizelimit))))) (if passwd - (let* ((process-connection-type nil) + ;; Work around Bug#33154, see also Bug#33050. Leaving + ;; process-connection-type at its default (typically t) + ;; would probably be fine too, however this is the minimal + ;; change on the release branch that fixes ldap.el on Darwin + ;; and leaves other operating systems unchanged. + (let* ((process-connection-type (eq system-type 'darwin)) (proc-args (append arglist ldap-ldapsearch-args filter)) (proc (apply #'start-process "ldapsearch" buf From bce1d1afabe24c8461d56336fb966e819f20a175 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 30 Nov 2018 10:45:28 +0200 Subject: [PATCH 159/567] Improve documentation of gdb-mi.el * lisp/progmodes/gdb-mi.el (gdb-show-changed-values) (gdb-max-children): Doc fixes. * doc/emacs/building.texi (Source Buffers, Stack Buffer) (GDB User Interface Layout): Mention some additional customizable variables. (Bug#33548) --- doc/emacs/building.texi | 15 +++++++++++++++ lisp/progmodes/gdb-mi.el | 6 ++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 7e250bf42509..5cd3221928f8 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -912,6 +912,7 @@ height and width values during the debugging session. @cindex GDB User Interface layout @vindex gdb-many-windows +@vindex gdb-show-main If the variable @code{gdb-many-windows} is @code{nil} (the default), @kbd{M-x gdb} normally displays only the GUD interaction buffer. However, if the variable @code{gdb-show-main} is also non-@code{nil}, @@ -1011,6 +1012,15 @@ allows you to go backwards, which can be useful for running through code that has already executed, in order to examine its execution in more detail. +@vindex gdb-mi-decode-strings + If the file names of the source files are shown with octal escapes, +set the variable @code{gdb-mi-decode-strings} to the appropriate +coding-system, most probably @code{utf-8}. (This is @code{nil} by +default because GDB may emit octal escapes in situations where +decoding is undesirable, and also because the program being debugged +might use an encoding different from the one used to encode non-ASCII +file names on your system.) + @node Breakpoints Buffer @subsubsection Breakpoints Buffer @@ -1150,6 +1160,11 @@ also updates the Locals buffer (described in the next section). @end iftex +@vindex gdb-stack-buffer-addresses + If you want the frame address to be shown each stack frame, +customize the variable @code{gdb-stack-buffer-addresses} to a +non-@code{nil} value. + @node Other GDB Buffers @subsubsection Other GDB Buffers diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 0506386a75de..013a40943ba0 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -1120,13 +1120,15 @@ line, and no execution takes place." (defcustom gdb-show-changed-values t "If non-nil change the face of out of scope variables and changed values. Out of scope variables are suppressed with `shadow' face. -Changed values are highlighted with the face `font-lock-warning-face'." +Changed values are highlighted with the face `font-lock-warning-face'. +Used by Speedbar." :type 'boolean :group 'gdb :version "22.1") (defcustom gdb-max-children 40 - "Maximum number of children before expansion requires confirmation." + "Maximum number of children before expansion requires confirmation. +Used by Speedbar." :type 'integer :group 'gdb :version "22.1") From 03ee726f98a3810e4f4ef3e01ad411c7782755b0 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Fri, 30 Nov 2018 11:14:54 +0100 Subject: [PATCH 160/567] ; Add comment to `customize-package-emacs-version-alist' --- lisp/net/trampver.el | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index e4dc7168e4ea..9c1e9cfc2eb5 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -60,7 +60,11 @@ (match-string 0 (emacs-version))))))) (unless (string-match "\\`ok\\'" x) (error "%s" x))) -;; Tramp versions integrated into Emacs. +;; Tramp versions integrated into Emacs. If a user option declares a +;; `:package-version' which doesn't belong to an integrated Tramp +;; version, it must be added here as well (see `tramp-syntax', for +;; example). This can be checked by something like +;; (customize-changed "26.1") (add-to-list 'customize-package-emacs-version-alist '(Tramp ("2.0.55" . "22.1") ("2.0.57" . "22.2") ("2.0.58-pre" . "22.3") @@ -69,8 +73,8 @@ ("2.2.3-24.1" . "24.1") ("2.2.3-24.1" . "24.2") ("2.2.6-24.3" . "24.3") ("2.2.9-24.4" . "24.4") ("2.2.11-24.5" . "24.5") ("2.2.13.25.1" . "25.1") ("2.2.13.25.2" . "25.2") - ("2.2.13.25.2" . "25.3") ("2.3.3" . "26.1") - ("2.3.3.26.1" . "26.1") ("2.3.5.26.2" . "26.2"))) + ("2.2.13.25.2" . "25.3") + ("2.3.3" . "26.1") ("2.3.3.26.1" . "26.1") ("2.3.5.26.2" . "26.2"))) (add-hook 'tramp-unload-hook (lambda () From a89dbe2af8a8a23e07c1e5cb988f067fe08111d9 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Fri, 30 Nov 2018 11:31:16 +0100 Subject: [PATCH 161/567] * doc/misc/dbus.texi (Type Conversion): Fix typo. (Bug#33551) --- doc/misc/dbus.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi index 5b14382d8b89..f55a11d7afb0 100644 --- a/doc/misc/dbus.texi +++ b/doc/misc/dbus.texi @@ -1015,7 +1015,7 @@ but different to The value for a byte D-Bus type can be any integer in the range 0 through 255. If a character is used as argument, modifiers -represented outside this range are stripped of. For example, +represented outside this range are stripped off. For example, @code{:byte ?x} is equal to @code{:byte ?\M-x}, but it is not equal to @code{:byte ?\C-x} or @code{:byte ?\M-\C-x}. From cc3ad9a3d1b278852336265e0505e82cc5453778 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 30 Nov 2018 13:07:40 +0200 Subject: [PATCH 162/567] ; * CONTRIBUTE: Clarify rules for committing to release branches. --- CONTRIBUTE | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTE b/CONTRIBUTE index 0b68052a0cd6..efd4bf10ecd7 100644 --- a/CONTRIBUTE +++ b/CONTRIBUTE @@ -287,15 +287,23 @@ the current release branch. Periodically, the current release branch is merged into the master, using the gitmerge function described in admin/notes/git-workflow. -If you are fixing a bug that exists in the current release, be sure to -commit it to the release branch; it will be merged to the master -branch later by the gitmerge function. - -Documentation fixes (in doc strings, in manuals, and in comments) -should always go to the release branch, if the documentation to be -fixed exists and is relevant to the release-branch codebase. Doc -fixes are always considered "safe" -- even when a release branch is in -feature freeze, it can still receive doc fixes. +If you are fixing a bug that exists in the current release, you should +generally commit it to the release branch; it will be merged to the +master branch later by the gitmerge function. However, when the +release branch is for Emacs version NN.2 and later, or when it is for +Emacs version NN.1 that is in the very last stages of its pretest, +that branch is considered to be in a feature freeze: only bug fixes +that are "safe" or are fixing major problems should go to the release +branch, the rest should be committed to the master branch. This is so +to avoid destabilizing the next Emacs release. If you are unsure +whether your bug fix is "safe" enough for the release branch, ask on +the emacs-devel mailing list. + +Documentation fixes (in doc strings, in manuals, in NEWS, and in +comments) should always go to the release branch, if the documentation +to be fixed exists and is relevant to the release-branch codebase. +Doc fixes are always considered "safe" -- even when a release branch +is in feature freeze, it can still receive doc fixes. When you know that the change will be difficult to merge to the master (e.g., because the code on master has changed a lot), you can From 7ecf49b5a5741cc4a895c8ff42bbb4577659192c Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 30 Nov 2018 09:55:37 -0800 Subject: [PATCH 163/567] Fix core dump in dbus-message-internal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backport from master. * src/dbusbind.c (Fdbus_message_internal): Don’t go past array end (Bug#33530). --- src/dbusbind.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dbusbind.c b/src/dbusbind.c index ec3707d18f31..fe922d5429b3 100644 --- a/src/dbusbind.c +++ b/src/dbusbind.c @@ -1419,7 +1419,7 @@ usage: (dbus-message-internal &rest REST) */) for (; count < nargs; ++count) { dtype = XD_OBJECT_TO_DBUS_TYPE (args[count]); - if (XD_DBUS_TYPE_P (args[count])) + if (count + 1 < nargs && XD_DBUS_TYPE_P (args[count])) { XD_DEBUG_VALID_LISP_OBJECT_P (args[count]); XD_DEBUG_VALID_LISP_OBJECT_P (args[count+1]); From e06562ce7c164fd1f1b93154e34e6edab004719b Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 1 Dec 2018 11:30:41 +0200 Subject: [PATCH 164/567] Fix "M-x man" when there's no 'man' program on PATH * lisp/man.el (Man-bgproc-sentinel): Make sure the process buffer is not read-only when inserting a message into it. (Bug#33510) --- lisp/man.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/man.el b/lisp/man.el index c62a61c708d0..3a5fd5d21cb8 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -1378,7 +1378,8 @@ manpage command." (with-current-buffer Man-buffer (save-excursion - (let ((case-fold-search nil)) + (let ((case-fold-search nil) + (inhibit-read-only t)) (goto-char (point-min)) (cond ((or (looking-at "No \\(manual \\)*entry for") (looking-at "[^\n]*: nothing appropriate$")) From 42320cc8ca772dbd669bc58b78aa493ddb5f5990 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 1 Dec 2018 06:23:51 -0500 Subject: [PATCH 165/567] ; Auto-commit of loaddefs files. --- lisp/ldefs-boot.el | 77 +++++++++++++++++++++++++++++----------------- 1 file changed, 49 insertions(+), 28 deletions(-) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 56a6283f7084..945bc9543932 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -4582,9 +4582,8 @@ a separate buffer. (autoload 'checkdoc-continue "checkdoc" "\ Find the next doc string in the current buffer which has a style error. -Prefix argument TAKE-NOTES means to continue through the whole buffer and -save warnings in a separate buffer. Second optional argument START-POINT -is the starting location. If this is nil, `point-min' is used instead. +Prefix argument TAKE-NOTES means to continue through the whole +buffer and save warnings in a separate buffer. \(fn &optional TAKE-NOTES)" t nil) @@ -6969,13 +6968,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. \(fn POS &optional BUFFER)" t nil) @@ -9283,6 +9291,7 @@ MERGE-AUTOSTORE-DIR is the directory in which to store merged files. (autoload 'ediff-windows-wordwise "ediff" "\ Compare WIND-A and WIND-B, which are selected by clicking, wordwise. +This compares the portions of text visible in each of the two windows. With prefix argument, DUMB-MODE, or on a non-windowing display, works as follows: If WIND-A is nil, use selected window. @@ -9294,6 +9303,7 @@ arguments after setting up the Ediff buffers. (autoload 'ediff-windows-linewise "ediff" "\ Compare WIND-A and WIND-B, which are selected by clicking, linewise. +This compares the portions of text visible in each of the two windows. With prefix argument, DUMB-MODE, or on a non-windowing display, works as follows: If WIND-A is nil, use selected window. @@ -9307,8 +9317,8 @@ arguments after setting up the Ediff buffers. Run Ediff on a pair of regions in specified buffers. BUFFER-A and BUFFER-B are the buffers to be compared. Regions (i.e., point and mark) can be set in advance or marked interactively. -This function is effective only for relatively small regions, up to 200 -lines. For large regions, use `ediff-regions-linewise'. +This function might be slow for large regions. If you find it slow, +use `ediff-regions-linewise' instead. STARTUP-HOOKS is a list of functions that Emacs calls without arguments after setting up the Ediff buffers. @@ -24950,34 +24960,45 @@ variable name being but a special case of it). (function-put 'pcase-lambda 'lisp-indent-function 'defun) (autoload 'pcase-let* "pcase" "\ -Like `let*' but where you can use `pcase' patterns for bindings. -BODY should be an expression, and BINDINGS should be a list of bindings -of the form (PATTERN EXP). -See `pcase-let' for discussion of how PATTERN is matched. +Like `let*', but supports destructuring BINDINGS using `pcase' patterns. +As with `pcase-let', BINDINGS are of the form (PATTERN EXP), but the +EXP in each binding in BINDINGS can use the results of the destructuring +bindings that precede it in BINDINGS' order. + +Each EXP should match (i.e. be of compatible structure) to its +respective PATTERN; a mismatch may signal an error or may go +undetected, binding variables to arbitrary values, such as nil. \(fn BINDINGS &rest BODY)" nil t) (function-put 'pcase-let* 'lisp-indent-function '1) (autoload 'pcase-let "pcase" "\ -Like `let' but where you can use `pcase' patterns for bindings. -BODY should be a list of expressions, and BINDINGS should be a list of bindings -of the form (PATTERN EXP). -The PATTERNs are only used to extract data, so the code does not test -whether the data does match the corresponding patterns: a mismatch -may signal an error or may go undetected, binding variables to arbitrary -values, such as nil. +Like `let', but supports destructuring BINDINGS using `pcase' patterns. +BODY should be a list of expressions, and BINDINGS should be a list of +bindings of the form (PATTERN EXP). +All EXPs are evaluated first, and then used to perform destructuring +bindings by matching each EXP against its respective PATTERN. Then +BODY is evaluated with those bindings in effect. + +Each EXP should match (i.e. be of compatible structure) to its +respective PATTERN; a mismatch may signal an error or may go +undetected, binding variables to arbitrary values, such as nil. \(fn BINDINGS &rest BODY)" nil t) (function-put 'pcase-let 'lisp-indent-function '1) (autoload 'pcase-dolist "pcase" "\ -Superset of `dolist' where the VAR binding can be a `pcase' PATTERN. -More specifically, this is just a shorthand for the following combination -of `dolist' and `pcase-let': - - (dolist (x LIST) (pcase-let ((PATTERN x)) BODY...)) +Eval BODY once for each set of bindings defined by PATTERN and LIST elements. +PATTERN should be a `pcase' pattern describing the structure of +LIST elements, and LIST is a list of objects that match PATTERN, +i.e. have a structure that is compatible with PATTERN. +For each element of LIST, this macro binds the variables in +PATTERN to the corresponding subfields of the LIST element, and +then evaluates BODY with these bindings in effect. The +destructuring bindings of variables in PATTERN to the subfields +of the elements of LIST is performed as if by `pcase-let'. \(fn (PATTERN LIST) BODY...)" nil t) From c03574b477f7af6919797fde3e9410901c7675e1 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sat, 1 Dec 2018 09:32:57 -0500 Subject: [PATCH 166/567] * etc/NEWS-*: Fix capitalization of "Emacs" --- etc/NEWS.1-17 | 2 +- etc/NEWS.18 | 2 +- etc/NEWS.19 | 2 +- etc/NEWS.20 | 2 +- etc/NEWS.21 | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/etc/NEWS.1-17 b/etc/NEWS.1-17 index 63ef9a385597..f978a4748095 100644 --- a/etc/NEWS.1-17 +++ b/etc/NEWS.1-17 @@ -4,7 +4,7 @@ Copyright (C) 1985-1986, 2006-2018 Free Software Foundation, Inc. See the end of the file for license conditions. -This file is about changes in emacs versions 1 through 17. +This file is about changes in Emacs versions 1 through 17. diff --git a/etc/NEWS.18 b/etc/NEWS.18 index 153c2f7a0a7b..437f7c7e04ae 100644 --- a/etc/NEWS.18 +++ b/etc/NEWS.18 @@ -4,7 +4,7 @@ Copyright (C) 1988, 2006-2018 Free Software Foundation, Inc. See the end of the file for license conditions. -This file is about changes in emacs version 18. +This file is about changes in Emacs version 18. diff --git a/etc/NEWS.19 b/etc/NEWS.19 index 12432eacf79f..f7f5a8ad225e 100644 --- a/etc/NEWS.19 +++ b/etc/NEWS.19 @@ -4,7 +4,7 @@ Copyright (C) 1993-1995, 2001, 2006-2018 Free Software Foundation, Inc. See the end of the file for license conditions. -This file is about changes in emacs versions 19. +This file is about changes in Emacs versions 19. diff --git a/etc/NEWS.20 b/etc/NEWS.20 index 31e640fa94e8..956e900c289d 100644 --- a/etc/NEWS.20 +++ b/etc/NEWS.20 @@ -7,7 +7,7 @@ See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. If possible, use M-x report-emacs-bug. -This file is about changes in emacs version 20. +This file is about changes in Emacs version 20. diff --git a/etc/NEWS.21 b/etc/NEWS.21 index ea4f4212ee00..4a22109e0b55 100644 --- a/etc/NEWS.21 +++ b/etc/NEWS.21 @@ -4,7 +4,7 @@ Copyright (C) 2000-2018 Free Software Foundation, Inc. See the end of the file for license conditions. -This file is about changes in emacs version 21. +This file is about changes in Emacs version 21. From 4b176eb86361cff94a223225e8b852adb1accc50 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Sat, 1 Dec 2018 13:37:37 +0000 Subject: [PATCH 167/567] Fix macOS run-time feature check * src/nsterm.m (x_set_parent_frame) [NS_IMPL_COCOA]: Fix run-time feature check. --- src/nsterm.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nsterm.m b/src/nsterm.m index 948dd1da2e18..893bb1b4414b 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -1891,7 +1891,7 @@ so some key presses (TAB) are swallowed by the system. */ [[child parentWindow] removeChildWindow:child]; #if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= 101000 #if MAC_OS_X_VERSION_MIN_REQUIRED < 101000 - if ([child respondsToSelector:@selector(setAccessibilitySubrole:)] + if ([child respondsToSelector:@selector(setAccessibilitySubrole:)]) #endif [child setAccessibilitySubrole:NSAccessibilityStandardWindowSubrole]; #endif @@ -1905,7 +1905,7 @@ so some key presses (TAB) are swallowed by the system. */ ordered: NSWindowAbove]; #if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= 101000 #if MAC_OS_X_VERSION_MIN_REQUIRED < 101000 - if ([child respondsToSelector:@selector(setAccessibilitySubrole:)] + if ([child respondsToSelector:@selector(setAccessibilitySubrole:)]) #endif [child setAccessibilitySubrole:NSAccessibilityFloatingWindowSubrole]; #endif From 317b3547820bf2468c1c0e9b5bed1bde94aeb544 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Sat, 1 Dec 2018 13:36:58 +0000 Subject: [PATCH 168/567] ; Add notes about cross-compiling macOS versions --- etc/NEWS | 5 +++++ nextstep/INSTALL | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 399508cacc58..043573e3fca0 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -178,6 +178,11 @@ optional argument to do so. * Changes in Emacs 26.2 on Non-Free Operating Systems +** macOS features can now be detected at run-time as well as at +build-time. See nextstep/INSTALL for details. +(This change was actually made in Emacs 26.1, but was undocumented and +not called out in its NEWS.) + * Installation Changes in Emacs 26.1 diff --git a/nextstep/INSTALL b/nextstep/INSTALL index 64f8f8fcf707..726a897c371b 100644 --- a/nextstep/INSTALL +++ b/nextstep/INSTALL @@ -45,6 +45,35 @@ files will be installed under whatever 'prefix' is set to (defaults to require 'sudo' for "make install"). +Targeting different macOS versions +---------------------------------- + +The Emacs build process automatically enables or disables macOS +features according to the version of macOS it is being built on. It +is possible to override this automatic configuration if you are +targeting a different version of macOS, or wish to build one +executable that is able to enable or disable features at run-time. + +To build a version compatible with an older version of macOS use this +flag: + + -DMAC_OS_X_VERSION_MIN_REQUIRED=x + +and to build for a newer version of macOS: + + -DMAC_OS_X_VERSION_MAX_ALLOWED=x + +For example, to enable run-time checks for features available between +macOS 10.6, and 10.12 inclusive: + + ./configure --with-ns CFLAGS="-DMAC_OS_X_VERSION_MIN_REQUIRED=1060 \ + -DMAC_OS_X_VERSION_MAX_ALLOWED=101200 -g3 -O2" + +The macOS version numbers are formatted as 10x0 for macOS up to 10.10, +and 10xx00 for macOS 10.10 and above. A full list is provided in +/usr/include/AvailabilityMacros.h. + + Installation ------------ From af914fc26db273d8788e7efa57c569f0f778d037 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 1 Dec 2018 13:40:13 -0800 Subject: [PATCH 169/567] Fix infloop in GC mark_kboards Do not merge to master, as I have a more systematic fix there. * src/keyboard.c (mark_kboards): Fix infloop (Bug#33547). --- src/keyboard.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/keyboard.c b/src/keyboard.c index 0d56ea3f7ac9..dccc6b7f128e 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -12011,7 +12011,12 @@ mark_kboards (void) for (event = kbd_fetch_ptr; event != kbd_store_ptr; event++) { if (event == kbd_buffer + KBD_BUFFER_SIZE) - event = kbd_buffer; + { + event = kbd_buffer; + if (event == kbd_store_ptr) + break; + } + /* These two special event types has no Lisp_Objects to mark. */ if (event->kind != SELECTION_REQUEST_EVENT && event->kind != SELECTION_CLEAR_EVENT) From 8fa0d9679d25c431bfe2da3d93997f5ed222ce35 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 1 Dec 2018 17:21:29 -0800 Subject: [PATCH 170/567] * lisp/emacs-lisp/subr-x.el (if-let, when-let): Doc fix: active voice. --- lisp/emacs-lisp/subr-x.el | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 7fab9083e854..2e24d5607bfe 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -122,7 +122,7 @@ If ELT is of the form ((EXPR)), listify (EXPR) with a dummy symbol." bindings))) (defmacro if-let* (varlist then &rest else) - "Bind variables according to VARLIST and eval THEN or ELSE. + "Bind variables according to VARLIST and evaluate THEN or ELSE. This is like `if-let' but doesn't handle a VARLIST of the form \(SYMBOL SOMETHING) specially." (declare (indent 2) @@ -136,14 +136,14 @@ This is like `if-let' but doesn't handle a VARLIST of the form `(let* () ,then))) (defmacro when-let* (varlist &rest body) - "Bind variables according to VARLIST and conditionally eval BODY. + "Bind variables according to VARLIST and conditionally evaluate BODY. This is like `when-let' but doesn't handle a VARLIST of the form \(SYMBOL SOMETHING) specially." (declare (indent 1) (debug if-let*)) (list 'if-let* varlist (macroexp-progn body))) (defmacro and-let* (varlist &rest body) - "Bind variables according to VARLIST and conditionally eval BODY. + "Bind variables according to VARLIST and conditionally evaluate BODY. Like `when-let*', except if BODY is empty and all the bindings are non-nil, then the result is non-nil." (declare (indent 1) @@ -157,22 +157,20 @@ are non-nil, then the result is non-nil." `(let* () ,@(or body '(t)))))) (defmacro if-let (spec then &rest else) - "Bind variables according to SPEC and eval THEN or ELSE. -Each binding is evaluated in turn, and evaluation stops if a -binding value is nil. If all are non-nil, the value of THEN is -returned, or the last form in ELSE is returned. + "Bind variables according to SPEC and evaluate THEN or ELSE. +Evaluate each binding in turn, stopping if a binding value is nil. +If all are non-nil return the value of THEN, otherwise the last form in ELSE. -Each element of SPEC is a list (SYMBOL VALUEFORM) which binds +Each element of SPEC is a list (SYMBOL VALUEFORM) that binds SYMBOL to the value of VALUEFORM. An element can additionally be of the form (VALUEFORM), which is evaluated and checked for nil; i.e. SYMBOL can be omitted if only the test result is of interest. It can also be of the form SYMBOL, then the binding of SYMBOL is checked for nil. -As a special case, a SPEC of the form \(SYMBOL SOMETHING) is -interpreted like \((SYMBOL SOMETHING)). This exists for backward -compatibility with the old syntax that accepted only one -binding." +As a special case, interprets a SPEC of the form \(SYMBOL SOMETHING) +like \((SYMBOL SOMETHING)). This exists for backward compatibility +with an old syntax that accepted only one binding." (declare (indent 2) (debug ([&or (&rest [&or symbolp (symbolp form) (form)]) (symbolp form)] @@ -184,10 +182,9 @@ binding." (list 'if-let* spec then (macroexp-progn else))) (defmacro when-let (spec &rest body) - "Bind variables according to SPEC and conditionally eval BODY. -Each binding is evaluated in turn, and evaluation stops if a -binding value is nil. If all are non-nil, the value of the last -form in BODY is returned. + "Bind variables according to SPEC and conditionally evaluate BODY. +Evaluate each binding in turn, stopping if a binding value is nil. +If all are non-nil, return the value of the last form in BODY. The variable list SPEC is the same as in `if-let'." (declare (indent 1) (debug if-let)) From c418c85617babbe7b63730fefb71e2c87a0141af Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 2 Dec 2018 09:39:04 +0200 Subject: [PATCH 171/567] Revert "Fix infloop in GC mark_kboards" This reverts commit af914fc26db273d8788e7efa57c569f0f778d037, since it caused unintended adverse effects on echoing of keys. (Bug#33571) --- src/keyboard.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/keyboard.c b/src/keyboard.c index dccc6b7f128e..0d56ea3f7ac9 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -12011,12 +12011,7 @@ mark_kboards (void) for (event = kbd_fetch_ptr; event != kbd_store_ptr; event++) { if (event == kbd_buffer + KBD_BUFFER_SIZE) - { - event = kbd_buffer; - if (event == kbd_store_ptr) - break; - } - + event = kbd_buffer; /* These two special event types has no Lisp_Objects to mark. */ if (event->kind != SELECTION_REQUEST_EVENT && event->kind != SELECTION_CLEAR_EVENT) From 745c9c02582443680167501b218cc59f1a2d3fb6 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 2 Dec 2018 20:04:05 +0200 Subject: [PATCH 172/567] Revert "Revert "Fix infloop in GC mark_kboards"" This reverts commit c418c85617babbe7b63730fefb71e2c87a0141af. This reinstates the original fix, as it had nothing to do with the behavior reported in bug#33571, which seems to be the expected behavior. --- src/keyboard.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/keyboard.c b/src/keyboard.c index 0d56ea3f7ac9..dccc6b7f128e 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -12011,7 +12011,12 @@ mark_kboards (void) for (event = kbd_fetch_ptr; event != kbd_store_ptr; event++) { if (event == kbd_buffer + KBD_BUFFER_SIZE) - event = kbd_buffer; + { + event = kbd_buffer; + if (event == kbd_store_ptr) + break; + } + /* These two special event types has no Lisp_Objects to mark. */ if (event->kind != SELECTION_REQUEST_EVENT && event->kind != SELECTION_CLEAR_EVENT) From c7897c27861fd8b2690f40e77402edced6aa0ceb Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Mon, 3 Dec 2018 09:35:33 +0100 Subject: [PATCH 173/567] A few further fixes of window internals description * doc/lispref/internals.texi (Window Internals): Add a few more items and clarify description of some others. --- doc/lispref/internals.texi | 96 +++++++++++++++++-------- src/window.h | 142 +++++++++++++++++++++---------------- 2 files changed, 150 insertions(+), 88 deletions(-) diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index 6c9bba126e39..b95a15fec5df 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -2049,45 +2049,76 @@ if that window no longer displays this buffer. The frame that this window is on, as a Lisp object. @item mini -Non-zero if this window is a minibuffer window. +Non-zero if this window is a minibuffer window, a window showing the +minibuffer or the echo area. + +@item pseudo_window_p +@cindex pseudo window +Non-zero if this window is a @dfn{pseudo window}. A pseudo window is +either a window used to display the menu bar or the tool bar (when +Emacs uses toolkits that don't display their own menu bar and tool +bar) or a window showing a tooltip on a tooltip frame. Pseudo windows +are in general not accessible from Lisp code. @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, as a Lisp object. +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 the window's parent in that tree, as a Lisp object. For the +root window of the tree and a minibuffer window this is always +@code{nil}. 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 +except to shape their child windows. Emacs Lisp programs cannot +directly manipulate parent windows; they operate on the windows at the leaves of the tree, which actually display buffers. +@item contents +For a leaf window and windows showing a tooltip, this is the buffer, +as a Lisp object, that the window is displaying. For an internal +(``parent'') window, this is its first child window. For a pseudo +window showing a menu or tool bar this is @code{nil}. It is also +@code{nil} for a window that has been deleted. + @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. 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. +The next and previous sibling of this window as Lisp objects. +@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. Whether the sibling is left/right +or up/down is determined by the @code{horizontal} field of the +sibling's parent: if it's non-zero, the siblings are arranged +horizontally. + +As a special case, @code{next} of a frame's root window points to the +frame's minibuffer window, provided this is not a minibuffer-only or +minibuffer-less frame. On such frames @code{prev} of the minibuffer +window points to that frame's root window. In any other case, the +root window's @code{next} and the minibuffer window's (if present) +@code{prev} fields are @code{nil}. @item left_col The left-hand edge of the window, measured in columns, relative to the -leftmost column in the frame (column 0). +leftmost column (column 0) of the window's native frame. @item top_line The top edge of the window, measured in lines, relative to the topmost -line in the frame (line 0). +line (line 0) of the window's native frame. + +@item pixel_left +@itemx pixel_top +The left-hand and top edges of this window, measured in pixels, +relative to the top-left corner (0, 0) of the window's native frame. @item total_cols @itemx total_lines -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). +The total width and height of the window, measured in columns and +lines respectively. The values include scroll bars and fringes, +dividers and/or the separator line on the right of the window (if +any). -@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 pixel_width; +@itemx pixel_height; +The total width and height of the window measured in pixels. @item start A marker pointing to the position in the buffer that is the first @@ -2141,8 +2172,14 @@ in this window. 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, a Lisp object. +@item vertical_scroll_bar_type +@itemx horizontal_scroll_bar_type +The types of this window's vertical and horizontal scroll bars. + +@item scroll_bar_width +@itemx scroll_bar_height +The width of this window's vertical scroll bar and the height of this +window's horizontal scroll bar, in pixels. @item left_margin_cols @itemx right_margin_cols @@ -2226,6 +2263,14 @@ Vertical scroll amount, in pixels. Normally, this is 0. @item dedicated Non-@code{nil} if this window is dedicated to its buffer. +@item combination_limit +This window's combination limit, meaningful only for a parent window. +If this is @code{t}, then it is not allowed to delete this window and +recombine its child windows with other siblings of this window. + +@item window_parameters +The alist of this window's parameters. + @item display_table The window's display table, or @code{nil} if none is specified for it. @@ -2250,11 +2295,6 @@ the line number as long as the window shows that buffer. 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 Glyph matrices describing the current and desired display of this window. diff --git a/src/window.h b/src/window.h index c7f525e27047..96e9a9f30ead 100644 --- a/src/window.h +++ b/src/window.h @@ -24,57 +24,69 @@ along with GNU Emacs. If not, see . */ INLINE_HEADER_BEGIN -/* Windows are allocated as if they were vectors, but then the -Lisp data type is changed to Lisp_Window. They are garbage -collected along with the vectors. +/* Windows are allocated as if they were vectors, but then the Lisp +data type is changed to Lisp_Window. They are garbage collected along +with the vectors. All windows in use are arranged into a tree, with pointers up and down. -Windows that are leaves of the tree are actually displayed -and show the contents of buffers. Windows that are not leaves -are used for representing the way groups of leaf windows are -arranged on the frame. Leaf windows never become non-leaves. -They are deleted only by calling delete-window on them (but -this can be done implicitly). Combination windows can be created -and deleted at any time. - -A leaf window has a buffer stored in contents field and markers in its start -and pointm fields. Non-leaf windows have nil in the latter two fields. - -Non-leaf windows are either vertical or horizontal combinations. - -A vertical combination window has children that are arranged on the frame -one above the next. Its contents field points to the uppermost child. -The parent field of each of the children points to the vertical -combination window. The next field of each child points to the -child below it, or is nil for the lowest child. The prev field -of each child points to the child above it, or is nil for the -highest child. - -A horizontal combination window has children that are side by side. -Its contents field points to the leftmost child. In each child -the next field points to the child to the right and the prev field -points to the child to the left. - -The children of a vertical combination window may be leaf windows -or horizontal combination windows. The children of a horizontal -combination window may be leaf windows or vertical combination windows. - -At the top of the tree are two windows which have nil as parent. -The second of these is minibuf_window. The first one manages all -the frame area that is not minibuffer, and is called the root window. -Different windows can be the root at different times; -initially the root window is a leaf window, but if more windows -are created then that leaf window ceases to be root and a newly -made combination window becomes root instead. - -In any case, on screens which have an ordinary window and a -minibuffer, prev of the minibuf window is the root window and next of -the root window is the minibuf window. On minibufferless screens or -minibuffer-only screens, the root window and the minibuffer window are -one and the same, so its prev and next members are nil. - -A dead window has its contents field set to nil. */ +Windows that are leaves of the tree are actually displayed and show +the contents of buffers. Windows that are not leaves are used for +representing the way groups of leaf windows are arranged on the frame. +Leaf windows never become non-leaves. They are deleted only by +calling `delete-window' on them (but this can be done implicitly). +Non-leaf windows never become leaf windows and can be created and +deleted at any time by the window management code. Non-leaf windows +can be seen but not directly manipulated by Lisp functions. + +A leaf window has a buffer stored in its contents field and markers in +its 'start' and 'pointm' fields. Non-leaf windows have nil in the +latter two fields. Non-leaf windows are either vertical or horizontal +combinations. + +A vertical combination window has children that are arranged on the +frame one above the next. Its 'contents' field points to the +uppermost child. The 'parent' field of each of the children points to +the vertical combination window. The 'next' field of each child +points to the child below it, or is nil for the lowest child. The +'prev' field of each child points to the child above it, or is nil for +the highest child. + +A horizontal combination window has children that are arranged side by +side. Its 'contents' field points to the leftmost child. In each +child the 'next' field points to the child to the right and the 'prev' +field points to the child to the left. + +On each frame there are at least one and at most two windows which +have nil as parent. The second of these, if present, is the frame's +minibuffer window and shows the minibuffer or the echo area. The +first one manages the remaining frame area and is called the frame's +root window. Different windows can be the root at different times; +initially the root window is a leaf window, but if more windows are +created, then that leaf window ceases to be root and a newly made +combination window becomes the root instead. + +On frames which have an ordinary window and a minibuffer window, +'prev' of the minibuffer window is the root window and 'next' of the +root window is the minibuffer window. On minibuffer-less frames there +is only a root window and 'next' of the root window is nil. On +minibuffer-only frames, the root window and the minibuffer window are +one and the same, so its 'prev' and 'next' members are nil. In any +case, 'prev' of a root window and 'next' of a minibuffer window are +always nil. + +In Lisp parlance, leaf windows are called "live windows" and non-leaf +windows are called "internal windows". Together, live and internal +windows form the set of "valid windows". A window that has been +deleted is considered "dead" regardless of whether it formerly was a +leaf or a non-leaf window. A dead window has its 'contents' field set +to nil. + +Frames may also contain pseudo windows, windows that are not exposed +directly to Lisp code. Pseudo windows are currently either used to +display the menu bar or the tool bar (when Emacs uses toolkits that +don't display their own menu bar and tool bar) or a tooltip in a +tooltip frame (when tooltips are not display by the toolkit). */ struct cursor_pos { @@ -95,29 +107,39 @@ struct window /* Following (to right or down) and preceding (to left or up) child at same level of tree. Whether this is left/right or - up/down is determined by the 'horizontal' flag, see below. - A minibuffer window has the frame's root window pointed by 'prev'. */ + up/down is determined by the parent window's 'horizontal' flag, + see below. On a frame that is neither a minibuffer-only nor a + minibuffer-less frame, 'next' of the root window points to the + frame's minibuffer window and 'prev' of the minibuffer window + points to the frame's root window. In all other cases, 'next' + of the root window and 'prev' of the minibuffer window, if + present, are nil. 'prev' of the root window and 'next' of the + minibuffer window are always nil. */ Lisp_Object next; Lisp_Object prev; - /* The window this one is a child of. For a minibuffer window: nil. */ + /* The window this one is a child of. For the root and a + minibuffer window this is always nil. */ Lisp_Object parent; - /* The normal size of the window. These are fractions, but we do - not use C doubles to avoid creating new Lisp_Float objects while - interfacing Lisp in Fwindow_normal_size. */ + /* The "normal" size of the window. These are fractions, but we + do not use C doubles to avoid creating new Lisp_Float objects + while interfacing Lisp in Fwindow_normal_size. */ Lisp_Object normal_lines; Lisp_Object normal_cols; - /* New sizes of the window. Note that Lisp code may set new_normal - to something beyond an integer, so C int can't be used here. */ + /* The new sizes of the window as proposed by the window resizing + functions. Note that Lisp code may set new_normal to something + beyond an integer, so C int can't be used here. */ Lisp_Object new_total; Lisp_Object new_normal; Lisp_Object new_pixel; - /* For a leaf window: a buffer; for an internal window: a window; - for a pseudo-window (such as menu bar or tool bar): nil. It is - a buffer for a minibuffer window as well. */ + /* For a leaf window or a tooltip window this is the buffer shown + in the window; for a combination window this is the first of + its child windows; for a pseudo window showing the menu bar or + tool bar this is nil. It is a buffer for a minibuffer window + as well. */ Lisp_Object contents; /* A marker pointing to where in the text to start displaying. @@ -192,7 +214,7 @@ struct window /* The two Lisp_Object fields below are marked in a special way, which is why they're placed after `current_matrix'. */ - /* Alist of triples listing + /* A list of triples listing buffers previously shown in this window. */ Lisp_Object prev_buffers; /* List of buffers re-shown in this window. */ From e5682025e6eb2393f1ec6b3d0a827adc0af908ab Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Fri, 7 Dec 2018 00:30:51 +0200 Subject: [PATCH 174/567] * lisp/simple.el (next-line-or-history-element): Use current-column in all position calculations. (previous-line-or-history-element): Idem. (Bug#33640) --- lisp/simple.el | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index 08f622ad8e01..2116facd58b5 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2120,7 +2120,11 @@ next element of the minibuffer history in the minibuffer." (prompt-end (minibuffer-prompt-end)) (old-column (unless (and (eolp) (> (point) prompt-end)) (if (= (line-number-at-pos) 1) - (max (- (current-column) (1- prompt-end)) 0) + (max (- (current-column) + (save-excursion + (goto-char (1- prompt-end)) + (current-column))) + 0) (current-column))))) (condition-case nil (with-no-warnings @@ -2139,7 +2143,10 @@ next element of the minibuffer history in the minibuffer." (goto-char (point-max)) (when old-column (if (= (line-number-at-pos) 1) - (move-to-column (+ old-column (1- (minibuffer-prompt-end)))) + (move-to-column (+ old-column + (save-excursion + (goto-char (1- (minibuffer-prompt-end))) + (current-column)))) (move-to-column old-column))))))) (defun previous-line-or-history-element (&optional arg) @@ -2154,7 +2161,11 @@ previous element of the minibuffer history in the minibuffer." (prompt-end (minibuffer-prompt-end)) (old-column (unless (and (eolp) (> (point) prompt-end)) (if (= (line-number-at-pos) 1) - (max (- (current-column) (1- prompt-end)) 0) + (max (- (current-column) + (save-excursion + (goto-char (1- prompt-end)) + (current-column))) + 0) (current-column))))) (condition-case nil (with-no-warnings @@ -2173,7 +2184,10 @@ previous element of the minibuffer history in the minibuffer." (goto-char (minibuffer-prompt-end)) (if old-column (if (= (line-number-at-pos) 1) - (move-to-column (+ old-column (1- (minibuffer-prompt-end)))) + (move-to-column (+ old-column + (save-excursion + (goto-char (1- (minibuffer-prompt-end))) + (current-column)))) (move-to-column old-column)) ;; Put the cursor at the end of the visual line instead of the ;; logical line, so the next `previous-line-or-history-element' From 2b9e9937b41b4d5b20d551ac04bdcc253eeaa37a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 7 Dec 2018 17:14:32 +0200 Subject: [PATCH 175/567] ; * doc/lispref/text.texi (Special Properties): Fix wording. (Bug#33663) --- doc/lispref/text.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 477b8fce7196..14cc4fba4570 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -3395,7 +3395,7 @@ property is obsolete; use the @code{cursor-intangible} property instead. @kindex cursor-intangible @r{(text property)} @findex cursor-intangible-mode When the minor mode @code{cursor-intangible-mode} is turned on, point -is moved away of any position that has a non-@code{nil} +is moved away from any position that has a non-@code{nil} @code{cursor-intangible} property, just before redisplay happens. @item field From 1d743d2461a5a90893a0cbe62239f31b321a844d Mon Sep 17 00:00:00 2001 From: Ari Roponen Date: Fri, 30 Nov 2018 14:09:09 +0200 Subject: [PATCH 176/567] Fix scaling problem in Cairo builds * src/xterm.c (x_begin_cr_clip) [USE_GTK]: (x_update_begin) [USE_CAIRO && USE_GTK]: Support scaling. (Bug#33442) --- src/xterm.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index b2d1b5c19807..8157612b2933 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -360,10 +360,15 @@ x_begin_cr_clip (struct frame *f, GC gc) if (! FRAME_CR_SURFACE (f)) { + int scale = 1; +#ifdef USE_GTK + scale = xg_get_scale (f); +#endif + FRAME_CR_SURFACE (f) = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - FRAME_PIXEL_WIDTH (f), - FRAME_PIXEL_HEIGHT (f)); + scale * FRAME_PIXEL_WIDTH (f), + scale * FRAME_PIXEL_HEIGHT (f)); } cr = cairo_create (FRAME_CR_SURFACE (f)); FRAME_CR_CONTEXT (f) = cr; @@ -1006,8 +1011,9 @@ x_update_begin (struct frame *f) if (FRAME_GTK_WIDGET (f)) { GdkWindow *w = gtk_widget_get_window (FRAME_GTK_WIDGET (f)); - width = gdk_window_get_width (w); - height = gdk_window_get_height (w); + int scale = xg_get_scale (f); + width = scale * gdk_window_get_width (w); + height = scale * gdk_window_get_height (w); } else #endif From 1e3e24d957eb6b1bc5d25f506ef080d1ad553ec8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 8 Dec 2018 11:50:58 +0200 Subject: [PATCH 177/567] ; * src/xterm.c (x_update_begin): Fix whitespace. --- src/xterm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xterm.c b/src/xterm.c index 8157612b2933..577c87a93b1b 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -1013,7 +1013,7 @@ x_update_begin (struct frame *f) GdkWindow *w = gtk_widget_get_window (FRAME_GTK_WIDGET (f)); int scale = xg_get_scale (f); width = scale * gdk_window_get_width (w); - height = scale * gdk_window_get_height (w); + height = scale * gdk_window_get_height (w); } else #endif From 18442da60fd7f1afd453c5264f133ebb7733c746 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sun, 9 Dec 2018 09:55:29 +0100 Subject: [PATCH 178/567] Tramp multi-hop methods must be inline * doc/misc/tramp.texi (Ad-hoc multi-hops): Involved methods must be inline methods. --- doc/misc/tramp.texi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 6e0268370793..d8bd85025c6e 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -2594,6 +2594,8 @@ proxy @samp{bird@@bastion} to a remote file on @samp{you@@remotehost}: @kbd{C-x C-f @value{prefix}ssh@value{postfixhop}bird@@bastion|ssh@value{postfixhop}you@@remotehost@value{postfix}/path @key{RET}} @end example +Each involved method must be an inline method (@pxref{Inline methods}). + Proxies can take patterns @code{%h} or @code{%u}. @value{tramp} adds the ad-hoc definitions on the fly to From d817d2cfb9bdb71fb3ed540d6601be4577272acc Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 9 Dec 2018 08:34:35 -0500 Subject: [PATCH 179/567] * doc/lispref/commands.texi (Adjusting Point): Bug#33662 Tweak text to clarify intangibility. --- doc/lispref/commands.texi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index 427379bc79c6..b6749d0a0ccd 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@ -1012,7 +1012,8 @@ If the last event came from a keyboard macro, the value is @code{macro}. sequence of text that has the @code{display} or @code{composition} property, or is invisible. Therefore, after a command finishes and returns to the command loop, if point is within such a sequence, the -command loop normally moves point to the edge of the sequence. +command loop normally moves point to the edge of the sequence, making this +sequence effectively intangible. A command can inhibit this feature by setting the variable @code{disable-point-adjustment}: From 505ac9a0b1fcf2aa505ad551911c98761b77b6f8 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 9 Dec 2018 08:59:20 -0500 Subject: [PATCH 180/567] Improve documentation of cursor-sensor.el (bug#33664) * doc/lispref/text.texi (Special Properties): Mention cursor-sensor-inhibit. * lisp/emacs-lisp/cursor-sensor.el (Commentary): Add cursor-sensor-mode. (cursor-sensor-inhibit): Add docstring. --- doc/lispref/text.texi | 6 ++++++ lisp/emacs-lisp/cursor-sensor.el | 26 +++++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 14cc4fba4570..78d51c6dbb98 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -3398,6 +3398,9 @@ When the minor mode @code{cursor-intangible-mode} is turned on, point is moved away from any position that has a non-@code{nil} @code{cursor-intangible} property, just before redisplay happens. +When the variable @code{cursor-sensor-inhibit} is non-@code{nil}, the +@code{cursor-intangible} property is ignored. + @item field @kindex field @r{(text property)} Consecutive characters with the same @code{field} property constitute a @@ -3579,6 +3582,9 @@ depending on whether the cursor is entering the text that has this property or leaving it. The functions are called only when the minor mode @code{cursor-sensor-mode} is turned on. +When the variable @code{cursor-sensor-inhibit} is non-@code{nil}, the +@code{cursor-sensor-functions} property is ignored. + @item composition @kindex composition @r{(text property)} This text property is used to display a sequence of characters as a diff --git a/lisp/emacs-lisp/cursor-sensor.el b/lisp/emacs-lisp/cursor-sensor.el index 7e3088dd91ea..21c48f830f2b 100644 --- a/lisp/emacs-lisp/cursor-sensor.el +++ b/lisp/emacs-lisp/cursor-sensor.el @@ -22,17 +22,29 @@ ;;; Commentary: -;; This package implements the `cursor-intangible' property, which is -;; meant to replace the old `intangible' property. To use it, just enable the -;; `cursor-intangible-mode', after which this package will move point away from -;; any position that has a non-nil `cursor-intangible' property. This is only -;; done just before redisplay happens, contrary to the old `intangible' -;; property which was done at a much lower level. +;; This package implements the `cursor-intangible' and +;; `cursor-sensor-functions' properties, which are meant to replace +;; the old `intangible', `point-entered', and `point-left' properties. + +;; To use `cursor-intangible', just enable the +;; `cursor-intangible-mode' minor mode, after which this package will +;; move point away from any position that has a non-nil +;; `cursor-intangible' property. This is only done just before +;; redisplay happens, contrary to the old `intangible' property which +;; was done at a much lower level. + +;; To use `cursor-sensor-functions', enable the `cursor-sensor-mode' +;; minor mode, after which the `cursor-sensor-functions' will be +;; called just before redisplay happens, according to the movement of +;; the cursor since the last redisplay. ;;; Code: ;;;###autoload -(defvar cursor-sensor-inhibit nil) +(defvar cursor-sensor-inhibit nil + "When non-nil, suspend `cursor-sensor-mode' and `cursor-intangible-mode'. +By convention, this is a list of symbols where each symbol stands for the +\"cause\" of the suspension.") (defun cursor-sensor--intangible-p (pos) (let ((p (get-pos-property pos 'cursor-intangible))) From 908af9dfc46f783c89d06cb48d9499eb6a582d3e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 9 Dec 2018 17:14:55 +0200 Subject: [PATCH 181/567] Indexing followup to recent changes * doc/lispref/text.texi (Special Properties): Index 'cursor-sensor-inhibit'. (Bug#33664) --- doc/lispref/text.texi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 78d51c6dbb98..b790b28fc2e8 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -3398,8 +3398,10 @@ When the minor mode @code{cursor-intangible-mode} is turned on, point is moved away from any position that has a non-@code{nil} @code{cursor-intangible} property, just before redisplay happens. +@vindex cursor-sensor-inhibit When the variable @code{cursor-sensor-inhibit} is non-@code{nil}, the -@code{cursor-intangible} property is ignored. +@code{cursor-intangible} property and the +@code{cursor-sensor-functions} property (described below) are ignored. @item field @kindex field @r{(text property)} From ee1ebe8246c333e9ca0e3454f357d12c713c129b Mon Sep 17 00:00:00 2001 From: Raimon Grau Date: Mon, 10 Dec 2018 01:42:41 +0200 Subject: [PATCH 182/567] Guard occur against an undefined orig-line ; Not to be merged to master * lisp/replace.el (occur-engine): Avoid inserting the current line if orig-line is nil. This happens, for example, when reverting an occur buffer with `list-matching-lines-jump-to-current-line' set to t. (Bug#33476) --- lisp/replace.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/replace.el b/lisp/replace.el index 940bf5665099..4f0cbf4b958c 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1748,6 +1748,7 @@ See also `multi-occur'." (when (and list-matching-lines-jump-to-current-line (not multi-occur-p) (not orig-line-shown-p) + orig-line (>= curr-line orig-line)) (insert (concat @@ -1774,7 +1775,8 @@ See also `multi-occur'." ;; Insert original line if haven't done yet. (when (and list-matching-lines-jump-to-current-line (not multi-occur-p) - (not orig-line-shown-p)) + (not orig-line-shown-p) + orig-line) (with-current-buffer out-buf (insert (concat From b0ed9d143333827ee8481da0fe7821887a3c6c94 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 9 Dec 2018 20:56:35 -0500 Subject: [PATCH 183/567] * lisp/emacs-lisp/cursor-sensor.el: Add motivation --- lisp/emacs-lisp/cursor-sensor.el | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lisp/emacs-lisp/cursor-sensor.el b/lisp/emacs-lisp/cursor-sensor.el index 21c48f830f2b..6c33d04dedde 100644 --- a/lisp/emacs-lisp/cursor-sensor.el +++ b/lisp/emacs-lisp/cursor-sensor.el @@ -38,6 +38,27 @@ ;; called just before redisplay happens, according to the movement of ;; the cursor since the last redisplay. +;;;; Motivation + +;; The old properties were very problematic in practice because they +;; operate at a much lower level and hence affect all motion +;; *functions* like goto-char, forward-char, ... hence breaking +;; invariants like: +;; +;; (forward-char N) == (progn (forward-char N1) (forward-char (- N N1))) +;; (point) == (progn (forward-char N) (forward-char -N) (point)) +;; (+ N (point)) == (progn (forward-char N) (point)) +;; +;; The problems would usually show up due to interaction between +;; unrelated code working in the same buffer, where one code used those +;; properties and the other (unknowingly) assumed those aren't used. +;; In practice a *lot* of code assumes there's no such funny business. +;; +;; Worse: all(?) packages using those properties don't actually want those +;; properties to affect motion at such a low-level, they only want to +;; affect the overall effect of commands, but not the effect of every +;; single point-motion that a given command happened to use internally. + ;;; Code: ;;;###autoload From 5a7451c383be5e6be52c986a9392ff551e656f6a Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Mon, 10 Dec 2018 12:12:02 +0000 Subject: [PATCH 184/567] CC Mode: stop wrongly recognizing "func(a * 9)" as "pointer to type a" * lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): When testing for an identifier after "a *", on failure additionally check for a digit, setting a new flag variable got-number if one is found. In the test for CASE 18, check this flag. --- lisp/progmodes/cc-engine.el | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 317968aafd3f..4bd85d740d95 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -8514,6 +8514,8 @@ comment at the start of cc-engine.el for more info." got-parens ;; True if there is an identifier in the declarator. got-identifier + ;; True if we find a number where an identifier was expected. + got-number ;; True if there's a non-close-paren match of ;; `c-type-decl-suffix-key'. got-suffix @@ -8591,7 +8593,9 @@ comment at the start of cc-engine.el for more info." (and (looking-at c-identifier-start) (setq pos (point)) (setq got-identifier (c-forward-name)) - (setq name-start pos))) + (setq name-start pos)) + (when (looking-at "[0-9]") + (setq got-number t))) ; We've probably got an arithmetic expression. ;; Skip over type decl suffix operators and trailing noise macros. (while @@ -9056,7 +9060,7 @@ comment at the start of cc-engine.el for more info." ;; CASE 18 (when (and (not (memq context '(nil top))) - (or got-prefix + (or (and got-prefix (not got-number)) (and (eq context 'decl) (not c-recognize-paren-inits) (or got-parens got-suffix)))) From 0220391c0015bdec0e658c7ab206c6226bb335ca Mon Sep 17 00:00:00 2001 From: Ari Roponen Date: Sun, 6 May 2018 15:29:28 +0300 Subject: [PATCH 185/567] Fix cairo scrolling for side-by-side windows Backport: Fixes Bug#33442. * src/xterm.c (x_scroll_run) [USE_CAIRO]: Fix scrolling for side-by-side split windows. (Bug#31288) (cherry picked from commit 6e362a32bc9d21f73a0f29ca6f45481edeea6f29) --- src/xterm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index 577c87a93b1b..97a0d97de70c 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -4251,6 +4251,7 @@ x_scroll_run (struct window *w, struct run *run) #ifdef USE_CAIRO if (FRAME_CR_CONTEXT (f)) { + int wx = WINDOW_LEFT_EDGE_X (w); cairo_surface_t *s = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); cairo_t *cr = cairo_create (s); @@ -4261,8 +4262,8 @@ x_scroll_run (struct window *w, struct run *run) cr = FRAME_CR_CONTEXT (f); cairo_save (cr); - cairo_set_source_surface (cr, s, 0, to_y); - cairo_rectangle (cr, x, to_y, width, height); + cairo_set_source_surface (cr, s, wx, to_y); + cairo_rectangle (cr, wx, to_y, width, height); cairo_fill (cr); cairo_restore (cr); cairo_surface_destroy (s); From 2075864c7717491f1156998120535ce72ed8f0cc Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Mon, 10 Dec 2018 14:30:40 +0000 Subject: [PATCH 186/567] CC Mode: stop extra parens on expression causing false fontification as type * lisp/progmodes/cc-fonts.el (c-get-fontification-context): recognize arithmetic operator followed by several open parentheses, not just one, as not being an argument list. --- lisp/progmodes/cc-fonts.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index fa9b8f354ef6..39d167f01906 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el @@ -1279,12 +1279,14 @@ casts and declarations are fontified. Used on level 2 and higher." (c-put-char-property (1- match-pos) 'c-type 'c-decl-arg-start) (cons 'decl nil)) - ;; Got an open paren preceded by an arith operator. + ;; Got (an) open paren(s) preceded by an arith operator. ((and (eq (char-before match-pos) ?\() (save-excursion (goto-char match-pos) - (and (zerop (c-backward-token-2 2)) - (looking-at c-arithmetic-op-regexp)))) + (while + (progn (c-backward-token-2) + (eq (char-after) ?\())) + (looking-at c-arithmetic-op-regexp))) (cons nil nil)) ;; In a C++ member initialization list. ((and (eq (char-before match-pos) ?,) From 5d1b158feb693847015326b3eae6605c9794b47d Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Tue, 11 Dec 2018 09:16:21 +0100 Subject: [PATCH 187/567] Tiny markup fix in Elisp manual * doc/lispref/lists.texi (Building Lists): Use '@var' instead of '@code' for argument. --- doc/lispref/lists.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi index ce62793550df..fdcfe33661db 100644 --- a/doc/lispref/lists.texi +++ b/doc/lispref/lists.texi @@ -640,7 +640,7 @@ resulting list. Instead, the sequence becomes the final @sc{cdr}, like any other non-list final argument. @defun copy-tree tree &optional vecp -This function returns a copy of the tree @code{tree}. If @var{tree} is a +This function returns a copy of the tree @var{tree}. If @var{tree} is a cons cell, this makes a new cons cell with the same @sc{car} and @sc{cdr}, then recursively copies the @sc{car} and @sc{cdr} in the same way. From 24b5026fb6b622966fd773178608617fa2f8add2 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 11 Dec 2018 12:32:11 +0200 Subject: [PATCH 188/567] Fix redisplay when a window's scroll bar or fringes are changed * src/window.c (set_window_fringes, set_window_scroll_bars): Set windows_or_buffers_changed flag to cause immediate thorough redisplay of a window when scroll bars or fringes are changed. (Bug#33694) --- src/window.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/window.c b/src/window.c index 5d99098cba15..6026313e5a4d 100644 --- a/src/window.c +++ b/src/window.c @@ -7137,6 +7137,11 @@ set_window_fringes (struct window *w, Lisp_Object left_width, w->right_fringe_width = right; w->fringes_outside_margins = outside; + /* This is needed to trigger immediate redisplay of the window + when its fringes are changed, because fringes are redrawn + only if update_window is called, so we must trigger that even + if the window's glyph matrices did not change at all. */ + windows_or_buffers_changed = 35; return w; } else @@ -7254,6 +7259,12 @@ set_window_scroll_bars (struct window *w, Lisp_Object width, wset_horizontal_scroll_bar_type (w, Qnil); #endif + /* This is needed to trigger immediate redisplay of the window when + scroll bars are changed, because scroll bars are redisplayed only + if more than a single window needs to be considered, see + redisplay_internal. */ + if (changed) + windows_or_buffers_changed = 31; return changed ? w : NULL; } From f519aa10b47f7c652ae9b5f021363073f5c463ff Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 14 Dec 2018 10:43:37 +0200 Subject: [PATCH 189/567] Fix display of line numbers in empty lines beyond EOB * src/xdisp.c (maybe_produce_line_number): When the current line is at EOB, use the 'line-number-current-line' face only on that single line, but not on the rest of empty lines beyond EOB. (Bug#33732) --- src/xdisp.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/xdisp.c b/src/xdisp.c index 808eab7e5384..435ab2c02965 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -21185,7 +21185,10 @@ maybe_produce_line_number (struct it *it) if (lnum_face_id != current_lnum_face_id && (EQ (Vdisplay_line_numbers, Qvisual) ? this_line == 0 - : this_line == it->pt_lnum)) + : this_line == it->pt_lnum) + /* Avoid displaying the line-number-current-line face on + empty lines beyond EOB. */ + && it->what != IT_EOB) tem_it.face_id = current_lnum_face_id; else tem_it.face_id = lnum_face_id; From f14d5742db39b797f742566c4e68dffa9a62646d Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Fri, 14 Dec 2018 15:04:14 +0100 Subject: [PATCH 190/567] Document font structure layout constraints The layout of the initial members of ftcrfont_info must match ftfont_info * src/ftcrfont.c (struct ftcrfont_info): Likewise. * src/ftfont.c (struct ftfont_info): Document layout constraints. --- src/ftcrfont.c | 5 +++-- src/ftfont.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/ftcrfont.c b/src/ftcrfont.c index 614ef0837017..d19c300c5b0a 100644 --- a/src/ftcrfont.c +++ b/src/ftcrfont.c @@ -35,8 +35,9 @@ along with GNU Emacs. If not, see . */ struct ftcrfont_info { struct font font; - /* The following six members must be here in this order to be - compatible with struct ftfont_info (in ftfont.c). */ + /* The following members up to and including 'matrix' must be here + in this order to be compatible with struct ftfont_info (in + ftfont.c). */ #ifdef HAVE_LIBOTF bool maybe_otf; /* Flag to tell if this may be OTF or not. */ OTF *otf; diff --git a/src/ftfont.c b/src/ftfont.c index 8f048d2983b3..a05aa12c2af8 100644 --- a/src/ftfont.c +++ b/src/ftfont.c @@ -56,8 +56,9 @@ struct ftfont_info { struct font font; #ifdef HAVE_LIBOTF - /* The following four members must be here in this order to be - compatible with struct xftfont_info (in xftfont.c). */ + /* The following members up to and including 'matrix' must be here in + this order to be compatible with struct xftfont_info (in + xftfont.c). */ bool maybe_otf; /* Flag to tell if this may be OTF or not. */ OTF *otf; #endif /* HAVE_LIBOTF */ From 30156364714f7b66ee82b28c9c01abebba4f49e5 Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Fri, 14 Dec 2018 16:07:47 +0100 Subject: [PATCH 191/567] Document font structure layout constraints This has to be the same as in src/ftcrfont.c and src/ftfont.c * src/xftfont.c (struct xftfont_info): Document layout constraints. --- src/xftfont.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/xftfont.c b/src/xftfont.c index 5ef90a014eaf..9801d75d238a 100644 --- a/src/xftfont.c +++ b/src/xftfont.c @@ -42,8 +42,9 @@ along with GNU Emacs. If not, see . */ struct xftfont_info { struct font font; - /* The following five members must be here in this order to be - compatible with struct ftfont_info (in ftfont.c). */ + /* The following members up to and including 'matrix' must be here + in this order to be compatible with struct ftfont_info (in + ftfont.c). */ #ifdef HAVE_LIBOTF bool maybe_otf; /* Flag to tell if this may be OTF or not. */ OTF *otf; @@ -51,6 +52,7 @@ struct xftfont_info FT_Size ft_size; int index; FT_Matrix matrix; + Display *display; XftFont *xftfont; unsigned x_display_id; From fa953b58afd39d396dab4d76a6ff0b8ba4040eb8 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 14 Dec 2018 20:09:02 -0500 Subject: [PATCH 192/567] Fix an epg test for recent GnuPG versions (bug#33439) * test/lisp/epg-tests.el (epg-decrypt-1): Tell recent GnuPG (e.g. 2.2.11) not to worry about missing MDC. --- test/lisp/epg-tests.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/lisp/epg-tests.el b/test/lisp/epg-tests.el index 0fe15017dd08..f2cc351d70b2 100644 --- a/test/lisp/epg-tests.el +++ b/test/lisp/epg-tests.el @@ -87,6 +87,8 @@ (ert-deftest epg-decrypt-1 () (skip-unless (epg-tests-find-usable-gpg-configuration 'require-passphrase)) (with-epg-tests (:require-passphrase t) + (with-temp-file (expand-file-name "gpg.conf" epg-tests-home-directory) + (insert "ignore-mdc-error")) (should (equal "test" (epg-decrypt-string epg-tests-context "\ -----BEGIN PGP MESSAGE----- From e8bb0420a0a0aefc35932c9b5ee3167f6b237def Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 17 Dec 2018 08:11:55 -0800 Subject: [PATCH 193/567] More porting to GCC 8 of --enable-gcc-warnings Backport from master. I ran into this when building Emacs 26 with GCC 8 on Fedora 29 x86. * lwlib/lwlib-Xaw.h (xaw_update_one_value, xaw_popup_menu): * lwlib/lwlib-Xlw.h (xlw_update_one_value, xlw_pop_instance): * lwlib/lwlib.h (lw_allow_resizing, lw_set_main_areas) [!USE_MOTIF]: No longer const. * src/emacs-module.c: Ignore -Wcast-function-type. --- lwlib/lwlib-Xaw.h | 6 ++---- lwlib/lwlib-Xlw.h | 6 ++---- lwlib/lwlib.h | 6 ------ src/emacs-module.c | 5 +++++ 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/lwlib/lwlib-Xaw.h b/lwlib/lwlib-Xaw.h index 363334b575e8..644676f320d3 100644 --- a/lwlib/lwlib-Xaw.h +++ b/lwlib/lwlib-Xaw.h @@ -15,15 +15,13 @@ void xaw_update_one_widget (widget_instance *, Widget, widget_value *, Boolean); void -xaw_update_one_value (widget_instance *, Widget, widget_value *) - ATTRIBUTE_CONST; +xaw_update_one_value (widget_instance *, Widget, widget_value *); void xaw_destroy_instance (widget_instance *); void -xaw_popup_menu (Widget, XEvent *) - ATTRIBUTE_CONST; +xaw_popup_menu (Widget, XEvent *); void xaw_pop_instance (widget_instance *, Boolean); diff --git a/lwlib/lwlib-Xlw.h b/lwlib/lwlib-Xlw.h index 2d38eb7be667..b0790dc3a599 100644 --- a/lwlib/lwlib-Xlw.h +++ b/lwlib/lwlib-Xlw.h @@ -15,15 +15,13 @@ xlw_update_one_widget (widget_instance* instance, Widget widget, void xlw_update_one_value (widget_instance* instance, Widget widget, - widget_value* val) - ATTRIBUTE_CONST; + widget_value* val); void xlw_destroy_instance (widget_instance* instance); void -xlw_pop_instance (widget_instance* instance, Boolean up) - ATTRIBUTE_CONST; +xlw_pop_instance (widget_instance* instance, Boolean up); void xlw_popup_menu (Widget widget, XEvent * event); diff --git a/lwlib/lwlib.h b/lwlib/lwlib.h index 66730fd8d776..41d3e0139d2b 100644 --- a/lwlib/lwlib.h +++ b/lwlib/lwlib.h @@ -111,15 +111,9 @@ void lw_refigure_widget (Widget w, Boolean doit); Boolean lw_window_is_in_menubar (Window win, Widget menubar_widget); /* Manage resizing: TRUE permits resizing widget w; FALSE disallows it. */ -#ifndef USE_MOTIF -ATTRIBUTE_CONST -#endif void lw_allow_resizing (Widget w, Boolean flag); /* Set up the main window. */ -#ifndef USE_MOTIF -ATTRIBUTE_CONST -#endif void lw_set_main_areas (Widget parent, Widget menubar, Widget work_area); diff --git a/src/emacs-module.c b/src/emacs-module.c index c20902d07290..88049d29cf0b 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c @@ -36,6 +36,11 @@ along with GNU Emacs. If not, see . */ #include #include +/* This module is lackadaisical about function casts. */ +#if GNUC_PREREQ (8, 0, 0) +# pragma GCC diagnostic ignored "-Wcast-function-type" +#endif + /* We use different strategies for allocating the user-visible objects (struct emacs_runtime, emacs_env, emacs_value), depending on whether the user supplied the -module-assertions flag. If From 582527976b3274585644a04223244aa10834933d Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 17 Dec 2018 17:46:48 -0500 Subject: [PATCH 194/567] * doc/lispintro/emacs-lisp-intro.texi (Finding More): Fix xref. --- doc/lispintro/emacs-lisp-intro.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index be3e938b2456..01842896cedc 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -4636,7 +4636,7 @@ languages, not just Lisp, and C, and it works with non-programming text as well. For example, @code{xref-find-definitions} will jump to the various nodes in the Texinfo source file of this document (provided that you've run the @command{etags} utility to record all -the nodes in the manuals that come with Emacs; @pxref{Create tags +the nodes in the manuals that come with Emacs; @pxref{Create Tags Table,,, emacs, The GNU Emacs Manual}). To use the @code{xref-find-definitions} command, type @kbd{M-.} From 80e98568aa41b106ebc9bbec9a44fe442a93803d Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Mon, 17 Dec 2018 11:56:05 +0100 Subject: [PATCH 195/567] Fix Bug#33524 * lisp/progmodes/flymake-proc.el (flymake-proc-create-temp-with-folder-structure): Unquote file-name. (Bug#33524) --- lisp/progmodes/flymake-proc.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/progmodes/flymake-proc.el b/lisp/progmodes/flymake-proc.el index 4792a9453083..7916108a830d 100644 --- a/lisp/progmodes/flymake-proc.el +++ b/lisp/progmodes/flymake-proc.el @@ -854,7 +854,7 @@ can also be executed interactively independently of (unless (stringp file-name) (error "Invalid file-name")) - (let* ((dir (file-name-directory file-name)) + (let* ((dir (file-name-directory (file-name-unquote file-name))) ;; Not sure what this slash-pos is all about, but I guess it's just ;; trying to remove the leading / of absolute file names. (slash-pos (string-match "/" dir)) From ab8ed418596da550c79913ccc42e8c3842bca315 Mon Sep 17 00:00:00 2001 From: Rob Browning Date: Tue, 18 Dec 2018 15:34:01 -0500 Subject: [PATCH 196/567] Avoid test failures if directory name looks like a regexp Taken from * test/lisp/ibuffer-tests.el (ibuffer-filter-inclusion-3): * test/lisp/net/tramp-tests.el (tramp-test42-remote-load-path): Regexp-quote file names to avoid failures with directory names of the form "build/emacs-i87jK3/emacs-26.1+1/...". --- test/lisp/ibuffer-tests.el | 4 ++-- test/lisp/net/tramp-tests.el | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/test/lisp/ibuffer-tests.el b/test/lisp/ibuffer-tests.el index ff5162fefa5f..c1d9ed9fc3bd 100644 --- a/test/lisp/ibuffer-tests.el +++ b/test/lisp/ibuffer-tests.el @@ -312,8 +312,8 @@ (funcall create-non-file-buffer "ibuf-test-3.b" :size 50 :mode #'text-mode :include-content "...but a multitude of drops?\n")) - (dirA (with-current-buffer bufA default-directory)) - (dirB (with-current-buffer bufB default-directory))) + (dirA (regexp-quote (with-current-buffer bufA default-directory))) + (dirB (regexp-quote (with-current-buffer bufB default-directory)))) (should (ibuffer-included-in-filters-p bufA '((basename . "ibuf-test-3")))) (should (ibuffer-included-in-filters-p diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 8f810818af1d..19edec214f76 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -4773,8 +4773,9 @@ process sentinels. They shall not disturb each other." (string-match (format "Loading %s" - (expand-file-name - "tramp-cmds" (file-name-directory (locate-library "tramp")))) + (regexp-quote + (expand-file-name + "tramp-cmds" (file-name-directory (locate-library "tramp"))))) (shell-command-to-string (format "%s -batch -Q -L %s -l tramp-sh --eval %s" From 4c6c327d0c66a21416ed1b5e9738b7dd13e739f2 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 18 Dec 2018 21:18:31 -0500 Subject: [PATCH 197/567] Restrict downcasing in elisp xref tests (bug#25534) The tests happen to not fail at the moment because find-library-name now has an extra feature, find-library--from-load-history, which happens to do a case-insensitive regexp match; but still it seems better not to rely on this. * test/lisp/progmodes/elisp-mode-tests.el (xref--case-insensitive): New variable. (xref-elisp-test-run, emacs-test-dir): Only downcase if the filesystem seems to be case-insensitive. --- test/lisp/progmodes/elisp-mode-tests.el | 28 ++++++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/test/lisp/progmodes/elisp-mode-tests.el b/test/lisp/progmodes/elisp-mode-tests.el index 941e85bc890e..97148efde410 100644 --- a/test/lisp/progmodes/elisp-mode-tests.el +++ b/test/lisp/progmodes/elisp-mode-tests.el @@ -298,6 +298,16 @@ ))) +;; tmp may be on a different filesystem to the tests, but, ehh. +(defvar xref--case-insensitive + (let ((dir (make-temp-file "xref-test" t))) + (unwind-protect + (progn + (with-temp-file (expand-file-name "hElLo" dir) "hello") + (file-exists-p (expand-file-name "HELLO" dir))) + (delete-directory dir t))) + "Non-nil if file system seems to be case-insensitive.") + (defun xref-elisp-test-run (xrefs expected-xrefs) (should (= (length xrefs) (length expected-xrefs))) (while xrefs @@ -307,11 +317,13 @@ (expected-source (when (consp expected) (cdr expected)))) ;; Downcase the filenames for case-insensitive file systems. - (setf (xref-elisp-location-file (oref xref location)) - (downcase (xref-elisp-location-file (oref xref location)))) + (when xref--case-insensitive + (setf (xref-elisp-location-file (oref xref location)) + (downcase (xref-elisp-location-file (oref xref location)))) - (setf (xref-elisp-location-file (oref expected-xref location)) - (downcase (xref-elisp-location-file (oref expected-xref location)))) + (setf (xref-elisp-location-file (oref expected-xref location)) + (downcase (xref-elisp-location-file + (oref expected-xref location))))) (should (equal xref expected-xref)) @@ -346,10 +358,10 @@ to (xref-elisp-test-descr-to-target xref)." ;; `load-path' has the correct case, so this causes the expected test ;; values to have the wrong case). This is handled in ;; `xref-elisp-test-run'. -(defconst emacs-test-dir - (downcase - (file-truename (file-name-directory - (or load-file-name (buffer-file-name)))))) +(defvar emacs-test-dir + (funcall (if xref--case-insensitive 'downcase 'identity) + (file-truename (file-name-directory + (or load-file-name (buffer-file-name)))))) ;; alphabetical by test name From 305aca0a0abbac1011980e6ac9b166bd0dfd6ff0 Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Wed, 8 Nov 2017 00:39:43 +0800 Subject: [PATCH 198/567] Backport: Handle unread-command-events consistently (bug#23980) * src/keyboard.c (read_char): Events put into `unread-command-events' with the form (t . EVENT) should always have the t stripped when read out. * test/src/keyboard-tests.el: New tests for `unread-command-events'. (cherry picked from commit 1f3f4b1296613b8cdc0632a68fde86e86ddad866) --- src/keyboard.c | 3 +++ test/src/keyboard-tests.el | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 test/src/keyboard-tests.el diff --git a/src/keyboard.c b/src/keyboard.c index dccc6b7f128e..d20557b45d70 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -2809,6 +2809,9 @@ read_char (int commandflag, Lisp_Object map, if (EQ (c, make_number (-2))) return c; + + if (CONSP (c) && EQ (XCAR (c), Qt)) + c = XCDR (c); } non_reread: diff --git a/test/src/keyboard-tests.el b/test/src/keyboard-tests.el new file mode 100644 index 000000000000..d2063a38c145 --- /dev/null +++ b/test/src/keyboard-tests.el @@ -0,0 +1,34 @@ +;;; keyboard-tests.el --- Tests for keyboard.c -*- lexical-binding: t -*- + +;; Copyright 2017 Free Software Foundation, Inc. + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Code: + +(require 'ert) + +(ert-deftest keyboard-unread-command-events () + "Test `unread-command-events'." + (should (equal (progn (push ?\C-a unread-command-events) + (read-event nil nil 1)) + ?\C-a)) + (should (equal (progn (run-with-timer + 1 nil + (lambda () (push '(t . ?\C-b) unread-command-events))) + (read-event nil nil 2)) + ?\C-b))) + +(provide 'keyboard-tests) +;;; keyboard-tests.el ends here From 4370b8ebd9ecf934ae08c76d9e7161fcb5cf7c40 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 19 Dec 2018 08:29:21 -0800 Subject: [PATCH 199/567] ; Copyright year fix No need to merge to master --- test/src/keyboard-tests.el | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/src/keyboard-tests.el b/test/src/keyboard-tests.el index d2063a38c145..125dbd093919 100644 --- a/test/src/keyboard-tests.el +++ b/test/src/keyboard-tests.el @@ -1,19 +1,21 @@ ;;; keyboard-tests.el --- Tests for keyboard.c -*- lexical-binding: t -*- -;; Copyright 2017 Free Software Foundation, Inc. +;; Copyright (C) 2017-2018 Free Software Foundation, Inc. -;; This program is free software; you can redistribute it and/or modify +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. -;; This program is distributed in the hope that it will be useful, +;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . +;; along with GNU Emacs. If not, see . ;;; Code: From fda43a7bef499024fa5fcb32432e76c5839ee154 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 19 Dec 2018 15:06:18 -0500 Subject: [PATCH 200/567] Skip a vc-bzr test if run as root * test/lisp/vc/vc-bzr-tests.el (vc-bzr-test-faulty-bzr-autoloads): Skip this test when run as root. This works around a race condition in root-specific code in vc-mode-line when deleting a file. ; Do not merge to master, instead fix vc-mode-line there. --- test/lisp/vc/vc-bzr-tests.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/lisp/vc/vc-bzr-tests.el b/test/lisp/vc/vc-bzr-tests.el index 6b96f3b928d0..db64f61c43d7 100644 --- a/test/lisp/vc/vc-bzr-tests.el +++ b/test/lisp/vc/vc-bzr-tests.el @@ -112,6 +112,9 @@ (ert-deftest vc-bzr-test-faulty-bzr-autoloads () "Test we can generate autoloads in a bzr directory when bzr is faulty." (skip-unless (executable-find vc-bzr-program)) + ;; Avoid vc-mode-line bug; + ;; http://lists.gnu.org/r/emacs-devel/2018-12/msg00368.html + (skip-unless (not (eq 0 (user-real-uid)))) (let* ((homedir (make-temp-file "vc-bzr-test" t)) (bzrdir (expand-file-name "bzr" homedir)) (file (progn From f4ea7464516b22409f429e98595b97cbf8220f4c Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 19 Dec 2018 13:42:21 -0800 Subject: [PATCH 201/567] cl-make-random-state was not copying its arg Problem reported by Xu Chunyang (Bug#33731). * lisp/emacs-lisp/cl-extra.el (cl-make-random-state): Use copy-sequence, not copy-tree, so that the record is copied. * test/lisp/emacs-lisp/cl-extra-tests.el: (cl-extra-test-cl-make-random-state): New test. --- lisp/emacs-lisp/cl-extra.el | 2 +- test/lisp/emacs-lisp/cl-extra-tests.el | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el index 36b65f97b076..c38b4957fc72 100644 --- a/lisp/emacs-lisp/cl-extra.el +++ b/lisp/emacs-lisp/cl-extra.el @@ -484,7 +484,7 @@ Optional second arg STATE is a random-state object." If STATE is t, return a new state object seeded from the time of day." (unless state (setq state cl--random-state)) (if (cl-random-state-p state) - (copy-tree state t) + (copy-sequence state) (cl--make-random-state (if (integerp state) state (cl--random-time))))) ;; Implementation limits. diff --git a/test/lisp/emacs-lisp/cl-extra-tests.el b/test/lisp/emacs-lisp/cl-extra-tests.el index baad8eb8e670..fe59703530f4 100644 --- a/test/lisp/emacs-lisp/cl-extra-tests.el +++ b/test/lisp/emacs-lisp/cl-extra-tests.el @@ -94,4 +94,9 @@ (should (equal (list lst3 (cdr lst3) (cddr lst3)) (cl-maplist fn3 lst lst2 lst3))))) +(ert-deftest cl-extra-test-cl-make-random-state () + (let ((s (cl-make-random-state))) + ;; Test for Bug#33731. + (should-not (eq s (cl-make-random-state s))))) + ;;; cl-extra-tests.el ends here From 081fb694c3f88e77d4a0e09fba8ce457037b9132 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Thu, 20 Dec 2018 12:21:16 +0000 Subject: [PATCH 202/567] Check result from c-backward-token-2 to avoid infinite loop This fixes bug #33784. * lisp/progmodes/cc-fonts.el (c-get-fontification-context): While moving back over enclosing parentheses, check that c-backward-token-2 actually moves. --- lisp/progmodes/cc-fonts.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index 39d167f01906..2e47bdab5670 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el @@ -1284,8 +1284,8 @@ casts and declarations are fontified. Used on level 2 and higher." (save-excursion (goto-char match-pos) (while - (progn (c-backward-token-2) - (eq (char-after) ?\())) + (and (zerop (c-backward-token-2)) + (eq (char-after) ?\())) (looking-at c-arithmetic-op-regexp))) (cons nil nil)) ;; In a C++ member initialization list. From 85516b8cc8a6c5767ab29917556f5b30b4482b73 Mon Sep 17 00:00:00 2001 From: Terrence Brannon Date: Fri, 7 Dec 2018 22:02:54 +0000 Subject: [PATCH 203/567] Minor copyedits in landmark.el * lisp/obsolete/landmark.el: Fix author's email and commentary. --- lisp/obsolete/landmark.el | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lisp/obsolete/landmark.el b/lisp/obsolete/landmark.el index effea95cd8f2..c4c4c7a20f63 100644 --- a/lisp/obsolete/landmark.el +++ b/lisp/obsolete/landmark.el @@ -2,7 +2,7 @@ ;; Copyright (C) 1996-1997, 2000-2018 Free Software Foundation, Inc. -;; Author: Terrence Brannon (was: ) +;; Author: Terrence Brannon ;; Created: December 16, 1996 - first release to usenet ;; Keywords: games, neural network, adaptive search, chemotaxis ;; Version: 1.0 @@ -36,7 +36,7 @@ ;; the smell of the tree increases, then the weights in the robot's ;; brain are adjusted to encourage this odor-driven behavior in the ;; future. If the smell of the tree decreases, the robots weights are -;; adjusted to discourage a correct move. +;; adjusted to discourage that odor-driven behavior. ;; In laymen's terms, the search space is initially flat. The point ;; of training is to "turn up the edges of the search space" so that @@ -53,6 +53,13 @@ ;; a single move, one moves east,west and south, then both east and ;; west will be improved when they shouldn't +;; The source code was developed as part of a course on Brain Theory +;; and Neural Networks at the University of Southern California. The +;; original problem description and solution appeared in 1981 in the +;; paper "Landmark Learning: An Illustration of Associative +;; Search" authored by Andrew G. Barto and Richard S. Sutton and +;; published to Biological Cybernetics. + ;; Many thanks to Yuri Pryadkin for this ;; concise problem description. From 29310168310e807d289e789a1134df95c366d133 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 22 Dec 2018 14:18:59 +0100 Subject: [PATCH 204/567] ; Cosmetic changes in etc/NEWS --- etc/NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index 043573e3fca0..55bdaf111725 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -52,6 +52,7 @@ often cause crashes. Set it to nil if you really need those fonts. * Changes in Specialized Modes and Packages in Emacs 26.2 ** Dired + +++ *** 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 @@ -171,7 +172,8 @@ changed in Emacs 26.1, in that it didn't consider text inside comments and strings as a potential list. This change is now reverted, and 'thing-at-point' behaves like it did before Emacs 26.1. -To cater to use cases where comments and strings are to be ignored +--- +** To cater to use cases where comments and strings are to be ignored when looking for a list, the function 'list-at-point' now takes an optional argument to do so. From 24ddea074a2e61f7accde60cdf941ba67b1ce82a Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Sat, 22 Dec 2018 17:14:36 +0100 Subject: [PATCH 205/567] Improve process doc. with respect to handling of large input (Bug#33191) * src/process.c (Fprocess_send_region, Fprocess_send_string): Document that process input longer than the process input buffer may be split into bunches. Remove an outdated reference to a 500 character split boundary. * doc/lispref/processes.texi (Asynchronous Processes): Remove mention of "stray character injections" in PTY processes. See also the comment about ICANON in src/sysdep.c, function child_setup_tty. --- doc/lispref/processes.texi | 7 +++---- src/process.c | 15 +++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index e7d61bd5faa0..623be09cc633 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -604,10 +604,9 @@ these features. However, for subprocesses used by Lisp programs for internal purposes (i.e., no user interaction with the subprocess is required), where significant amounts of data need to be exchanged between the subprocess and the Lisp program, it is often better to use -a pipe, because pipes are more efficient, and because they are immune -to stray character injections that ptys introduce for large (around -500 byte) messages. Also, the total number of ptys is limited on many -systems, and it is good not to waste them unnecessarily. +a pipe, because pipes are more efficient. Also, the total number of +ptys is limited on many systems, and it is good not to waste them +unnecessarily. @defun make-process &rest args This function is the basic low-level primitive for starting diff --git a/src/process.c b/src/process.c index b0a327229c6a..e306b2ae9eca 100644 --- a/src/process.c +++ b/src/process.c @@ -6456,9 +6456,11 @@ DEFUN ("process-send-region", Fprocess_send_region, Sprocess_send_region, PROCESS may be a process, a buffer, the name of a process or buffer, or nil, indicating the current buffer's process. Called from program, takes three arguments, PROCESS, START and END. -If the region is more than 500 characters long, -it is sent in several bunches. This may happen even for shorter regions. -Output from processes can arrive in between bunches. +If the region is larger than the input buffer of the process (the +length of which depends on the process connection type and the +operating system), it is sent in several bunches. This may happen +even for shorter regions. Output from processes can arrive in between +bunches. If PROCESS is a non-blocking network process that hasn't been fully set up yet, this function will block until socket setup has completed. */) @@ -6489,9 +6491,10 @@ DEFUN ("process-send-string", Fprocess_send_string, Sprocess_send_string, doc: /* Send PROCESS the contents of STRING as input. PROCESS may be a process, a buffer, the name of a process or buffer, or nil, indicating the current buffer's process. -If STRING is more than 500 characters long, -it is sent in several bunches. This may happen even for shorter strings. -Output from processes can arrive in between bunches. +If STRING is larger than the input buffer of the process (the length +of which depends on the process connection type and the operating +system), it is sent in several bunches. This may happen even for +shorter strings. Output from processes can arrive in between bunches. If PROCESS is a non-blocking network process that hasn't been fully set up yet, this function will block until socket setup has completed. */) From 0f9be72701b5cf03a5b1162c4bce2776a5d2ba81 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sun, 23 Dec 2018 09:04:37 +0100 Subject: [PATCH 206/567] Clarify thread switching while waiting for process output * doc/lispref/threads.texi (Threads): Clarify, that thread switching happens when waiting for process output from asynchronous processes. --- doc/lispref/threads.texi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/lispref/threads.texi b/doc/lispref/threads.texi index ddeb2e923fce..69f89c32bf16 100644 --- a/doc/lispref/threads.texi +++ b/doc/lispref/threads.texi @@ -17,9 +17,9 @@ correct programs should not rely on cooperative threading. Currently, thread switching will occur upon explicit request via @code{thread-yield}, when waiting for keyboard input or for process -output (e.g., during @code{accept-process-output}), or during blocking -operations relating to threads, such as mutex locking or -@code{thread-join}. +output from asynchronous processes (e.g., during +@code{accept-process-output}), or during blocking operations relating +to threads, such as mutex locking or @code{thread-join}. Emacs Lisp provides primitives to create and control threads, and also to create and control mutexes and condition variables, useful for From 9578c2aa2201642e6846b0d09c14e72bc3225d09 Mon Sep 17 00:00:00 2001 From: Stephen Leake Date: Sun, 23 Dec 2018 10:23:26 -0800 Subject: [PATCH 207/567] Fix a simple bug in display-buffer-use-some-frame * lisp/window.el (display-buffer-use-some-frame): Simplify the predicate, fix TYPE arg to window--display-buffer. --- lisp/window.el | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lisp/window.el b/lisp/window.el index f252b0e041ae..d40e6c5c8115 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -7114,9 +7114,7 @@ that allows the selected frame)." (or (cdr (assq 'frame-predicate alist)) (lambda (frame) (and (not (eq frame (selected-frame))) - (not (window-dedicated-p - (or (get-lru-window frame) - (frame-first-window frame)))))))) + (get-lru-window frame))))) (frame (car (filtered-frame-list predicate))) (window (and frame @@ -7125,7 +7123,7 @@ that allows the selected frame)." (when window (prog1 (window--display-buffer - buffer window 'frame alist display-buffer-mark-dedicated) + buffer window 'reuse alist display-buffer-mark-dedicated) (unless (cdr (assq 'inhibit-switch-frame alist)) (window--maybe-raise-frame frame)))))) From c9fdd1b4965ebd02aa408f878320c4955f5e2cc7 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 27 Dec 2018 12:52:45 -0800 Subject: [PATCH 208/567] Improve accept-process-process doc * doc/lispref/processes.texi (Accepting Output): * src/process.c (Faccept_process_output): Document that (accept-process-output P) can return non-nil even after P has exited, and that it can return nil even if P is still running (Bug#33839). --- doc/lispref/processes.texi | 7 +++++-- src/process.c | 7 ++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 623be09cc633..2aca7f82a1a2 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -1795,7 +1795,8 @@ until output arrives from a process. This function allows Emacs to read pending output from processes. The output is given to their filter functions. If @var{process} is non-@code{nil} then this function does not return until some output -has been received from @var{process}. +has been received from @var{process} or @var{process} has closed the +connection. The arguments @var{seconds} and @var{millisec} let you specify timeout periods. The former specifies a period measured in seconds and the @@ -1820,7 +1821,9 @@ speech synthesis. The function @code{accept-process-output} returns non-@code{nil} if it got output from @var{process}, or from any process if @var{process} is -@code{nil}. It returns @code{nil} if the timeout expired before output +@code{nil}; this can occur even after a process has exited if the +corresponding connection contains buffered data. The function returns +@code{nil} if the timeout expired or the connection was closed before output arrived. @end defun diff --git a/src/process.c b/src/process.c index e306b2ae9eca..4dafee8cbed1 100644 --- a/src/process.c +++ b/src/process.c @@ -4581,8 +4581,8 @@ DEFUN ("accept-process-output", Faccept_process_output, Saccept_process_output, 0, 4, 0, doc: /* Allow any pending output from subprocesses to be read by Emacs. It is given to their filter functions. -Optional argument PROCESS means do not return until output has been -received from PROCESS. +Optional argument PROCESS means to return only after output is +received from PROCESS or PROCESS closes the connection. Optional second argument SECONDS and third argument MILLISEC specify a timeout; return after that much time even if there is @@ -4594,7 +4594,8 @@ If optional fourth argument JUST-THIS-ONE is non-nil, accept output from PROCESS only, suspending reading output from other processes. If JUST-THIS-ONE is an integer, don't run any timers either. Return non-nil if we received any output from PROCESS (or, if PROCESS -is nil, from any process) before the timeout expired. */) +is nil, from any process) before the timeout expired or the +corresponding connection was closed. */) (Lisp_Object process, Lisp_Object seconds, Lisp_Object millisec, Lisp_Object just_this_one) { From 0c524597b31ae3a948b4fa70014cd3a56fe1fd79 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 28 Dec 2018 16:28:51 +0200 Subject: [PATCH 209/567] Fix commentary in dispnew.c * src/dispnew.c (buffer_posn_from_coords): Fix inaccuracies in the commentary. --- src/dispnew.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/dispnew.c b/src/dispnew.c index d3a31967ae0f..dc5fb31485e8 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -5097,13 +5097,15 @@ update_frame_line (struct frame *f, int vpos, bool updating_menu_p) ***********************************************************************/ /* Determine what's under window-relative pixel position (*X, *Y). - Return the OBJECT (string or buffer) that's there. + Return the object (string or buffer) that's there. Return in *POS the position in that object. Adjust *X and *Y to character positions. + If an image is shown at the specified position, return + in *OBJECT its image-spec. Return in *DX and *DY the pixel coordinates of the click, - relative to the top left corner of OBJECT, or relative to + relative to the top left corner of object, or relative to the top left corner of the character glyph at (*X, *Y) - if OBJECT is nil. + if the object at (*X, *Y) is nil. Return WIDTH and HEIGHT of the object at (*X, *Y), or zero if the coordinates point to an empty area of the display. */ From a731c563a1cbb425e143bd0c60905f8aebc4ca1a Mon Sep 17 00:00:00 2001 From: Alan Third Date: Thu, 27 Dec 2018 16:23:32 +0000 Subject: [PATCH 210/567] Fix NS fringe bitmap drawing bug (bug#33864) * src/nsterm.m (ns_draw_fringe_bitmap): Check the rectangle to clear correctly. --- src/nsterm.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nsterm.m b/src/nsterm.m index 893bb1b4414b..98a333d53ad2 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -2919,7 +2919,7 @@ so some key presses (TAB) are swallowed by the system. */ /* Work out the rectangle we will need to clear. Because we're compositing rather than blitting, we need to clear the area under the image regardless of anything else. */ - if (!p->overlay_p) + if (p->bx >= 0 && !p->overlay_p) { clearRect = NSMakeRect (p->bx, p->by, p->nx, p->ny); clearRect = NSUnionRect (clearRect, imageRect); From 822a2d039f7f411e1e41160b163cf24752aea971 Mon Sep 17 00:00:00 2001 From: Drew Adams Date: Mon, 3 Dec 2018 12:49:39 -0800 Subject: [PATCH 211/567] Fix :type 'group' in defcustom * lisp/wid-edit.el (group): Fix the :format spec. (Bug#33566) --- lisp/wid-edit.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index bee7f8069ee1..29a7a44f2aa4 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el @@ -2746,7 +2746,7 @@ Return an alist of (TYPE MATCH)." "A widget which groups other widgets inside." :convert-widget 'widget-types-convert-widget :copy 'widget-types-copy - :format "%v" + :format ":\n%v" :value-create 'widget-group-value-create :value-get 'widget-editable-list-value-get :default-get 'widget-group-default-get From 7a60a4f449da800e624cac67d590cd128820aae2 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 29 Dec 2018 10:15:50 +0200 Subject: [PATCH 212/567] Fix remote directories in Eshell on MS-Windows * lisp/files.el (cd): Support remote directory names on MS-Windows. (Bug#33791) --- lisp/files.el | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lisp/files.el b/lisp/files.el index eb09a7c83f56..0b82c9433475 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -801,9 +801,16 @@ The path separator is colon in GNU and GNU-like systems." (setq cd-path (or (parse-colon-path (getenv "CDPATH")) (list "./")))) (cd-absolute - (or (locate-file dir cd-path nil - (lambda (f) (and (file-directory-p f) 'dir-ok))) - (error "No such directory found via CDPATH environment variable")))) + (or + ;; locate-file doesn't support remote file names, so detect them + ;; and support them here by hand. + (and (file-remote-p (expand-file-name dir)) + (file-name-absolute-p (expand-file-name dir)) + (file-accessible-directory-p (expand-file-name dir)) + (expand-file-name dir)) + (locate-file dir cd-path nil + (lambda (f) (and (file-directory-p f) 'dir-ok))) + (error "No such directory found via CDPATH environment variable")))) (defun directory-files-recursively (dir regexp &optional include-directories) "Return list of all files under DIR that have file names matching REGEXP. From 3abebeb8c3047092763f2d4a61fe7dfc659cd1bf Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 29 Dec 2018 11:47:40 +0200 Subject: [PATCH 213/567] * lisp/files.el (cd): Fix last change. (Bug#33791) --- lisp/files.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/files.el b/lisp/files.el index 0b82c9433475..7794f398cf98 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -805,7 +805,6 @@ The path separator is colon in GNU and GNU-like systems." ;; locate-file doesn't support remote file names, so detect them ;; and support them here by hand. (and (file-remote-p (expand-file-name dir)) - (file-name-absolute-p (expand-file-name dir)) (file-accessible-directory-p (expand-file-name dir)) (expand-file-name dir)) (locate-file dir cd-path nil From de7644d8d8b09fc294fe36ed2162c78a494beccb Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Thu, 6 Sep 2018 12:16:00 +0200 Subject: [PATCH 214/567] Fix Bug#31704. Do not merge * lisp/eshell/esh-proc.el (eshell-gather-process-output): Do not let `expand-file-name' prefix remote file names with MS Windows volume letter. * lisp/net/tramp.el (tramp-eshell-directory-change): Use `path-separator' as it does eshell. (Bug#31704) --- lisp/eshell/esh-proc.el | 7 +++---- lisp/net/tramp.el | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el index 94401c5daa52..ee74762193d7 100644 --- a/lisp/eshell/esh-proc.el +++ b/lisp/eshell/esh-proc.el @@ -279,11 +279,10 @@ See `eshell-needs-pipe'." (let ((process-connection-type (unless (eshell-needs-pipe-p command) process-connection-type)) - (command (file-local-name command))) + ;; `start-process' can't deal with relative filenames. + (command (file-local-name (expand-file-name command)))) (apply 'start-file-process - (file-name-nondirectory command) nil - ;; `start-process' can't deal with relative filenames. - (append (list (expand-file-name command)) args)))) + (file-name-nondirectory command) nil command args))) (eshell-record-process-object proc) (set-process-buffer proc (current-buffer)) (if (eshell-interactive-output-p) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 5fa9f9a44d4a..aa125cde6d57 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -4583,7 +4583,7 @@ Only works for Bourne-like shells." (tramp-get-connection-property (tramp-get-connection-process v) "remote-path" nil) (tramp-get-connection-property v "remote-path" nil)) - ":")) + path-separator)) (getenv "PATH")))) (eval-after-load "esh-util" From 3c83c9ed66e4989e7633bc3da48ae4b2de81166d Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 29 Dec 2018 11:52:56 +0100 Subject: [PATCH 215/567] Fix Bug#31704. Do not merge * lisp/net/tramp.el (tramp-eshell-directory-change): Use `path-separator' as it does eshell. (Bug#31704) --- lisp/net/tramp.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index aa125cde6d57..5302659b32f6 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -4580,6 +4580,7 @@ Only works for Bourne-like shells." (or ;; When `tramp-own-remote-path' is in `tramp-remote-path', ;; the remote path is only set in the session cache. + ;; Use `path-separator' as it does eshell. (tramp-get-connection-property (tramp-get-connection-process v) "remote-path" nil) (tramp-get-connection-property v "remote-path" nil)) From 11f0635c199c97762b461e963a28eff7fc9aea97 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 29 Dec 2018 11:57:25 +0100 Subject: [PATCH 216/567] ; Remove comment in esh-proc.el --- lisp/eshell/esh-proc.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el index ee74762193d7..97170eb04b7b 100644 --- a/lisp/eshell/esh-proc.el +++ b/lisp/eshell/esh-proc.el @@ -279,7 +279,6 @@ See `eshell-needs-pipe'." (let ((process-connection-type (unless (eshell-needs-pipe-p command) process-connection-type)) - ;; `start-process' can't deal with relative filenames. (command (file-local-name (expand-file-name command)))) (apply 'start-file-process (file-name-nondirectory command) nil command args))) From 2e8825d6c55409c15749b12dacc1f49f9c8783c7 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 29 Dec 2018 17:34:57 +0200 Subject: [PATCH 217/567] Improve documentation of 'file-local-name' and related APIs * doc/lispref/files.texi (Unique File Names) (Magic File Names, File Name Expansion): Improve documentation of the "local part" of a remote file name. * doc/lispref/processes.texi (Synchronous Processes) (Asynchronous Processes): State explicitly that program and file names passed to functions that start remote processes need to be relative or obtained by 'file-local-name'. * lisp/files.el (file-local-name): * lisp/simple.el (start-file-process, process-file): Improve the documentation of the "local part" of a remote file name, and its use in APIs that start remote processes. --- doc/lispref/files.texi | 31 ++++++++++++++++++++++--------- doc/lispref/processes.texi | 11 +++++++++-- lisp/files.el | 5 ++++- lisp/simple.el | 16 +++++++++++----- 4 files changed, 46 insertions(+), 17 deletions(-) diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index c434336d5a60..6364289b6903 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi @@ -2519,9 +2519,9 @@ with @samp{/:}. @defmac file-name-quote name This macro adds the quotation prefix @samp{/:} to the file @var{name}. For a local file @var{name}, it prefixes @var{name} with @samp{/:}. -If @var{name} is a remote file name, the local part of @var{name} is -quoted. If @var{name} is already a quoted file name, @var{name} is -returned unchanged. +If @var{name} is a remote file name, the local part of @var{name} +(@pxref{Magic File Names}) is quoted. If @var{name} is already a +quoted file name, @var{name} is returned unchanged. @example @group @@ -2700,8 +2700,8 @@ that remote host. If such a directory does not exist, or @code{temporary-file-directory} is returned. @end defun -In order to extract the local part of the path name from a temporary -file, @code{file-local-name} could be used. +In order to extract the local part of the file's name of a temporary +file, use @code{file-local-name} (@pxref{Magic File Names}). @node File Name Completion @subsection File Name Completion @@ -3382,11 +3382,24 @@ non-magic directory to serve as its current directory, and this function is a good way to come up with one. @end defun +@cindex local part of remote file name @defun file-local-name filename -This function returns the local part of file @var{filename}. For a -remote @var{filename}, it returns a file name which could be used -directly as argument of a remote process. If @var{filename} is local, -this function returns the file name. +This function returns the @dfn{local part} of @var{filename}. This is +the part of the file's name that identifies it on the remote host, and +is typically obtained by removing from the remote file name the parts +that specify the remote host and the method of accessing it. For +example: + +@smallexample +(file-local-name "/ssh:@var{user}@@@var{host}:/foo/bar") + @result{} "/foo/bar" +@end smallexample + +For a remote @var{filename}, this function returns a file name which +could be used directly as an argument of a remote process +(@pxref{Asynchronous Processes}, and @pxref{Synchronous Processes}), +and as the program to run on the remote host. If @var{filename} is +local, this function returns it unchanged. @end defun @defopt remote-file-name-inhibit-cache diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 2aca7f82a1a2..f2b3a9c096b5 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -451,7 +451,9 @@ present in @var{args}. To avoid confusion, it may be best to avoid absolute file names in @var{args}, but rather to specify all file names as relative to @code{default-directory}. The function @code{file-relative-name} is useful for constructing such relative -file names. +file names. Alternatively, you can use @code{file-local-name} +(@pxref{Magic File Names}) to obtain an absolute file name as seen +from the remote host's perspective. @end defun @defvar process-file-side-effects @@ -817,7 +819,12 @@ In the latter case, the local part of @code{default-directory} becomes the working directory of the process. This function does not try to invoke file name handlers for -@var{program} or for the rest of @var{args}. +@var{program} or for the rest of @var{args}. For that reason, if +@var{program} or any of @var{args} use the remote-file syntax +(@pxref{Magic File Names}), they must be converted either to file +names relative to @code{default-directory}, or to names that identify +the files locally on the remote host, by running them through +@code{file-local-name}. Depending on the implementation of the file handler, it might not be possible to apply @code{process-filter} or @code{process-sentinel} to diff --git a/lisp/files.el b/lisp/files.el index 7794f398cf98..e9d40f22f1c6 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -1150,7 +1150,10 @@ consecutive checks. For example: (defun file-local-name (file) "Return the local name component of FILE. -It returns a file name which can be used directly as argument of +This function removes from FILE the specification of the remote host +and the method of accessing the host, leaving only the part that +identifies FILE locally on the remote system. +The returned file name can be used directly as argument of `process-file', `start-file-process', or `shell-command'." (or (file-remote-p file 'localname) file)) diff --git a/lisp/simple.el b/lisp/simple.el index 2116facd58b5..8671fb91747f 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3866,11 +3866,14 @@ interactively, this is t." (process-file shell-file-name nil t nil shell-command-switch command)))) (defun process-file (program &optional infile buffer display &rest args) - "Process files synchronously in a separate process. + "Process files synchronously in a separate process that runs PROGRAM. Similar to `call-process', but may invoke a file handler based on `default-directory'. The current working directory of the subprocess is `default-directory'. +If PROGRAM is a remote file name, it should be processed +by `file-local-name' before passing it to this function. + File names in INFILE and BUFFER are handled normally, but file names in ARGS should be relative to `default-directory', as they are passed to the process verbatim. (This is a difference to @@ -3915,12 +3918,15 @@ Similar to `start-process', but may invoke a file handler based on This handler ought to run PROGRAM, perhaps on the local host, perhaps on a remote host that corresponds to `default-directory'. -In the latter case, the local part of `default-directory' becomes -the working directory of the process. +In the latter case, the local part of `default-directory', the one +produced from it by `file-local-name', becomes the working directory +of the process on the remote host. PROGRAM and PROGRAM-ARGS might be file names. They are not -objects of file handler invocation. File handlers might not -support pty association, if PROGRAM is nil." +objects of file handler invocation, so they need to be obtained +by calling `file-local-name', in case they are remote file names. + +File handlers might not support pty association, if PROGRAM is nil." (let ((fh (find-file-name-handler default-directory 'start-file-process))) (if fh (apply fh 'start-file-process name buffer program program-args) (apply 'start-process name buffer program program-args)))) From 82c82b1c773f441fe424b7ed1757c8eda31814c0 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Sun, 30 Dec 2018 15:21:50 +0100 Subject: [PATCH 218/567] In user manual fix value of default frame height (Bug#33921) * doc/emacs/cmdargs.texi (Window Size X): Fix value of default frame height (Bug#33921). --- doc/emacs/cmdargs.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index 2e2767ccada5..76b1cdf1d8dc 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -1029,7 +1029,7 @@ specifies a window 164 columns wide, enough for two ordinary width windows side by side, and 55 lines tall. The default frame width is 80 characters and the default height is -40 lines. You can omit either the width or the height or both. If +36 lines. You can omit either the width or the height or both. If you start the geometry with an integer, Emacs interprets it as the width. If you start with an @samp{x} followed by an integer, Emacs interprets it as the height. Thus, @samp{81} specifies just the From 2814292570ab937d65c232daccc78fbd8d274a08 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 31 Dec 2018 17:52:01 +0200 Subject: [PATCH 219/567] * doc/man/emacs.1.in: Fix value of default frame height. (Bug#33921) --- doc/man/emacs.1.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/man/emacs.1.in b/doc/man/emacs.1.in index e332fb45c7bc..62afec653781 100644 --- a/doc/man/emacs.1.in +++ b/doc/man/emacs.1.in @@ -279,8 +279,8 @@ window's width, height, and position as specified. The geometry specification is in the standard X format; see .BR X (7) for more information. -The width and height are specified in characters; the default is -80 by 24. +The width and height are specified in characters; the default for GUI +frames is 80 by 36. See the Emacs manual, section "Options for Window Size and Position", for information on how window sizes interact with selecting or deselecting the tool bar and menu bar. From 26bed8ba10eeaf0a340a8d0d760c5578dddec867 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 1 Jan 2019 00:59:58 +0000 Subject: [PATCH 220/567] Update copyright year to 2019 Run 'TZ=UTC0 admin/update-copyright $(git ls-files)'. --- .gitattributes | 2 +- .gitignore | 2 +- .gitlab-ci.yml | 2 +- ChangeLog.1 | 2 +- ChangeLog.2 | 2 +- ChangeLog.3 | 2 +- GNUmakefile | 2 +- INSTALL | 2 +- INSTALL.REPO | 2 +- Makefile.in | 2 +- README | 2 +- admin/ChangeLog.1 | 2 +- admin/README | 2 +- admin/admin.el | 2 +- admin/alloc-colors.c | 2 +- admin/authors.el | 2 +- admin/build-configs | 2 +- admin/bzrmerge.el | 2 +- admin/charsets/Makefile.in | 2 +- admin/charsets/mapconv | 2 +- admin/charsets/mapfiles/README | 2 +- admin/cus-test.el | 2 +- admin/diff-tar-files | 2 +- admin/find-gc.el | 2 +- admin/gitmerge.el | 2 +- admin/grammars/Makefile.in | 2 +- admin/grammars/c.by | 2 +- admin/grammars/grammar.wy | 2 +- admin/grammars/java-tags.wy | 2 +- admin/grammars/js.wy | 2 +- admin/grammars/make.by | 2 +- admin/grammars/python.wy | 2 +- admin/grammars/scheme.by | 2 +- admin/grammars/srecode-template.wy | 2 +- admin/last-chance.el | 2 +- admin/make-emacs | 2 +- admin/make-manuals | 2 +- admin/merge-gnulib | 2 +- admin/merge-pkg-config | 2 +- admin/notes/copyright | 2 +- admin/notes/font-backend | 2 +- admin/notes/hydra | 2 +- admin/notes/multi-tty | 2 +- admin/notes/unicode | 2 +- admin/notes/www | 2 +- admin/nt/README-UNDUMP.W32 | 2 +- admin/nt/README-ftp-server | 2 +- admin/nt/dist-build/build-dep-zips.py | 2 +- admin/nt/dist-build/build-zips.sh | 2 +- admin/quick-install-emacs | 2 +- admin/unidata/Makefile.in | 2 +- admin/unidata/blocks.awk | 2 +- admin/unidata/unidata-gen.el | 2 +- admin/unidata/uvs.el | 2 +- admin/update-copyright | 2 +- admin/update_autogen | 2 +- admin/upload-manuals | 2 +- autogen.sh | 2 +- build-aux/config.guess | 2 +- build-aux/config.sub | 2 +- build-aux/git-hooks/commit-msg | 2 +- build-aux/git-hooks/pre-commit | 2 +- build-aux/gitlog-to-changelog | 2 +- build-aux/gitlog-to-emacslog | 2 +- build-aux/make-info-dir | 2 +- build-aux/move-if-change | 2 +- build-aux/msys-to-w32 | 2 +- build-aux/update-copyright | 2 +- build-aux/update-subdirs | 2 +- configure.ac | 2 +- doc/emacs/ChangeLog.1 | 2 +- doc/emacs/Makefile.in | 2 +- doc/emacs/abbrevs.texi | 2 +- doc/emacs/ack.texi | 2 +- doc/emacs/anti.texi | 2 +- doc/emacs/arevert-xtra.texi | 2 +- doc/emacs/basic.texi | 2 +- doc/emacs/buffers.texi | 2 +- doc/emacs/building.texi | 2 +- doc/emacs/cal-xtra.texi | 2 +- doc/emacs/calendar.texi | 2 +- doc/emacs/cmdargs.texi | 2 +- doc/emacs/commands.texi | 2 +- doc/emacs/custom.texi | 2 +- doc/emacs/dired-xtra.texi | 2 +- doc/emacs/dired.texi | 2 +- doc/emacs/display.texi | 2 +- doc/emacs/emerge-xtra.texi | 2 +- doc/emacs/entering.texi | 2 +- doc/emacs/files.texi | 2 +- doc/emacs/fixit.texi | 2 +- doc/emacs/fortran-xtra.texi | 2 +- doc/emacs/frames.texi | 2 +- doc/emacs/glossary.texi | 2 +- doc/emacs/gnu.texi | 2 +- doc/emacs/help.texi | 2 +- doc/emacs/indent.texi | 2 +- doc/emacs/killing.texi | 2 +- doc/emacs/kmacro.texi | 2 +- doc/emacs/m-x.texi | 2 +- doc/emacs/macos.texi | 2 +- doc/emacs/maintaining.texi | 2 +- doc/emacs/mark.texi | 2 +- doc/emacs/mini.texi | 2 +- doc/emacs/misc.texi | 2 +- doc/emacs/modes.texi | 2 +- doc/emacs/msdos-xtra.texi | 2 +- doc/emacs/msdos.texi | 2 +- doc/emacs/mule.texi | 2 +- doc/emacs/package.texi | 2 +- doc/emacs/picture-xtra.texi | 2 +- doc/emacs/programs.texi | 2 +- doc/emacs/regs.texi | 2 +- doc/emacs/rmail.texi | 2 +- doc/emacs/screen.texi | 2 +- doc/emacs/search.texi | 2 +- doc/emacs/sending.texi | 2 +- doc/emacs/text.texi | 2 +- doc/emacs/trouble.texi | 2 +- doc/emacs/vc-xtra.texi | 2 +- doc/emacs/vc1-xtra.texi | 2 +- doc/emacs/windows.texi | 2 +- doc/emacs/xresources.texi | 2 +- doc/lispintro/ChangeLog.1 | 2 +- doc/lispintro/Makefile.in | 2 +- doc/lispintro/README | 2 +- doc/lispintro/cons-1.eps | 2 +- doc/lispintro/cons-2.eps | 2 +- doc/lispintro/cons-2a.eps | 2 +- doc/lispintro/cons-3.eps | 2 +- doc/lispintro/cons-4.eps | 2 +- doc/lispintro/cons-5.eps | 2 +- doc/lispintro/drawers.eps | 2 +- doc/lispintro/lambda-1.eps | 2 +- doc/lispintro/lambda-2.eps | 2 +- doc/lispintro/lambda-3.eps | 2 +- doc/lispref/ChangeLog.1 | 2 +- doc/lispref/Makefile.in | 2 +- doc/lispref/README | 2 +- doc/lispref/abbrevs.texi | 2 +- doc/lispref/anti.texi | 2 +- doc/lispref/back.texi | 2 +- doc/lispref/backups.texi | 2 +- doc/lispref/buffers.texi | 2 +- doc/lispref/commands.texi | 2 +- doc/lispref/compile.texi | 2 +- doc/lispref/control.texi | 2 +- doc/lispref/customize.texi | 2 +- doc/lispref/debugging.texi | 2 +- doc/lispref/display.texi | 2 +- doc/lispref/edebug.texi | 2 +- doc/lispref/errors.texi | 2 +- doc/lispref/eval.texi | 2 +- doc/lispref/files.texi | 2 +- doc/lispref/frames.texi | 2 +- doc/lispref/functions.texi | 2 +- doc/lispref/hash.texi | 2 +- doc/lispref/help.texi | 2 +- doc/lispref/hooks.texi | 2 +- doc/lispref/internals.texi | 2 +- doc/lispref/intro.texi | 2 +- doc/lispref/keymaps.texi | 2 +- doc/lispref/lay-flat.texi | 2 +- doc/lispref/lists.texi | 2 +- doc/lispref/loading.texi | 2 +- doc/lispref/macros.texi | 2 +- doc/lispref/maps.texi | 2 +- doc/lispref/markers.texi | 2 +- doc/lispref/minibuf.texi | 2 +- doc/lispref/modes.texi | 2 +- doc/lispref/nonascii.texi | 2 +- doc/lispref/numbers.texi | 2 +- doc/lispref/objects.texi | 2 +- doc/lispref/os.texi | 2 +- doc/lispref/package.texi | 2 +- doc/lispref/positions.texi | 2 +- doc/lispref/processes.texi | 2 +- doc/lispref/records.texi | 2 +- doc/lispref/searching.texi | 2 +- doc/lispref/sequences.texi | 2 +- doc/lispref/streams.texi | 2 +- doc/lispref/strings.texi | 2 +- doc/lispref/symbols.texi | 2 +- doc/lispref/syntax.texi | 2 +- doc/lispref/text.texi | 2 +- doc/lispref/threads.texi | 2 +- doc/lispref/tips.texi | 2 +- doc/lispref/two-volume-cross-refs.txt | 2 +- doc/lispref/two-volume.make | 2 +- doc/lispref/variables.texi | 2 +- doc/lispref/windows.texi | 2 +- doc/man/ChangeLog.1 | 2 +- doc/man/ebrowse.1 | 2 +- doc/man/emacs.1.in | 2 +- doc/man/etags.1 | 2 +- doc/misc/ChangeLog.1 | 2 +- doc/misc/Makefile.in | 2 +- doc/misc/efaq-w32.texi | 2 +- doc/misc/gnus-faq.texi | 2 +- doc/misc/gnus-news.el | 2 +- doc/misc/gnus-news.texi | 2 +- doc/misc/htmlfontify.texi | 2 +- doc/misc/ido.texi | 2 +- doc/misc/sem-user.texi | 2 +- doc/misc/texinfo.tex | 6 ++---- doc/misc/todo-mode.texi | 2 +- doc/misc/trampver.texi | 2 +- etc/CALC-NEWS | 2 +- etc/ChangeLog.1 | 2 +- etc/DEBUG | 2 +- etc/DISTRIB | 2 +- etc/ERC-NEWS | 2 +- etc/ETAGS.EBNF | 2 +- etc/ETAGS.README | 2 +- etc/GNUS-NEWS | 2 +- etc/HELLO | 2 +- etc/MACHINES | 2 +- etc/MH-E-NEWS | 2 +- etc/NEWS | 2 +- etc/NEWS.1-17 | 2 +- etc/NEWS.18 | 2 +- etc/NEWS.19 | 2 +- etc/NEWS.20 | 2 +- etc/NEWS.21 | 2 +- etc/NEWS.22 | 2 +- etc/NEWS.23 | 2 +- etc/NEWS.24 | 2 +- etc/NEWS.25 | 2 +- etc/NEXTSTEP | 2 +- etc/NXML-NEWS | 2 +- etc/ORG-NEWS | 2 +- etc/PROBLEMS | 2 +- etc/README | 2 +- etc/TERMS | 2 +- etc/TODO | 2 +- etc/charsets/README | 2 +- etc/compilation.txt | 2 +- etc/edt-user.el | 2 +- etc/emacs-buffer.gdb | 2 +- etc/emacs.appdata.xml | 2 +- etc/enriched.txt | 2 +- etc/forms/forms-d2.el | 2 +- etc/gnus-tut.txt | 2 +- etc/grep.txt | 2 +- etc/images/README | 2 +- etc/images/custom/README | 2 +- etc/images/ezimage/README | 2 +- etc/images/gnus/README | 2 +- etc/images/gnus/gnus.svg | 2 +- etc/images/gud/README | 2 +- etc/images/icons/README | 2 +- .../icons/hicolor/scalable/apps/emacs.svg | 2 +- .../icons/hicolor/scalable/apps/emacs23.svg | 2 +- .../scalable/mimetypes/emacs-document23.svg | 2 +- etc/images/mpc/README | 2 +- etc/images/newsticker/README | 2 +- etc/images/smilies/README | 2 +- etc/images/smilies/grayscale/README | 2 +- etc/images/smilies/medium/README | 2 +- etc/images/splash.svg | 2 +- etc/images/tree-widget/default/README | 2 +- etc/images/tree-widget/folder/README | 2 +- etc/org/README | 2 +- etc/ps-prin0.ps | Bin 5326 -> 5326 bytes etc/ps-prin1.ps | Bin 23235 -> 23235 bytes etc/refcards/Makefile | 2 +- etc/refcards/README | 2 +- etc/refcards/calccard.tex | 2 +- etc/refcards/cs-dired-ref.tex | 2 +- etc/refcards/cs-refcard.tex | 2 +- etc/refcards/cs-survival.tex | 2 +- etc/refcards/de-refcard.tex | 2 +- etc/refcards/dired-ref.tex | 2 +- etc/refcards/emacsver.tex.in | 2 +- etc/refcards/fr-dired-ref.tex | 2 +- etc/refcards/fr-refcard.tex | 2 +- etc/refcards/fr-survival.tex | 2 +- etc/refcards/gnus-logo.eps | 2 +- etc/refcards/orgcard.tex | 2 +- etc/refcards/pdflayout.sty | 2 +- etc/refcards/pl-refcard.tex | 2 +- etc/refcards/pt-br-refcard.tex | 2 +- etc/refcards/refcard.tex | 2 +- etc/refcards/ru-refcard.tex | 2 +- etc/refcards/sk-dired-ref.tex | 2 +- etc/refcards/sk-refcard.tex | 2 +- etc/refcards/sk-survival.tex | 2 +- etc/refcards/survival.tex | 2 +- etc/refcards/vipcard.tex | 2 +- etc/refcards/viperCard.tex | 2 +- etc/schema/locate.rnc | 2 +- etc/schema/relaxng.rnc | 2 +- etc/schema/schemas.xml | 2 +- etc/ses-example.ses | 2 +- etc/srecode/c.srt | 2 +- etc/srecode/cpp.srt | 2 +- etc/srecode/default.srt | 2 +- etc/srecode/doc-cpp.srt | 2 +- etc/srecode/doc-default.srt | 2 +- etc/srecode/doc-java.srt | 2 +- etc/srecode/ede-autoconf.srt | 2 +- etc/srecode/ede-make.srt | 2 +- etc/srecode/el.srt | 2 +- etc/srecode/getset-cpp.srt | 2 +- etc/srecode/java.srt | 2 +- etc/srecode/make.srt | 2 +- etc/srecode/template.srt | 2 +- etc/srecode/test.srt | 2 +- etc/srecode/texi.srt | 2 +- etc/srecode/wisent.srt | 2 +- etc/themes/adwaita-theme.el | 2 +- etc/themes/deeper-blue-theme.el | 2 +- etc/themes/dichromacy-theme.el | 2 +- etc/themes/leuven-theme.el | 2 +- etc/themes/light-blue-theme.el | 2 +- etc/themes/manoj-dark-theme.el | 2 +- etc/themes/misterioso-theme.el | 2 +- etc/themes/tango-dark-theme.el | 2 +- etc/themes/tango-theme.el | 2 +- etc/themes/tsdh-dark-theme.el | 2 +- etc/themes/tsdh-light-theme.el | 2 +- etc/themes/wheatgrass-theme.el | 2 +- etc/themes/whiteboard-theme.el | 2 +- etc/themes/wombat-theme.el | 2 +- etc/tutorials/TUTORIAL | 2 +- etc/tutorials/TUTORIAL.bg | 2 +- etc/tutorials/TUTORIAL.cn | 2 +- etc/tutorials/TUTORIAL.cs | 2 +- etc/tutorials/TUTORIAL.de | 2 +- etc/tutorials/TUTORIAL.eo | 2 +- etc/tutorials/TUTORIAL.es | 2 +- etc/tutorials/TUTORIAL.fr | 2 +- etc/tutorials/TUTORIAL.it | 2 +- etc/tutorials/TUTORIAL.ja | 2 +- etc/tutorials/TUTORIAL.ko | 2 +- etc/tutorials/TUTORIAL.nl | 2 +- etc/tutorials/TUTORIAL.pl | 2 +- etc/tutorials/TUTORIAL.pt_BR | 2 +- etc/tutorials/TUTORIAL.ro | 2 +- etc/tutorials/TUTORIAL.ru | 2 +- etc/tutorials/TUTORIAL.sk | 2 +- etc/tutorials/TUTORIAL.sl | 2 +- etc/tutorials/TUTORIAL.sv | 2 +- etc/tutorials/TUTORIAL.th | 2 +- etc/tutorials/TUTORIAL.zh | 2 +- leim/ChangeLog.1 | 2 +- leim/Makefile.in | 2 +- leim/README | 2 +- leim/leim-ext.el | 2 +- lib-src/ChangeLog.1 | 2 +- lib-src/Makefile.in | 2 +- lib-src/ebrowse.c | 2 +- lib-src/emacsclient.c | 2 +- lib-src/etags.c | 2 +- lib-src/hexl.c | 2 +- lib-src/make-docfile.c | 2 +- lib-src/movemail.c | 2 +- lib-src/ntlib.c | 2 +- lib-src/ntlib.h | 2 +- lib-src/pop.c | 2 +- lib-src/pop.h | 2 +- lib-src/profile.c | 2 +- lib-src/rcs2log | 2 +- lib-src/update-game-score.c | 2 +- lib/Makefile.in | 2 +- lib/acl-errno-valid.c | 2 +- lib/acl-internal.c | 2 +- lib/acl-internal.h | 2 +- lib/acl.h | 2 +- lib/acl_entries.c | 2 +- lib/alloca.in.h | 4 ++-- lib/allocator.h | 2 +- lib/arg-nonnull.h | 2 +- lib/at-func.c | 2 +- lib/binary-io.c | 2 +- lib/binary-io.h | 3 ++- lib/byteswap.in.h | 2 +- lib/c++defs.h | 2 +- lib/c-ctype.h | 3 ++- lib/c-strcase.h | 2 +- lib/c-strcasecmp.c | 3 ++- lib/c-strncasecmp.c | 3 ++- lib/careadlinkat.c | 4 ++-- lib/careadlinkat.h | 2 +- lib/cloexec.c | 3 ++- lib/cloexec.h | 2 +- lib/close-stream.c | 3 ++- lib/count-leading-zeros.h | 2 +- lib/count-one-bits.h | 2 +- lib/count-trailing-zeros.h | 2 +- lib/diffseq.h | 4 ++-- lib/dirent.in.h | 2 +- lib/dirfd.c | 2 +- lib/dosname.h | 3 ++- lib/dtotimespec.c | 2 +- lib/dup2.c | 3 ++- lib/errno.in.h | 2 +- lib/euidaccess.c | 2 +- lib/execinfo.in.h | 2 +- lib/explicit_bzero.c | 2 +- lib/faccessat.c | 2 +- lib/fcntl.c | 2 +- lib/fcntl.in.h | 2 +- lib/fdatasync.c | 2 +- lib/fdopendir.c | 2 +- lib/filemode.c | 2 +- lib/filemode.h | 4 ++-- lib/filevercmp.c | 2 +- lib/filevercmp.h | 2 +- lib/flexmember.h | 2 +- lib/fpending.c | 4 ++-- lib/fpending.h | 4 ++-- lib/fstatat.c | 2 +- lib/fsync.c | 2 +- lib/ftoastr.c | 2 +- lib/ftoastr.h | 2 +- lib/get-permissions.c | 2 +- lib/getdtablesize.c | 2 +- lib/getgroups.c | 3 ++- lib/getloadavg.c | 4 ++-- lib/getopt-cdefs.in.h | 2 +- lib/getopt-core.h | 2 +- lib/getopt-ext.h | 2 +- lib/getopt-pfx-core.h | 2 +- lib/getopt-pfx-ext.h | 2 +- lib/getopt.c | 2 +- lib/getopt.in.h | 2 +- lib/getopt1.c | 2 +- lib/getopt_int.h | 2 +- lib/gettext.h | 4 ++-- lib/gettime.c | 3 ++- lib/gettimeofday.c | 3 ++- lib/gnulib.mk.in | 2 +- lib/group-member.c | 4 ++-- lib/ignore-value.h | 2 +- lib/intprops.h | 2 +- lib/inttypes.in.h | 2 +- lib/limits.in.h | 2 +- lib/localtime-buffer.c | 3 ++- lib/localtime-buffer.h | 3 ++- lib/lstat.c | 2 +- lib/md5.c | 4 ++-- lib/md5.h | 4 ++-- lib/memrchr.c | 4 ++-- lib/minmax.h | 2 +- lib/mkostemp.c | 2 +- lib/mktime-internal.h | 2 +- lib/mktime.c | 2 +- lib/nstrftime.c | 2 +- lib/open.c | 2 +- lib/openat-priv.h | 2 +- lib/openat-proc.c | 2 +- lib/openat.h | 2 +- lib/pipe2.c | 2 +- lib/pselect.c | 2 +- lib/pthread_sigmask.c | 2 +- lib/putenv.c | 2 +- lib/qcopy-acl.c | 2 +- lib/readlink.c | 2 +- lib/readlinkat.c | 2 +- lib/root-uid.h | 2 +- lib/save-cwd.c | 2 +- lib/save-cwd.h | 2 +- lib/set-permissions.c | 2 +- lib/sha1.c | 3 ++- lib/sha1.h | 2 +- lib/sha256.c | 2 +- lib/sha256.h | 2 +- lib/sha512.c | 2 +- lib/sha512.h | 2 +- lib/sig2str.c | 3 ++- lib/sig2str.h | 2 +- lib/signal.in.h | 2 +- lib/stat-time.h | 2 +- lib/stdalign.in.h | 2 +- lib/stddef.in.h | 2 +- lib/stdint.in.h | 2 +- lib/stdio-impl.h | 2 +- lib/stdio.in.h | 2 +- lib/stdlib.in.h | 3 ++- lib/stpcpy.c | 2 +- lib/strftime.h | 2 +- lib/string.in.h | 2 +- lib/strtoimax.c | 4 ++-- lib/strtol.c | 4 ++-- lib/strtoll.c | 4 ++-- lib/symlink.c | 2 +- lib/sys_select.in.h | 2 +- lib/sys_stat.in.h | 2 +- lib/sys_time.in.h | 2 +- lib/sys_types.in.h | 2 +- lib/tempname.c | 3 ++- lib/tempname.h | 2 +- lib/time-internal.h | 2 +- lib/time.in.h | 2 +- lib/time_r.c | 3 ++- lib/time_rz.c | 2 +- lib/timegm.c | 4 ++-- lib/timespec-add.c | 2 +- lib/timespec-sub.c | 2 +- lib/timespec.h | 2 +- lib/u64.h | 2 +- lib/unistd.in.h | 2 +- lib/unlocked-io.h | 2 +- lib/utimens.c | 2 +- lib/utimens.h | 2 +- lib/verify.h | 2 +- lib/vla.h | 2 +- lib/warn-on-use.h | 2 +- lib/xalloc-oversized.h | 3 ++- lisp/ChangeLog.1 | 2 +- lisp/ChangeLog.10 | 2 +- lisp/ChangeLog.11 | 2 +- lisp/ChangeLog.12 | 2 +- lisp/ChangeLog.13 | 2 +- lisp/ChangeLog.14 | 2 +- lisp/ChangeLog.15 | 2 +- lisp/ChangeLog.16 | 2 +- lisp/ChangeLog.17 | 2 +- lisp/ChangeLog.2 | 2 +- lisp/ChangeLog.3 | 2 +- lisp/ChangeLog.4 | 2 +- lisp/ChangeLog.5 | 2 +- lisp/ChangeLog.6 | 2 +- lisp/ChangeLog.7 | 2 +- lisp/ChangeLog.8 | 2 +- lisp/ChangeLog.9 | 2 +- lisp/Makefile.in | 2 +- lisp/abbrev.el | 2 +- lisp/align.el | 2 +- lisp/allout-widgets.el | 2 +- lisp/allout.el | 2 +- lisp/ansi-color.el | 2 +- lisp/apropos.el | 2 +- lisp/arc-mode.el | 2 +- lisp/array.el | 2 +- lisp/auth-source-pass.el | 2 +- lisp/auth-source.el | 2 +- lisp/autoarg.el | 2 +- lisp/autoinsert.el | 2 +- lisp/autorevert.el | 2 +- lisp/avoid.el | 2 +- lisp/battery.el | 2 +- lisp/bindings.el | 2 +- lisp/bookmark.el | 2 +- lisp/bs.el | 2 +- lisp/buff-menu.el | 2 +- lisp/button.el | 2 +- lisp/calc/calc-aent.el | 2 +- lisp/calc/calc-alg.el | 2 +- lisp/calc/calc-arith.el | 2 +- lisp/calc/calc-bin.el | 2 +- lisp/calc/calc-comb.el | 2 +- lisp/calc/calc-cplx.el | 2 +- lisp/calc/calc-embed.el | 2 +- lisp/calc/calc-ext.el | 2 +- lisp/calc/calc-fin.el | 2 +- lisp/calc/calc-forms.el | 2 +- lisp/calc/calc-frac.el | 2 +- lisp/calc/calc-funcs.el | 2 +- lisp/calc/calc-graph.el | 2 +- lisp/calc/calc-help.el | 2 +- lisp/calc/calc-incom.el | 2 +- lisp/calc/calc-keypd.el | 2 +- lisp/calc/calc-lang.el | 2 +- lisp/calc/calc-macs.el | 2 +- lisp/calc/calc-map.el | 2 +- lisp/calc/calc-math.el | 2 +- lisp/calc/calc-menu.el | 2 +- lisp/calc/calc-misc.el | 2 +- lisp/calc/calc-mode.el | 2 +- lisp/calc/calc-mtx.el | 2 +- lisp/calc/calc-nlfit.el | 2 +- lisp/calc/calc-poly.el | 2 +- lisp/calc/calc-prog.el | 2 +- lisp/calc/calc-rewr.el | 2 +- lisp/calc/calc-rules.el | 2 +- lisp/calc/calc-sel.el | 2 +- lisp/calc/calc-stat.el | 2 +- lisp/calc/calc-store.el | 2 +- lisp/calc/calc-stuff.el | 2 +- lisp/calc/calc-trail.el | 2 +- lisp/calc/calc-undo.el | 2 +- lisp/calc/calc-units.el | 2 +- lisp/calc/calc-vec.el | 2 +- lisp/calc/calc-yank.el | 2 +- lisp/calc/calc.el | 2 +- lisp/calc/calcalg2.el | 2 +- lisp/calc/calcalg3.el | 2 +- lisp/calc/calccomp.el | 2 +- lisp/calc/calcsel2.el | 2 +- lisp/calculator.el | 2 +- lisp/calendar/appt.el | 2 +- lisp/calendar/cal-bahai.el | 2 +- lisp/calendar/cal-china.el | 2 +- lisp/calendar/cal-coptic.el | 2 +- lisp/calendar/cal-dst.el | 2 +- lisp/calendar/cal-french.el | 2 +- lisp/calendar/cal-hebrew.el | 2 +- lisp/calendar/cal-html.el | 2 +- lisp/calendar/cal-islam.el | 2 +- lisp/calendar/cal-iso.el | 2 +- lisp/calendar/cal-julian.el | 2 +- lisp/calendar/cal-mayan.el | 2 +- lisp/calendar/cal-menu.el | 2 +- lisp/calendar/cal-move.el | 2 +- lisp/calendar/cal-persia.el | 2 +- lisp/calendar/cal-tex.el | 2 +- lisp/calendar/cal-x.el | 2 +- lisp/calendar/calendar.el | 2 +- lisp/calendar/diary-lib.el | 2 +- lisp/calendar/holidays.el | 2 +- lisp/calendar/icalendar.el | 2 +- lisp/calendar/lunar.el | 2 +- lisp/calendar/parse-time.el | 2 +- lisp/calendar/solar.el | 2 +- lisp/calendar/time-date.el | 2 +- lisp/calendar/timeclock.el | 2 +- lisp/calendar/todo-mode.el | 2 +- lisp/case-table.el | 2 +- lisp/cdl.el | 2 +- lisp/cedet/ChangeLog.1 | 2 +- lisp/cedet/cedet-cscope.el | 2 +- lisp/cedet/cedet-files.el | 2 +- lisp/cedet/cedet-global.el | 2 +- lisp/cedet/cedet-idutils.el | 2 +- lisp/cedet/cedet.el | 2 +- lisp/cedet/data-debug.el | 2 +- lisp/cedet/ede.el | 2 +- lisp/cedet/ede/auto.el | 2 +- lisp/cedet/ede/autoconf-edit.el | 2 +- lisp/cedet/ede/base.el | 2 +- lisp/cedet/ede/config.el | 2 +- lisp/cedet/ede/cpp-root.el | 2 +- lisp/cedet/ede/custom.el | 2 +- lisp/cedet/ede/detect.el | 2 +- lisp/cedet/ede/dired.el | 2 +- lisp/cedet/ede/emacs.el | 2 +- lisp/cedet/ede/files.el | 2 +- lisp/cedet/ede/generic.el | 2 +- lisp/cedet/ede/linux.el | 2 +- lisp/cedet/ede/locate.el | 2 +- lisp/cedet/ede/make.el | 2 +- lisp/cedet/ede/makefile-edit.el | 2 +- lisp/cedet/ede/pconf.el | 2 +- lisp/cedet/ede/pmake.el | 2 +- lisp/cedet/ede/proj-archive.el | 2 +- lisp/cedet/ede/proj-aux.el | 2 +- lisp/cedet/ede/proj-comp.el | 2 +- lisp/cedet/ede/proj-elisp.el | 2 +- lisp/cedet/ede/proj-info.el | 2 +- lisp/cedet/ede/proj-misc.el | 2 +- lisp/cedet/ede/proj-obj.el | 2 +- lisp/cedet/ede/proj-prog.el | 2 +- lisp/cedet/ede/proj-scheme.el | 2 +- lisp/cedet/ede/proj-shared.el | 2 +- lisp/cedet/ede/proj.el | 2 +- lisp/cedet/ede/project-am.el | 2 +- lisp/cedet/ede/shell.el | 2 +- lisp/cedet/ede/simple.el | 2 +- lisp/cedet/ede/source.el | 2 +- lisp/cedet/ede/speedbar.el | 2 +- lisp/cedet/ede/srecode.el | 2 +- lisp/cedet/ede/system.el | 2 +- lisp/cedet/ede/util.el | 2 +- lisp/cedet/inversion.el | 2 +- lisp/cedet/mode-local.el | 2 +- lisp/cedet/pulse.el | 2 +- lisp/cedet/semantic.el | 2 +- lisp/cedet/semantic/analyze.el | 2 +- lisp/cedet/semantic/analyze/complete.el | 2 +- lisp/cedet/semantic/analyze/debug.el | 2 +- lisp/cedet/semantic/analyze/fcn.el | 2 +- lisp/cedet/semantic/analyze/refs.el | 2 +- lisp/cedet/semantic/bovine.el | 2 +- lisp/cedet/semantic/bovine/c.el | 2 +- lisp/cedet/semantic/bovine/debug.el | 2 +- lisp/cedet/semantic/bovine/el.el | 2 +- lisp/cedet/semantic/bovine/gcc.el | 2 +- lisp/cedet/semantic/bovine/grammar.el | 2 +- lisp/cedet/semantic/bovine/make.el | 2 +- lisp/cedet/semantic/bovine/scm.el | 2 +- lisp/cedet/semantic/chart.el | 2 +- lisp/cedet/semantic/complete.el | 2 +- lisp/cedet/semantic/ctxt.el | 2 +- lisp/cedet/semantic/db-debug.el | 2 +- lisp/cedet/semantic/db-ebrowse.el | 2 +- lisp/cedet/semantic/db-el.el | 2 +- lisp/cedet/semantic/db-file.el | 2 +- lisp/cedet/semantic/db-find.el | 2 +- lisp/cedet/semantic/db-global.el | 2 +- lisp/cedet/semantic/db-javascript.el | 2 +- lisp/cedet/semantic/db-mode.el | 2 +- lisp/cedet/semantic/db-ref.el | 2 +- lisp/cedet/semantic/db-typecache.el | 2 +- lisp/cedet/semantic/db.el | 2 +- lisp/cedet/semantic/debug.el | 2 +- lisp/cedet/semantic/decorate.el | 2 +- lisp/cedet/semantic/decorate/include.el | 2 +- lisp/cedet/semantic/decorate/mode.el | 2 +- lisp/cedet/semantic/dep.el | 2 +- lisp/cedet/semantic/doc.el | 2 +- lisp/cedet/semantic/ede-grammar.el | 2 +- lisp/cedet/semantic/edit.el | 2 +- lisp/cedet/semantic/find.el | 2 +- lisp/cedet/semantic/format.el | 2 +- lisp/cedet/semantic/fw.el | 2 +- lisp/cedet/semantic/grammar-wy.el | 2 +- lisp/cedet/semantic/grammar.el | 2 +- lisp/cedet/semantic/html.el | 2 +- lisp/cedet/semantic/ia-sb.el | 2 +- lisp/cedet/semantic/ia.el | 2 +- lisp/cedet/semantic/idle.el | 2 +- lisp/cedet/semantic/imenu.el | 2 +- lisp/cedet/semantic/java.el | 2 +- lisp/cedet/semantic/lex-spp.el | 2 +- lisp/cedet/semantic/lex.el | 2 +- lisp/cedet/semantic/mru-bookmark.el | 2 +- lisp/cedet/semantic/sb.el | 2 +- lisp/cedet/semantic/scope.el | 2 +- lisp/cedet/semantic/senator.el | 2 +- lisp/cedet/semantic/sort.el | 2 +- lisp/cedet/semantic/symref.el | 2 +- lisp/cedet/semantic/symref/cscope.el | 2 +- lisp/cedet/semantic/symref/filter.el | 2 +- lisp/cedet/semantic/symref/global.el | 2 +- lisp/cedet/semantic/symref/grep.el | 2 +- lisp/cedet/semantic/symref/idutils.el | 2 +- lisp/cedet/semantic/symref/list.el | 2 +- lisp/cedet/semantic/tag-file.el | 2 +- lisp/cedet/semantic/tag-ls.el | 2 +- lisp/cedet/semantic/tag-write.el | 2 +- lisp/cedet/semantic/tag.el | 2 +- lisp/cedet/semantic/texi.el | 2 +- lisp/cedet/semantic/util-modes.el | 2 +- lisp/cedet/semantic/util.el | 2 +- lisp/cedet/semantic/wisent.el | 2 +- lisp/cedet/semantic/wisent/comp.el | 2 +- lisp/cedet/semantic/wisent/grammar.el | 2 +- lisp/cedet/semantic/wisent/java-tags.el | 2 +- lisp/cedet/semantic/wisent/javascript.el | 2 +- lisp/cedet/semantic/wisent/python.el | 2 +- lisp/cedet/semantic/wisent/wisent.el | 2 +- lisp/cedet/srecode.el | 2 +- lisp/cedet/srecode/args.el | 2 +- lisp/cedet/srecode/compile.el | 2 +- lisp/cedet/srecode/cpp.el | 2 +- lisp/cedet/srecode/ctxt.el | 2 +- lisp/cedet/srecode/dictionary.el | 2 +- lisp/cedet/srecode/document.el | 2 +- lisp/cedet/srecode/el.el | 2 +- lisp/cedet/srecode/expandproto.el | 2 +- lisp/cedet/srecode/extract.el | 2 +- lisp/cedet/srecode/fields.el | 2 +- lisp/cedet/srecode/filters.el | 2 +- lisp/cedet/srecode/find.el | 2 +- lisp/cedet/srecode/getset.el | 2 +- lisp/cedet/srecode/insert.el | 2 +- lisp/cedet/srecode/java.el | 2 +- lisp/cedet/srecode/map.el | 2 +- lisp/cedet/srecode/mode.el | 2 +- lisp/cedet/srecode/semantic.el | 2 +- lisp/cedet/srecode/srt-mode.el | 2 +- lisp/cedet/srecode/srt.el | 2 +- lisp/cedet/srecode/table.el | 2 +- lisp/cedet/srecode/template.el | 2 +- lisp/cedet/srecode/texi.el | 2 +- lisp/char-fold.el | 2 +- lisp/chistory.el | 2 +- lisp/cmuscheme.el | 2 +- lisp/color.el | 2 +- lisp/comint.el | 2 +- lisp/completion.el | 2 +- lisp/composite.el | 2 +- lisp/cus-dep.el | 2 +- lisp/cus-edit.el | 2 +- lisp/cus-face.el | 2 +- lisp/cus-start.el | 2 +- lisp/cus-theme.el | 2 +- lisp/custom.el | 2 +- lisp/dabbrev.el | 2 +- lisp/delim-col.el | 2 +- lisp/delsel.el | 2 +- lisp/descr-text.el | 2 +- lisp/desktop.el | 2 +- lisp/dframe.el | 2 +- lisp/dired-aux.el | 2 +- lisp/dired-x.el | 2 +- lisp/dired.el | 2 +- lisp/dirtrack.el | 2 +- lisp/disp-table.el | 2 +- lisp/display-line-numbers.el | 2 +- lisp/dnd.el | 2 +- lisp/doc-view.el | 2 +- lisp/dom.el | 2 +- lisp/dos-fns.el | 2 +- lisp/dos-vars.el | 2 +- lisp/dos-w32.el | 2 +- lisp/double.el | 2 +- lisp/dynamic-setting.el | 2 +- lisp/ebuff-menu.el | 2 +- lisp/echistory.el | 2 +- lisp/ecomplete.el | 2 +- lisp/edmacro.el | 2 +- lisp/ehelp.el | 2 +- lisp/elec-pair.el | 2 +- lisp/electric.el | 2 +- lisp/elide-head.el | 2 +- lisp/emacs-lisp/advice.el | 2 +- lisp/emacs-lisp/autoload.el | 2 +- lisp/emacs-lisp/avl-tree.el | 2 +- lisp/emacs-lisp/backquote.el | 2 +- lisp/emacs-lisp/benchmark.el | 2 +- lisp/emacs-lisp/bindat.el | 2 +- lisp/emacs-lisp/byte-opt.el | 2 +- lisp/emacs-lisp/byte-run.el | 2 +- lisp/emacs-lisp/bytecomp.el | 2 +- lisp/emacs-lisp/cconv.el | 2 +- lisp/emacs-lisp/chart.el | 2 +- lisp/emacs-lisp/check-declare.el | 2 +- lisp/emacs-lisp/checkdoc.el | 2 +- lisp/emacs-lisp/cl-extra.el | 2 +- lisp/emacs-lisp/cl-generic.el | 2 +- lisp/emacs-lisp/cl-indent.el | 2 +- lisp/emacs-lisp/cl-lib.el | 2 +- lisp/emacs-lisp/cl-macs.el | 2 +- lisp/emacs-lisp/cl-print.el | 2 +- lisp/emacs-lisp/cl-seq.el | 2 +- lisp/emacs-lisp/cl.el | 2 +- lisp/emacs-lisp/copyright.el | 2 +- lisp/emacs-lisp/crm.el | 2 +- lisp/emacs-lisp/cursor-sensor.el | 2 +- lisp/emacs-lisp/debug.el | 2 +- lisp/emacs-lisp/derived.el | 2 +- lisp/emacs-lisp/disass.el | 2 +- lisp/emacs-lisp/easy-mmode.el | 2 +- lisp/emacs-lisp/easymenu.el | 2 +- lisp/emacs-lisp/edebug.el | 2 +- lisp/emacs-lisp/eieio-base.el | 2 +- lisp/emacs-lisp/eieio-compat.el | 2 +- lisp/emacs-lisp/eieio-core.el | 2 +- lisp/emacs-lisp/eieio-custom.el | 2 +- lisp/emacs-lisp/eieio-datadebug.el | 2 +- lisp/emacs-lisp/eieio-opt.el | 2 +- lisp/emacs-lisp/eieio-speedbar.el | 2 +- lisp/emacs-lisp/eieio.el | 2 +- lisp/emacs-lisp/eldoc.el | 2 +- lisp/emacs-lisp/elint.el | 2 +- lisp/emacs-lisp/elp.el | 2 +- lisp/emacs-lisp/ert-x.el | 2 +- lisp/emacs-lisp/ert.el | 2 +- lisp/emacs-lisp/ewoc.el | 2 +- lisp/emacs-lisp/find-func.el | 2 +- lisp/emacs-lisp/float-sup.el | 2 +- lisp/emacs-lisp/generator.el | 2 +- lisp/emacs-lisp/generic.el | 2 +- lisp/emacs-lisp/gv.el | 2 +- lisp/emacs-lisp/helper.el | 2 +- lisp/emacs-lisp/inline.el | 2 +- lisp/emacs-lisp/let-alist.el | 2 +- lisp/emacs-lisp/lisp-mnt.el | 2 +- lisp/emacs-lisp/lisp-mode.el | 2 +- lisp/emacs-lisp/lisp.el | 2 +- lisp/emacs-lisp/macroexp.el | 2 +- lisp/emacs-lisp/map-ynp.el | 2 +- lisp/emacs-lisp/map.el | 2 +- lisp/emacs-lisp/nadvice.el | 2 +- lisp/emacs-lisp/package-x.el | 2 +- lisp/emacs-lisp/package.el | 2 +- lisp/emacs-lisp/pcase.el | 2 +- lisp/emacs-lisp/pp.el | 2 +- lisp/emacs-lisp/radix-tree.el | 2 +- lisp/emacs-lisp/re-builder.el | 2 +- lisp/emacs-lisp/regexp-opt.el | 2 +- lisp/emacs-lisp/regi.el | 2 +- lisp/emacs-lisp/ring.el | 2 +- lisp/emacs-lisp/rmc.el | 2 +- lisp/emacs-lisp/rx.el | 2 +- lisp/emacs-lisp/seq.el | 2 +- lisp/emacs-lisp/shadow.el | 2 +- lisp/emacs-lisp/smie.el | 2 +- lisp/emacs-lisp/subr-x.el | 2 +- lisp/emacs-lisp/syntax.el | 2 +- lisp/emacs-lisp/tabulated-list.el | 2 +- lisp/emacs-lisp/tcover-ses.el | 2 +- lisp/emacs-lisp/tcover-unsafep.el | 2 +- lisp/emacs-lisp/testcover.el | 2 +- lisp/emacs-lisp/thunk.el | 2 +- lisp/emacs-lisp/timer-list.el | 2 +- lisp/emacs-lisp/timer.el | 2 +- lisp/emacs-lisp/tq.el | 2 +- lisp/emacs-lisp/trace.el | 2 +- lisp/emacs-lisp/unsafep.el | 2 +- lisp/emacs-lisp/warnings.el | 2 +- lisp/emacs-lock.el | 2 +- lisp/emulation/cua-base.el | 2 +- lisp/emulation/cua-gmrk.el | 2 +- lisp/emulation/cua-rect.el | 2 +- lisp/emulation/edt-lk201.el | 2 +- lisp/emulation/edt-mapper.el | 2 +- lisp/emulation/edt-pc.el | 2 +- lisp/emulation/edt-vt100.el | 2 +- lisp/emulation/edt.el | 2 +- lisp/emulation/keypad.el | 2 +- lisp/emulation/viper-cmd.el | 2 +- lisp/emulation/viper-ex.el | 2 +- lisp/emulation/viper-init.el | 2 +- lisp/emulation/viper-keym.el | 2 +- lisp/emulation/viper-macs.el | 2 +- lisp/emulation/viper-mous.el | 2 +- lisp/emulation/viper-util.el | 2 +- lisp/emulation/viper.el | 2 +- lisp/env.el | 2 +- lisp/epa-dired.el | 2 +- lisp/epa-file.el | 2 +- lisp/epa-hook.el | 2 +- lisp/epa-mail.el | 2 +- lisp/epa.el | 2 +- lisp/epg-config.el | 2 +- lisp/epg.el | 2 +- lisp/erc/ChangeLog.1 | 2 +- lisp/erc/ChangeLog.2 | 2 +- lisp/erc/erc-autoaway.el | 2 +- lisp/erc/erc-backend.el | 2 +- lisp/erc/erc-button.el | 2 +- lisp/erc/erc-capab.el | 2 +- lisp/erc/erc-compat.el | 2 +- lisp/erc/erc-dcc.el | 2 +- lisp/erc/erc-desktop-notifications.el | 2 +- lisp/erc/erc-ezbounce.el | 2 +- lisp/erc/erc-fill.el | 2 +- lisp/erc/erc-goodies.el | 2 +- lisp/erc/erc-ibuffer.el | 2 +- lisp/erc/erc-identd.el | 2 +- lisp/erc/erc-imenu.el | 2 +- lisp/erc/erc-join.el | 2 +- lisp/erc/erc-lang.el | 2 +- lisp/erc/erc-list.el | 2 +- lisp/erc/erc-log.el | 2 +- lisp/erc/erc-match.el | 2 +- lisp/erc/erc-menu.el | 2 +- lisp/erc/erc-netsplit.el | 2 +- lisp/erc/erc-networks.el | 2 +- lisp/erc/erc-notify.el | 2 +- lisp/erc/erc-page.el | 2 +- lisp/erc/erc-pcomplete.el | 2 +- lisp/erc/erc-replace.el | 2 +- lisp/erc/erc-ring.el | 2 +- lisp/erc/erc-services.el | 2 +- lisp/erc/erc-sound.el | 2 +- lisp/erc/erc-speedbar.el | 2 +- lisp/erc/erc-spelling.el | 2 +- lisp/erc/erc-stamp.el | 2 +- lisp/erc/erc-track.el | 2 +- lisp/erc/erc-truncate.el | 2 +- lisp/erc/erc-xdcc.el | 2 +- lisp/erc/erc.el | 2 +- lisp/eshell/em-alias.el | 2 +- lisp/eshell/em-banner.el | 2 +- lisp/eshell/em-basic.el | 2 +- lisp/eshell/em-cmpl.el | 2 +- lisp/eshell/em-dirs.el | 2 +- lisp/eshell/em-glob.el | 2 +- lisp/eshell/em-hist.el | 2 +- lisp/eshell/em-ls.el | 2 +- lisp/eshell/em-pred.el | 2 +- lisp/eshell/em-prompt.el | 2 +- lisp/eshell/em-rebind.el | 2 +- lisp/eshell/em-script.el | 2 +- lisp/eshell/em-smart.el | 2 +- lisp/eshell/em-term.el | 2 +- lisp/eshell/em-tramp.el | 2 +- lisp/eshell/em-unix.el | 2 +- lisp/eshell/em-xtra.el | 2 +- lisp/eshell/esh-arg.el | 2 +- lisp/eshell/esh-cmd.el | 2 +- lisp/eshell/esh-ext.el | 2 +- lisp/eshell/esh-io.el | 2 +- lisp/eshell/esh-mode.el | 2 +- lisp/eshell/esh-module.el | 2 +- lisp/eshell/esh-opt.el | 2 +- lisp/eshell/esh-proc.el | 2 +- lisp/eshell/esh-util.el | 2 +- lisp/eshell/esh-var.el | 2 +- lisp/eshell/eshell.el | 2 +- lisp/expand.el | 2 +- lisp/ezimage.el | 2 +- lisp/face-remap.el | 2 +- lisp/facemenu.el | 2 +- lisp/faces.el | 2 +- lisp/ffap.el | 2 +- lisp/filecache.el | 2 +- lisp/filenotify.el | 2 +- lisp/files-x.el | 2 +- lisp/files.el | 2 +- lisp/filesets.el | 2 +- lisp/find-cmd.el | 2 +- lisp/find-dired.el | 2 +- lisp/find-file.el | 2 +- lisp/find-lisp.el | 2 +- lisp/finder.el | 2 +- lisp/flow-ctrl.el | 2 +- lisp/foldout.el | 2 +- lisp/follow.el | 2 +- lisp/font-core.el | 2 +- lisp/font-lock.el | 2 +- lisp/format-spec.el | 2 +- lisp/format.el | 2 +- lisp/forms.el | 2 +- lisp/frame.el | 2 +- lisp/frameset.el | 2 +- lisp/fringe.el | 2 +- lisp/generic-x.el | 2 +- lisp/gnus/ChangeLog.1 | 2 +- lisp/gnus/ChangeLog.2 | 2 +- lisp/gnus/ChangeLog.3 | 2 +- lisp/gnus/canlock.el | 2 +- lisp/gnus/deuglify.el | 2 +- lisp/gnus/gmm-utils.el | 2 +- lisp/gnus/gnus-agent.el | 2 +- lisp/gnus/gnus-art.el | 2 +- lisp/gnus/gnus-async.el | 2 +- lisp/gnus/gnus-bcklg.el | 2 +- lisp/gnus/gnus-bookmark.el | 2 +- lisp/gnus/gnus-cache.el | 2 +- lisp/gnus/gnus-cite.el | 2 +- lisp/gnus/gnus-cloud.el | 2 +- lisp/gnus/gnus-cus.el | 2 +- lisp/gnus/gnus-delay.el | 2 +- lisp/gnus/gnus-demon.el | 2 +- lisp/gnus/gnus-diary.el | 2 +- lisp/gnus/gnus-dired.el | 2 +- lisp/gnus/gnus-draft.el | 2 +- lisp/gnus/gnus-dup.el | 2 +- lisp/gnus/gnus-eform.el | 2 +- lisp/gnus/gnus-fun.el | 2 +- lisp/gnus/gnus-gravatar.el | 2 +- lisp/gnus/gnus-group.el | 2 +- lisp/gnus/gnus-html.el | 2 +- lisp/gnus/gnus-icalendar.el | 2 +- lisp/gnus/gnus-int.el | 2 +- lisp/gnus/gnus-kill.el | 2 +- lisp/gnus/gnus-logic.el | 2 +- lisp/gnus/gnus-mh.el | 2 +- lisp/gnus/gnus-ml.el | 2 +- lisp/gnus/gnus-mlspl.el | 2 +- lisp/gnus/gnus-msg.el | 2 +- lisp/gnus/gnus-notifications.el | 2 +- lisp/gnus/gnus-picon.el | 2 +- lisp/gnus/gnus-range.el | 2 +- lisp/gnus/gnus-registry.el | 2 +- lisp/gnus/gnus-rfc1843.el | 2 +- lisp/gnus/gnus-salt.el | 2 +- lisp/gnus/gnus-score.el | 2 +- lisp/gnus/gnus-sieve.el | 2 +- lisp/gnus/gnus-spec.el | 2 +- lisp/gnus/gnus-srvr.el | 2 +- lisp/gnus/gnus-start.el | 2 +- lisp/gnus/gnus-sum.el | 2 +- lisp/gnus/gnus-topic.el | 2 +- lisp/gnus/gnus-undo.el | 2 +- lisp/gnus/gnus-util.el | 2 +- lisp/gnus/gnus-uu.el | 2 +- lisp/gnus/gnus-vm.el | 2 +- lisp/gnus/gnus-win.el | 2 +- lisp/gnus/gnus.el | 2 +- lisp/gnus/gssapi.el | 2 +- lisp/gnus/legacy-gnus-agent.el | 2 +- lisp/gnus/mail-source.el | 2 +- lisp/gnus/message.el | 2 +- lisp/gnus/mm-archive.el | 2 +- lisp/gnus/mm-bodies.el | 2 +- lisp/gnus/mm-decode.el | 2 +- lisp/gnus/mm-encode.el | 2 +- lisp/gnus/mm-extern.el | 2 +- lisp/gnus/mm-partial.el | 2 +- lisp/gnus/mm-url.el | 2 +- lisp/gnus/mm-util.el | 2 +- lisp/gnus/mm-uu.el | 2 +- lisp/gnus/mm-view.el | 2 +- lisp/gnus/mml-sec.el | 2 +- lisp/gnus/mml-smime.el | 2 +- lisp/gnus/mml.el | 2 +- lisp/gnus/mml1991.el | 2 +- lisp/gnus/mml2015.el | 2 +- lisp/gnus/nnagent.el | 2 +- lisp/gnus/nnbabyl.el | 2 +- lisp/gnus/nndiary.el | 2 +- lisp/gnus/nndir.el | 2 +- lisp/gnus/nndoc.el | 2 +- lisp/gnus/nndraft.el | 2 +- lisp/gnus/nneething.el | 2 +- lisp/gnus/nnfolder.el | 2 +- lisp/gnus/nngateway.el | 2 +- lisp/gnus/nnheader.el | 2 +- lisp/gnus/nnimap.el | 2 +- lisp/gnus/nnir.el | 2 +- lisp/gnus/nnmail.el | 2 +- lisp/gnus/nnmairix.el | 2 +- lisp/gnus/nnmbox.el | 2 +- lisp/gnus/nnmh.el | 2 +- lisp/gnus/nnml.el | 2 +- lisp/gnus/nnoo.el | 2 +- lisp/gnus/nnregistry.el | 2 +- lisp/gnus/nnrss.el | 2 +- lisp/gnus/nnspool.el | 2 +- lisp/gnus/nntp.el | 2 +- lisp/gnus/nnvirtual.el | 2 +- lisp/gnus/nnweb.el | 2 +- lisp/gnus/score-mode.el | 2 +- lisp/gnus/smiley.el | 2 +- lisp/gnus/smime.el | 2 +- lisp/gnus/spam-report.el | 2 +- lisp/gnus/spam-stat.el | 2 +- lisp/gnus/spam-wash.el | 2 +- lisp/gnus/spam.el | 2 +- lisp/help-at-pt.el | 2 +- lisp/help-fns.el | 2 +- lisp/help-macro.el | 2 +- lisp/help-mode.el | 2 +- lisp/help.el | 2 +- lisp/hex-util.el | 2 +- lisp/hexl.el | 2 +- lisp/hfy-cmap.el | 2 +- lisp/hi-lock.el | 2 +- lisp/hilit-chg.el | 2 +- lisp/hippie-exp.el | 2 +- lisp/hl-line.el | 2 +- lisp/htmlfontify.el | 2 +- lisp/ibuf-ext.el | 2 +- lisp/ibuf-macs.el | 2 +- lisp/ibuffer.el | 2 +- lisp/icomplete.el | 2 +- lisp/ido.el | 2 +- lisp/ielm.el | 2 +- lisp/iimage.el | 2 +- lisp/image-dired.el | 2 +- lisp/image-file.el | 2 +- lisp/image-mode.el | 2 +- lisp/image.el | 2 +- lisp/image/compface.el | 2 +- lisp/image/gravatar.el | 2 +- lisp/imenu.el | 2 +- lisp/indent.el | 2 +- lisp/info-look.el | 2 +- lisp/info-xref.el | 2 +- lisp/info.el | 2 +- lisp/informat.el | 2 +- lisp/international/ccl.el | 2 +- lisp/international/characters.el | 2 +- lisp/international/fontset.el | 2 +- lisp/international/isearch-x.el | 2 +- lisp/international/iso-ascii.el | 2 +- lisp/international/iso-cvt.el | 2 +- lisp/international/iso-transl.el | 2 +- lisp/international/ja-dic-cnv.el | 2 +- lisp/international/kinsoku.el | 2 +- lisp/international/kkc.el | 2 +- lisp/international/latexenc.el | 2 +- lisp/international/latin1-disp.el | 2 +- lisp/international/mule-cmds.el | 2 +- lisp/international/mule-conf.el | 2 +- lisp/international/mule-diag.el | 2 +- lisp/international/mule-util.el | 2 +- lisp/international/mule.el | 2 +- lisp/international/ogonek.el | 2 +- lisp/international/quail.el | 2 +- lisp/international/rfc1843.el | 2 +- lisp/international/titdic-cnv.el | 2 +- lisp/international/ucs-normalize.el | 2 +- lisp/international/utf-7.el | 2 +- lisp/international/utf7.el | 2 +- lisp/isearch.el | 2 +- lisp/isearchb.el | 2 +- lisp/jit-lock.el | 2 +- lisp/jka-cmpr-hook.el | 2 +- lisp/jka-compr.el | 2 +- lisp/json.el | 2 +- lisp/kermit.el | 2 +- lisp/kmacro.el | 2 +- lisp/language/china-util.el | 2 +- lisp/language/chinese.el | 2 +- lisp/language/cyril-util.el | 2 +- lisp/language/cyrillic.el | 2 +- lisp/language/czech.el | 2 +- lisp/language/english.el | 2 +- lisp/language/ethio-util.el | 2 +- lisp/language/ethiopic.el | 2 +- lisp/language/european.el | 2 +- lisp/language/georgian.el | 2 +- lisp/language/greek.el | 2 +- lisp/language/hanja-util.el | 2 +- lisp/language/hebrew.el | 2 +- lisp/language/ind-util.el | 2 +- lisp/language/indian.el | 2 +- lisp/language/japan-util.el | 2 +- lisp/language/japanese.el | 2 +- lisp/language/korea-util.el | 2 +- lisp/language/korean.el | 2 +- lisp/language/lao-util.el | 2 +- lisp/language/lao.el | 2 +- lisp/language/romanian.el | 2 +- lisp/language/slovak.el | 2 +- lisp/language/tai-viet.el | 2 +- lisp/language/thai-util.el | 2 +- lisp/language/thai.el | 2 +- lisp/language/tibet-util.el | 2 +- lisp/language/tibetan.el | 2 +- lisp/language/utf-8-lang.el | 2 +- lisp/language/viet-util.el | 2 +- lisp/language/vietnamese.el | 2 +- lisp/leim/quail/arabic.el | 2 +- lisp/leim/quail/croatian.el | 2 +- lisp/leim/quail/cyril-jis.el | 2 +- lisp/leim/quail/cyrillic.el | 2 +- lisp/leim/quail/czech.el | 2 +- lisp/leim/quail/georgian.el | 2 +- lisp/leim/quail/greek.el | 2 +- lisp/leim/quail/hangul.el | 2 +- lisp/leim/quail/hanja.el | 2 +- lisp/leim/quail/hanja3.el | 2 +- lisp/leim/quail/indian.el | 2 +- lisp/leim/quail/ipa-praat.el | 2 +- lisp/leim/quail/ipa.el | 2 +- lisp/leim/quail/japanese.el | 2 +- lisp/leim/quail/latin-alt.el | 2 +- lisp/leim/quail/latin-ltx.el | 2 +- lisp/leim/quail/latin-post.el | 2 +- lisp/leim/quail/latin-pre.el | 2 +- lisp/leim/quail/lrt.el | 2 +- lisp/leim/quail/persian.el | 2 +- lisp/leim/quail/programmer-dvorak.el | 2 +- lisp/leim/quail/py-punct.el | 2 +- lisp/leim/quail/rfc1345.el | 2 +- lisp/leim/quail/sgml-input.el | 2 +- lisp/leim/quail/sisheng.el | 2 +- lisp/leim/quail/slovak.el | 2 +- lisp/leim/quail/symbol-ksc.el | 2 +- lisp/leim/quail/tamil-dvorak.el | 2 +- lisp/leim/quail/tibetan.el | 2 +- lisp/leim/quail/uni-input.el | 2 +- lisp/leim/quail/vntelex.el | 2 +- lisp/leim/quail/vnvni.el | 2 +- lisp/leim/quail/welsh.el | 2 +- lisp/linum.el | 2 +- lisp/loadhist.el | 2 +- lisp/loadup.el | 2 +- lisp/locate.el | 2 +- lisp/lpr.el | 2 +- lisp/ls-lisp.el | 2 +- lisp/macros.el | 2 +- lisp/mail/binhex.el | 2 +- lisp/mail/blessmail.el | 2 +- lisp/mail/emacsbug.el | 2 +- lisp/mail/flow-fill.el | 2 +- lisp/mail/footnote.el | 2 +- lisp/mail/hashcash.el | 2 +- lisp/mail/ietf-drums.el | 2 +- lisp/mail/mail-extr.el | 2 +- lisp/mail/mail-hist.el | 2 +- lisp/mail/mail-parse.el | 2 +- lisp/mail/mail-prsvr.el | 2 +- lisp/mail/mail-utils.el | 2 +- lisp/mail/mailabbrev.el | 2 +- lisp/mail/mailalias.el | 2 +- lisp/mail/mailclient.el | 2 +- lisp/mail/mailheader.el | 2 +- lisp/mail/metamail.el | 2 +- lisp/mail/mspools.el | 2 +- lisp/mail/qp.el | 2 +- lisp/mail/reporter.el | 2 +- lisp/mail/rfc2045.el | 2 +- lisp/mail/rfc2047.el | 2 +- lisp/mail/rfc2231.el | 2 +- lisp/mail/rfc2368.el | 2 +- lisp/mail/rfc822.el | 2 +- lisp/mail/rmail-spam-filter.el | 2 +- lisp/mail/rmail.el | 2 +- lisp/mail/rmailedit.el | 2 +- lisp/mail/rmailkwd.el | 2 +- lisp/mail/rmailmm.el | 2 +- lisp/mail/rmailmsc.el | 2 +- lisp/mail/rmailout.el | 2 +- lisp/mail/rmailsort.el | 2 +- lisp/mail/rmailsum.el | 2 +- lisp/mail/sendmail.el | 2 +- lisp/mail/smtpmail.el | 2 +- lisp/mail/supercite.el | 2 +- lisp/mail/uce.el | 2 +- lisp/mail/undigest.el | 2 +- lisp/mail/unrmail.el | 2 +- lisp/mail/uudecode.el | 2 +- lisp/mail/yenc.el | 2 +- lisp/makesum.el | 2 +- lisp/man.el | 2 +- lisp/master.el | 2 +- lisp/mb-depth.el | 2 +- lisp/md4.el | 2 +- lisp/menu-bar.el | 2 +- lisp/mh-e/ChangeLog.1 | 2 +- lisp/mh-e/ChangeLog.2 | 2 +- lisp/mh-e/mh-acros.el | 2 +- lisp/mh-e/mh-alias.el | 2 +- lisp/mh-e/mh-buffers.el | 2 +- lisp/mh-e/mh-comp.el | 2 +- lisp/mh-e/mh-compat.el | 2 +- lisp/mh-e/mh-e.el | 2 +- lisp/mh-e/mh-folder.el | 2 +- lisp/mh-e/mh-funcs.el | 2 +- lisp/mh-e/mh-gnus.el | 2 +- lisp/mh-e/mh-identity.el | 2 +- lisp/mh-e/mh-inc.el | 2 +- lisp/mh-e/mh-junk.el | 2 +- lisp/mh-e/mh-letter.el | 2 +- lisp/mh-e/mh-limit.el | 2 +- lisp/mh-e/mh-mime.el | 2 +- lisp/mh-e/mh-print.el | 2 +- lisp/mh-e/mh-scan.el | 2 +- lisp/mh-e/mh-search.el | 2 +- lisp/mh-e/mh-seq.el | 2 +- lisp/mh-e/mh-show.el | 2 +- lisp/mh-e/mh-speed.el | 2 +- lisp/mh-e/mh-thread.el | 2 +- lisp/mh-e/mh-tool-bar.el | 2 +- lisp/mh-e/mh-utils.el | 2 +- lisp/mh-e/mh-xface.el | 2 +- lisp/midnight.el | 2 +- lisp/minibuf-eldef.el | 2 +- lisp/minibuffer.el | 2 +- lisp/misc.el | 2 +- lisp/misearch.el | 2 +- lisp/mouse-copy.el | 2 +- lisp/mouse-drag.el | 2 +- lisp/mouse.el | 2 +- lisp/mpc.el | 2 +- lisp/msb.el | 2 +- lisp/mwheel.el | 2 +- lisp/net/ange-ftp.el | 2 +- lisp/net/browse-url.el | 2 +- lisp/net/dbus.el | 2 +- lisp/net/dig.el | 2 +- lisp/net/dns.el | 2 +- lisp/net/eudc-bob.el | 2 +- lisp/net/eudc-export.el | 2 +- lisp/net/eudc-hotlist.el | 2 +- lisp/net/eudc-vars.el | 2 +- lisp/net/eudc.el | 2 +- lisp/net/eudcb-bbdb.el | 2 +- lisp/net/eudcb-ldap.el | 2 +- lisp/net/eudcb-mab.el | 2 +- lisp/net/eww.el | 2 +- lisp/net/gnutls.el | 2 +- lisp/net/goto-addr.el | 2 +- lisp/net/hmac-def.el | 2 +- lisp/net/hmac-md5.el | 2 +- lisp/net/imap.el | 2 +- lisp/net/ldap.el | 2 +- lisp/net/mailcap.el | 2 +- lisp/net/mairix.el | 2 +- lisp/net/net-utils.el | 2 +- lisp/net/netrc.el | 2 +- lisp/net/network-stream.el | 2 +- lisp/net/newst-backend.el | 2 +- lisp/net/newst-plainview.el | 2 +- lisp/net/newst-reader.el | 2 +- lisp/net/newst-ticker.el | 2 +- lisp/net/newst-treeview.el | 2 +- lisp/net/newsticker.el | 2 +- lisp/net/nsm.el | 2 +- lisp/net/ntlm.el | 2 +- lisp/net/pop3.el | 2 +- lisp/net/puny.el | 2 +- lisp/net/quickurl.el | 2 +- lisp/net/rcirc.el | 2 +- lisp/net/rfc2104.el | 2 +- lisp/net/rlogin.el | 2 +- lisp/net/sasl-cram.el | 2 +- lisp/net/sasl-digest.el | 2 +- lisp/net/sasl-ntlm.el | 2 +- lisp/net/sasl-scram-rfc.el | 2 +- lisp/net/sasl.el | 2 +- lisp/net/secrets.el | 2 +- lisp/net/shr-color.el | 2 +- lisp/net/shr.el | 2 +- lisp/net/sieve-manage.el | 2 +- lisp/net/sieve-mode.el | 2 +- lisp/net/sieve.el | 2 +- lisp/net/snmp-mode.el | 2 +- lisp/net/soap-client.el | 2 +- lisp/net/soap-inspect.el | 2 +- lisp/net/socks.el | 2 +- lisp/net/starttls.el | 2 +- lisp/net/telnet.el | 2 +- lisp/net/tls.el | 2 +- lisp/net/tramp-adb.el | 2 +- lisp/net/tramp-cache.el | 2 +- lisp/net/tramp-cmds.el | 2 +- lisp/net/tramp-compat.el | 2 +- lisp/net/tramp-ftp.el | 2 +- lisp/net/tramp-gvfs.el | 2 +- lisp/net/tramp-sh.el | 2 +- lisp/net/tramp-smb.el | 2 +- lisp/net/tramp-uu.el | 2 +- lisp/net/tramp.el | 2 +- lisp/net/trampver.el | 2 +- lisp/net/webjump.el | 2 +- lisp/net/zeroconf.el | 2 +- lisp/newcomment.el | 2 +- lisp/notifications.el | 2 +- lisp/novice.el | 2 +- lisp/nxml/nxml-enc.el | 2 +- lisp/nxml/nxml-maint.el | 2 +- lisp/nxml/nxml-mode.el | 2 +- lisp/nxml/nxml-ns.el | 2 +- lisp/nxml/nxml-outln.el | 2 +- lisp/nxml/nxml-parse.el | 2 +- lisp/nxml/nxml-rap.el | 2 +- lisp/nxml/nxml-util.el | 2 +- lisp/nxml/rng-cmpct.el | 2 +- lisp/nxml/rng-dt.el | 2 +- lisp/nxml/rng-loc.el | 2 +- lisp/nxml/rng-maint.el | 2 +- lisp/nxml/rng-match.el | 2 +- lisp/nxml/rng-nxml.el | 2 +- lisp/nxml/rng-parse.el | 2 +- lisp/nxml/rng-pttrn.el | 2 +- lisp/nxml/rng-uri.el | 2 +- lisp/nxml/rng-util.el | 2 +- lisp/nxml/rng-valid.el | 2 +- lisp/nxml/rng-xsd.el | 2 +- lisp/nxml/xmltok.el | 2 +- lisp/nxml/xsd-regexp.el | 2 +- lisp/obarray.el | 2 +- lisp/obsolete/abbrevlist.el | 2 +- lisp/obsolete/assoc.el | 2 +- lisp/obsolete/bruce.el | 2 +- lisp/obsolete/cc-compat.el | 2 +- lisp/obsolete/cl-compat.el | 2 +- lisp/obsolete/complete.el | 2 +- lisp/obsolete/crisp.el | 2 +- lisp/obsolete/cust-print.el | 2 +- lisp/obsolete/erc-hecomplete.el | 2 +- lisp/obsolete/eudcb-ph.el | 2 +- lisp/obsolete/fast-lock.el | 2 +- lisp/obsolete/gs.el | 2 +- lisp/obsolete/gulp.el | 2 +- lisp/obsolete/html2text.el | 2 +- lisp/obsolete/iswitchb.el | 2 +- lisp/obsolete/landmark.el | 2 +- lisp/obsolete/lazy-lock.el | 2 +- lisp/obsolete/ledit.el | 2 +- lisp/obsolete/levents.el | 2 +- lisp/obsolete/lmenu.el | 2 +- lisp/obsolete/longlines.el | 2 +- lisp/obsolete/lucid.el | 2 +- lisp/obsolete/messcompat.el | 2 +- lisp/obsolete/mouse-sel.el | 2 +- lisp/obsolete/old-emacs-lock.el | 2 +- lisp/obsolete/old-whitespace.el | 2 +- lisp/obsolete/options.el | 2 +- lisp/obsolete/otodo-mode.el | 2 +- lisp/obsolete/pc-mode.el | 2 +- lisp/obsolete/pc-select.el | 2 +- lisp/obsolete/pgg-def.el | 2 +- lisp/obsolete/pgg-gpg.el | 2 +- lisp/obsolete/pgg-parse.el | 2 +- lisp/obsolete/pgg-pgp.el | 2 +- lisp/obsolete/pgg-pgp5.el | 2 +- lisp/obsolete/pgg.el | 2 +- lisp/obsolete/rcompile.el | 2 +- lisp/obsolete/s-region.el | 2 +- lisp/obsolete/sregex.el | 2 +- lisp/obsolete/sup-mouse.el | 2 +- lisp/obsolete/terminal.el | 2 +- lisp/obsolete/tpu-edt.el | 2 +- lisp/obsolete/tpu-extras.el | 2 +- lisp/obsolete/tpu-mapper.el | 2 +- lisp/obsolete/vc-arch.el | 2 +- lisp/obsolete/vip.el | 2 +- lisp/obsolete/ws-mode.el | 2 +- lisp/obsolete/xesam.el | 2 +- lisp/obsolete/yow.el | 2 +- lisp/org/ChangeLog.1 | 2 +- lisp/org/ob-C.el | 2 +- lisp/org/ob-J.el | 2 +- lisp/org/ob-R.el | 2 +- lisp/org/ob-abc.el | 2 +- lisp/org/ob-asymptote.el | 2 +- lisp/org/ob-awk.el | 2 +- lisp/org/ob-calc.el | 2 +- lisp/org/ob-clojure.el | 2 +- lisp/org/ob-comint.el | 2 +- lisp/org/ob-coq.el | 2 +- lisp/org/ob-core.el | 2 +- lisp/org/ob-css.el | 2 +- lisp/org/ob-ditaa.el | 2 +- lisp/org/ob-dot.el | 2 +- lisp/org/ob-ebnf.el | 2 +- lisp/org/ob-emacs-lisp.el | 2 +- lisp/org/ob-eval.el | 2 +- lisp/org/ob-exp.el | 2 +- lisp/org/ob-forth.el | 2 +- lisp/org/ob-fortran.el | 2 +- lisp/org/ob-gnuplot.el | 2 +- lisp/org/ob-groovy.el | 2 +- lisp/org/ob-haskell.el | 2 +- lisp/org/ob-hledger.el | 2 +- lisp/org/ob-io.el | 2 +- lisp/org/ob-java.el | 2 +- lisp/org/ob-js.el | 2 +- lisp/org/ob-keys.el | 2 +- lisp/org/ob-latex.el | 2 +- lisp/org/ob-ledger.el | 2 +- lisp/org/ob-lilypond.el | 2 +- lisp/org/ob-lisp.el | 2 +- lisp/org/ob-lob.el | 2 +- lisp/org/ob-lua.el | 2 +- lisp/org/ob-makefile.el | 2 +- lisp/org/ob-matlab.el | 2 +- lisp/org/ob-maxima.el | 2 +- lisp/org/ob-mscgen.el | 2 +- lisp/org/ob-ocaml.el | 2 +- lisp/org/ob-octave.el | 2 +- lisp/org/ob-org.el | 2 +- lisp/org/ob-perl.el | 2 +- lisp/org/ob-picolisp.el | 2 +- lisp/org/ob-plantuml.el | 2 +- lisp/org/ob-processing.el | 2 +- lisp/org/ob-python.el | 2 +- lisp/org/ob-ref.el | 2 +- lisp/org/ob-ruby.el | 2 +- lisp/org/ob-sass.el | 2 +- lisp/org/ob-scheme.el | 2 +- lisp/org/ob-screen.el | 2 +- lisp/org/ob-sed.el | 2 +- lisp/org/ob-shell.el | 2 +- lisp/org/ob-shen.el | 2 +- lisp/org/ob-sql.el | 2 +- lisp/org/ob-sqlite.el | 2 +- lisp/org/ob-stan.el | 2 +- lisp/org/ob-table.el | 2 +- lisp/org/ob-tangle.el | 2 +- lisp/org/ob-vala.el | 2 +- lisp/org/ob.el | 2 +- lisp/org/org-agenda.el | 2 +- lisp/org/org-archive.el | 2 +- lisp/org/org-attach.el | 2 +- lisp/org/org-bbdb.el | 2 +- lisp/org/org-bibtex.el | 2 +- lisp/org/org-capture.el | 2 +- lisp/org/org-clock.el | 2 +- lisp/org/org-colview.el | 2 +- lisp/org/org-compat.el | 2 +- lisp/org/org-crypt.el | 2 +- lisp/org/org-ctags.el | 2 +- lisp/org/org-datetree.el | 2 +- lisp/org/org-docview.el | 2 +- lisp/org/org-duration.el | 2 +- lisp/org/org-element.el | 2 +- lisp/org/org-entities.el | 2 +- lisp/org/org-eshell.el | 2 +- lisp/org/org-eww.el | 2 +- lisp/org/org-faces.el | 2 +- lisp/org/org-feed.el | 2 +- lisp/org/org-footnote.el | 2 +- lisp/org/org-gnus.el | 2 +- lisp/org/org-habit.el | 2 +- lisp/org/org-id.el | 2 +- lisp/org/org-indent.el | 2 +- lisp/org/org-info.el | 2 +- lisp/org/org-inlinetask.el | 2 +- lisp/org/org-irc.el | 2 +- lisp/org/org-lint.el | 2 +- lisp/org/org-list.el | 2 +- lisp/org/org-macro.el | 2 +- lisp/org/org-macs.el | 2 +- lisp/org/org-mhe.el | 2 +- lisp/org/org-mobile.el | 2 +- lisp/org/org-mouse.el | 2 +- lisp/org/org-pcomplete.el | 2 +- lisp/org/org-plot.el | 2 +- lisp/org/org-protocol.el | 2 +- lisp/org/org-rmail.el | 2 +- lisp/org/org-src.el | 2 +- lisp/org/org-table.el | 2 +- lisp/org/org-timer.el | 2 +- lisp/org/org-w3m.el | 2 +- lisp/org/org.el | 2 +- lisp/org/ox-ascii.el | 2 +- lisp/org/ox-beamer.el | 2 +- lisp/org/ox-html.el | 2 +- lisp/org/ox-icalendar.el | 2 +- lisp/org/ox-latex.el | 2 +- lisp/org/ox-man.el | 2 +- lisp/org/ox-md.el | 2 +- lisp/org/ox-odt.el | 2 +- lisp/org/ox-org.el | 2 +- lisp/org/ox-publish.el | 2 +- lisp/org/ox-texinfo.el | 2 +- lisp/org/ox.el | 2 +- lisp/outline.el | 2 +- lisp/paren.el | 2 +- lisp/password-cache.el | 2 +- lisp/pcmpl-cvs.el | 2 +- lisp/pcmpl-gnu.el | 2 +- lisp/pcmpl-linux.el | 2 +- lisp/pcmpl-rpm.el | 2 +- lisp/pcmpl-unix.el | 2 +- lisp/pcmpl-x.el | 2 +- lisp/pcomplete.el | 2 +- lisp/pixel-scroll.el | 2 +- lisp/play/5x5.el | 2 +- lisp/play/animate.el | 2 +- lisp/play/blackbox.el | 2 +- lisp/play/bubbles.el | 2 +- lisp/play/cookie1.el | 2 +- lisp/play/decipher.el | 2 +- lisp/play/dissociate.el | 2 +- lisp/play/doctor.el | 2 +- lisp/play/dunnet.el | 2 +- lisp/play/fortune.el | 2 +- lisp/play/gamegrid.el | 2 +- lisp/play/gametree.el | 2 +- lisp/play/gomoku.el | 2 +- lisp/play/handwrite.el | 2 +- lisp/play/life.el | 2 +- lisp/play/morse.el | 2 +- lisp/play/mpuz.el | 2 +- lisp/play/pong.el | 2 +- lisp/play/snake.el | 2 +- lisp/play/solitaire.el | 2 +- lisp/play/spook.el | 2 +- lisp/play/tetris.el | 2 +- lisp/play/zone.el | 2 +- lisp/plstore.el | 2 +- lisp/printing.el | 2 +- lisp/proced.el | 2 +- lisp/profiler.el | 2 +- lisp/progmodes/ada-mode.el | 2 +- lisp/progmodes/ada-prj.el | 2 +- lisp/progmodes/ada-stmt.el | 2 +- lisp/progmodes/ada-xref.el | 2 +- lisp/progmodes/antlr-mode.el | 2 +- lisp/progmodes/asm-mode.el | 2 +- lisp/progmodes/autoconf.el | 2 +- lisp/progmodes/bat-mode.el | 2 +- lisp/progmodes/bug-reference.el | 2 +- lisp/progmodes/cc-align.el | 2 +- lisp/progmodes/cc-awk.el | 2 +- lisp/progmodes/cc-bytecomp.el | 2 +- lisp/progmodes/cc-cmds.el | 2 +- lisp/progmodes/cc-defs.el | 2 +- lisp/progmodes/cc-engine.el | 2 +- lisp/progmodes/cc-fonts.el | 2 +- lisp/progmodes/cc-guess.el | 2 +- lisp/progmodes/cc-langs.el | 2 +- lisp/progmodes/cc-menus.el | 2 +- lisp/progmodes/cc-mode.el | 2 +- lisp/progmodes/cc-styles.el | 2 +- lisp/progmodes/cc-vars.el | 2 +- lisp/progmodes/cfengine.el | 2 +- lisp/progmodes/cmacexp.el | 2 +- lisp/progmodes/compile.el | 2 +- lisp/progmodes/cperl-mode.el | 2 +- lisp/progmodes/cpp.el | 2 +- lisp/progmodes/cwarn.el | 2 +- lisp/progmodes/dcl-mode.el | 2 +- lisp/progmodes/ebnf-abn.el | 2 +- lisp/progmodes/ebnf-bnf.el | 2 +- lisp/progmodes/ebnf-dtd.el | 2 +- lisp/progmodes/ebnf-ebx.el | 2 +- lisp/progmodes/ebnf-iso.el | 2 +- lisp/progmodes/ebnf-otz.el | 2 +- lisp/progmodes/ebnf-yac.el | 2 +- lisp/progmodes/ebnf2ps.el | 2 +- lisp/progmodes/ebrowse.el | 2 +- lisp/progmodes/elisp-mode.el | 2 +- lisp/progmodes/etags.el | 2 +- lisp/progmodes/executable.el | 2 +- lisp/progmodes/f90.el | 2 +- lisp/progmodes/flymake-proc.el | 2 +- lisp/progmodes/flymake.el | 2 +- lisp/progmodes/fortran.el | 2 +- lisp/progmodes/gdb-mi.el | 2 +- lisp/progmodes/glasses.el | 2 +- lisp/progmodes/grep.el | 2 +- lisp/progmodes/gud.el | 2 +- lisp/progmodes/hideif.el | 2 +- lisp/progmodes/hideshow.el | 2 +- lisp/progmodes/icon.el | 2 +- lisp/progmodes/idlw-complete-structtag.el | 2 +- lisp/progmodes/idlw-help.el | 2 +- lisp/progmodes/idlw-shell.el | 2 +- lisp/progmodes/idlw-toolbar.el | 2 +- lisp/progmodes/idlwave.el | 2 +- lisp/progmodes/inf-lisp.el | 2 +- lisp/progmodes/js.el | 2 +- lisp/progmodes/ld-script.el | 2 +- lisp/progmodes/m4-mode.el | 2 +- lisp/progmodes/make-mode.el | 2 +- lisp/progmodes/mantemp.el | 2 +- lisp/progmodes/meta-mode.el | 2 +- lisp/progmodes/mixal-mode.el | 2 +- lisp/progmodes/octave.el | 2 +- lisp/progmodes/opascal.el | 2 +- lisp/progmodes/pascal.el | 2 +- lisp/progmodes/perl-mode.el | 2 +- lisp/progmodes/prog-mode.el | 2 +- lisp/progmodes/project.el | 2 +- lisp/progmodes/prolog.el | 2 +- lisp/progmodes/ps-mode.el | 2 +- lisp/progmodes/python.el | 2 +- lisp/progmodes/ruby-mode.el | 2 +- lisp/progmodes/scheme.el | 2 +- lisp/progmodes/sh-script.el | 2 +- lisp/progmodes/simula.el | 2 +- lisp/progmodes/sql.el | 2 +- lisp/progmodes/subword.el | 2 +- lisp/progmodes/tcl.el | 2 +- lisp/progmodes/vera-mode.el | 2 +- lisp/progmodes/verilog-mode.el | 2 +- lisp/progmodes/vhdl-mode.el | 2 +- lisp/progmodes/which-func.el | 2 +- lisp/progmodes/xref.el | 2 +- lisp/progmodes/xscheme.el | 2 +- lisp/ps-bdf.el | 2 +- lisp/ps-def.el | 2 +- lisp/ps-mule.el | 2 +- lisp/ps-print.el | 2 +- lisp/ps-samp.el | 2 +- lisp/recentf.el | 2 +- lisp/rect.el | 2 +- lisp/register.el | 2 +- lisp/registry.el | 2 +- lisp/repeat.el | 2 +- lisp/replace.el | 2 +- lisp/reposition.el | 2 +- lisp/reveal.el | 2 +- lisp/rfn-eshadow.el | 2 +- lisp/rot13.el | 2 +- lisp/rtree.el | 2 +- lisp/ruler-mode.el | 2 +- lisp/savehist.el | 2 +- lisp/saveplace.el | 2 +- lisp/sb-image.el | 2 +- lisp/scroll-all.el | 2 +- lisp/scroll-bar.el | 2 +- lisp/scroll-lock.el | 2 +- lisp/select.el | 2 +- lisp/server.el | 2 +- lisp/ses.el | 2 +- lisp/shadowfile.el | 2 +- lisp/shell.el | 2 +- lisp/simple.el | 2 +- lisp/skeleton.el | 2 +- lisp/sort.el | 2 +- lisp/soundex.el | 2 +- lisp/speedbar.el | 2 +- lisp/startup.el | 2 +- lisp/strokes.el | 2 +- lisp/subr.el | 2 +- lisp/svg.el | 2 +- lisp/t-mouse.el | 2 +- lisp/tabify.el | 2 +- lisp/talk.el | 2 +- lisp/tar-mode.el | 2 +- lisp/tempo.el | 2 +- lisp/term.el | 2 +- lisp/term/AT386.el | 2 +- lisp/term/README | 2 +- lisp/term/common-win.el | 2 +- lisp/term/internal.el | 2 +- lisp/term/iris-ansi.el | 2 +- lisp/term/konsole.el | 2 +- lisp/term/news.el | 2 +- lisp/term/ns-win.el | 2 +- lisp/term/pc-win.el | 2 +- lisp/term/rxvt.el | 2 +- lisp/term/screen.el | 2 +- lisp/term/sun.el | 2 +- lisp/term/tmux.el | 2 +- lisp/term/tty-colors.el | 2 +- lisp/term/tvi970.el | 2 +- lisp/term/vt100.el | 2 +- lisp/term/w32-win.el | 2 +- lisp/term/w32console.el | 2 +- lisp/term/wyse50.el | 2 +- lisp/term/x-win.el | 2 +- lisp/term/xterm.el | 2 +- lisp/textmodes/artist.el | 2 +- lisp/textmodes/bib-mode.el | 2 +- lisp/textmodes/bibtex-style.el | 2 +- lisp/textmodes/bibtex.el | 2 +- lisp/textmodes/conf-mode.el | 2 +- lisp/textmodes/css-mode.el | 2 +- lisp/textmodes/dns-mode.el | 2 +- lisp/textmodes/enriched.el | 2 +- lisp/textmodes/fill.el | 2 +- lisp/textmodes/flyspell.el | 2 +- lisp/textmodes/ispell.el | 2 +- lisp/textmodes/less-css-mode.el | 2 +- lisp/textmodes/makeinfo.el | 2 +- lisp/textmodes/mhtml-mode.el | 2 +- lisp/textmodes/nroff-mode.el | 2 +- lisp/textmodes/page-ext.el | 2 +- lisp/textmodes/page.el | 2 +- lisp/textmodes/paragraphs.el | 2 +- lisp/textmodes/picture.el | 2 +- lisp/textmodes/po.el | 2 +- lisp/textmodes/refbib.el | 2 +- lisp/textmodes/refer.el | 2 +- lisp/textmodes/refill.el | 2 +- lisp/textmodes/reftex-auc.el | 2 +- lisp/textmodes/reftex-cite.el | 2 +- lisp/textmodes/reftex-dcr.el | 2 +- lisp/textmodes/reftex-global.el | 2 +- lisp/textmodes/reftex-index.el | 2 +- lisp/textmodes/reftex-parse.el | 2 +- lisp/textmodes/reftex-ref.el | 2 +- lisp/textmodes/reftex-sel.el | 2 +- lisp/textmodes/reftex-toc.el | 2 +- lisp/textmodes/reftex-vars.el | 2 +- lisp/textmodes/reftex.el | 2 +- lisp/textmodes/remember.el | 2 +- lisp/textmodes/rst.el | 2 +- lisp/textmodes/sgml-mode.el | 2 +- lisp/textmodes/table.el | 2 +- lisp/textmodes/tex-mode.el | 2 +- lisp/textmodes/texinfmt.el | 2 +- lisp/textmodes/texinfo.el | 2 +- lisp/textmodes/texnfo-upd.el | 2 +- lisp/textmodes/text-mode.el | 2 +- lisp/textmodes/tildify.el | 2 +- lisp/textmodes/two-column.el | 2 +- lisp/textmodes/underline.el | 2 +- lisp/thingatpt.el | 2 +- lisp/thumbs.el | 2 +- lisp/time-stamp.el | 2 +- lisp/time.el | 2 +- lisp/timezone.el | 2 +- lisp/tmm.el | 2 +- lisp/tool-bar.el | 2 +- lisp/tooltip.el | 2 +- lisp/tree-widget.el | 2 +- lisp/tutorial.el | 2 +- lisp/type-break.el | 2 +- lisp/uniquify.el | 2 +- lisp/url/ChangeLog.1 | 2 +- lisp/url/url-about.el | 2 +- lisp/url/url-auth.el | 2 +- lisp/url/url-cache.el | 2 +- lisp/url/url-cid.el | 2 +- lisp/url/url-cookie.el | 2 +- lisp/url/url-dav.el | 2 +- lisp/url/url-dired.el | 2 +- lisp/url/url-domsuf.el | 2 +- lisp/url/url-expand.el | 2 +- lisp/url/url-file.el | 2 +- lisp/url/url-ftp.el | 2 +- lisp/url/url-future.el | 2 +- lisp/url/url-gw.el | 2 +- lisp/url/url-handlers.el | 2 +- lisp/url/url-history.el | 2 +- lisp/url/url-http.el | 2 +- lisp/url/url-imap.el | 2 +- lisp/url/url-irc.el | 2 +- lisp/url/url-ldap.el | 2 +- lisp/url/url-mailto.el | 2 +- lisp/url/url-methods.el | 2 +- lisp/url/url-misc.el | 2 +- lisp/url/url-news.el | 2 +- lisp/url/url-nfs.el | 2 +- lisp/url/url-ns.el | 2 +- lisp/url/url-parse.el | 2 +- lisp/url/url-privacy.el | 2 +- lisp/url/url-proxy.el | 2 +- lisp/url/url-queue.el | 2 +- lisp/url/url-tramp.el | 2 +- lisp/url/url-util.el | 2 +- lisp/url/url-vars.el | 2 +- lisp/url/url.el | 2 +- lisp/userlock.el | 2 +- lisp/vc/add-log.el | 2 +- lisp/vc/compare-w.el | 2 +- lisp/vc/cvs-status.el | 2 +- lisp/vc/diff-mode.el | 2 +- lisp/vc/diff.el | 2 +- lisp/vc/ediff-diff.el | 2 +- lisp/vc/ediff-help.el | 2 +- lisp/vc/ediff-hook.el | 2 +- lisp/vc/ediff-init.el | 2 +- lisp/vc/ediff-merg.el | 2 +- lisp/vc/ediff-mult.el | 2 +- lisp/vc/ediff-ptch.el | 2 +- lisp/vc/ediff-util.el | 2 +- lisp/vc/ediff-vers.el | 2 +- lisp/vc/ediff-wind.el | 2 +- lisp/vc/ediff.el | 2 +- lisp/vc/log-edit.el | 2 +- lisp/vc/log-view.el | 2 +- lisp/vc/pcvs-defs.el | 2 +- lisp/vc/pcvs-info.el | 2 +- lisp/vc/pcvs-parse.el | 2 +- lisp/vc/pcvs-util.el | 2 +- lisp/vc/pcvs.el | 2 +- lisp/vc/smerge-mode.el | 2 +- lisp/vc/vc-annotate.el | 2 +- lisp/vc/vc-bzr.el | 2 +- lisp/vc/vc-cvs.el | 2 +- lisp/vc/vc-dav.el | 2 +- lisp/vc/vc-dir.el | 2 +- lisp/vc/vc-dispatcher.el | 2 +- lisp/vc/vc-filewise.el | 2 +- lisp/vc/vc-git.el | 2 +- lisp/vc/vc-hg.el | 2 +- lisp/vc/vc-hooks.el | 2 +- lisp/vc/vc-mtn.el | 2 +- lisp/vc/vc-rcs.el | 2 +- lisp/vc/vc-sccs.el | 2 +- lisp/vc/vc-src.el | 2 +- lisp/vc/vc-svn.el | 2 +- lisp/vc/vc.el | 2 +- lisp/vcursor.el | 2 +- lisp/version.el | 2 +- lisp/view.el | 2 +- lisp/vt-control.el | 2 +- lisp/vt100-led.el | 2 +- lisp/w32-fns.el | 2 +- lisp/w32-vars.el | 2 +- lisp/wdired.el | 2 +- lisp/whitespace.el | 2 +- lisp/wid-browse.el | 2 +- lisp/wid-edit.el | 2 +- lisp/widget.el | 2 +- lisp/windmove.el | 2 +- lisp/window.el | 2 +- lisp/winner.el | 2 +- lisp/woman.el | 2 +- lisp/x-dnd.el | 2 +- lisp/xdg.el | 2 +- lisp/xml.el | 2 +- lisp/xt-mouse.el | 2 +- lisp/xwidget.el | 2 +- lwlib/ChangeLog.1 | 2 +- lwlib/Makefile.in | 2 +- lwlib/deps.mk | 2 +- lwlib/lwlib-Xaw.c | 2 +- lwlib/lwlib-Xlw.c | 2 +- lwlib/lwlib-Xm.c | 2 +- lwlib/lwlib-int.h | 2 +- lwlib/lwlib-utils.c | 2 +- lwlib/lwlib-widget.h | 2 +- lwlib/lwlib.c | 2 +- lwlib/lwlib.h | 2 +- lwlib/xlwmenu.c | 2 +- lwlib/xlwmenu.h | 2 +- lwlib/xlwmenuP.h | 2 +- m4/00gnulib.m4 | 2 +- m4/absolute-header.m4 | 2 +- m4/acl.m4 | 2 +- m4/alloca.m4 | 4 ++-- m4/byteswap.m4 | 2 +- m4/c-strtod.m4 | 2 +- m4/clock_time.m4 | 2 +- m4/close-stream.m4 | 2 +- m4/count-leading-zeros.m4 | 2 +- m4/count-one-bits.m4 | 2 +- m4/count-trailing-zeros.m4 | 2 +- m4/d-type.m4 | 3 ++- m4/dirent_h.m4 | 2 +- m4/dirfd.m4 | 2 +- m4/dup2.m4 | 3 ++- m4/environ.m4 | 2 +- m4/errno_h.m4 | 2 +- m4/euidaccess.m4 | 2 +- m4/execinfo.m4 | 2 +- m4/explicit_bzero.m4 | 2 +- m4/extensions.m4 | 2 +- m4/extern-inline.m4 | 2 +- m4/faccessat.m4 | 2 +- m4/fcntl.m4 | 2 +- m4/fcntl_h.m4 | 2 +- m4/fdatasync.m4 | 2 +- m4/fdopendir.m4 | 2 +- m4/filemode.m4 | 3 ++- m4/flexmember.m4 | 2 +- m4/fpending.m4 | 2 +- m4/fpieee.m4 | 2 +- m4/fstatat.m4 | 2 +- m4/fsync.m4 | 2 +- m4/getdtablesize.m4 | 2 +- m4/getgroups.m4 | 3 ++- m4/getloadavg.m4 | 4 ++-- m4/getopt.m4 | 2 +- m4/gettime.m4 | 3 ++- m4/gettimeofday.m4 | 3 ++- m4/gnulib-common.m4 | 2 +- m4/gnulib-comp.m4 | 2 +- m4/group-member.m4 | 3 ++- m4/include_next.m4 | 2 +- m4/inttypes.m4 | 2 +- m4/largefile.m4 | 2 +- m4/limits-h.m4 | 2 +- m4/localtime-buffer.m4 | 2 +- m4/longlong.m4 | 2 +- m4/lstat.m4 | 2 +- m4/manywarnings.m4 | 2 +- m4/md5.m4 | 2 +- m4/memrchr.m4 | 4 ++-- m4/minmax.m4 | 2 +- m4/mkostemp.m4 | 2 +- m4/mktime.m4 | 4 ++-- m4/mode_t.m4 | 2 +- m4/multiarch.m4 | 2 +- m4/nocrash.m4 | 2 +- m4/nstrftime.m4 | 3 ++- m4/off_t.m4 | 2 +- m4/open-cloexec.m4 | 2 +- m4/open.m4 | 2 +- m4/pipe2.m4 | 2 +- m4/pselect.m4 | 2 +- m4/pthread_sigmask.m4 | 2 +- m4/putenv.m4 | 2 +- m4/readlink.m4 | 2 +- m4/readlinkat.m4 | 2 +- m4/sha1.m4 | 2 +- m4/sha256.m4 | 2 +- m4/sha512.m4 | 2 +- m4/sig2str.m4 | 3 ++- m4/signal_h.m4 | 2 +- m4/socklen.m4 | 2 +- m4/ssize_t.m4 | 3 ++- m4/st_dm_mode.m4 | 3 ++- m4/stat-time.m4 | 4 ++-- m4/std-gnu11.m4 | 2 +- m4/stdalign.m4 | 2 +- m4/stddef_h.m4 | 2 +- m4/stdint.m4 | 2 +- m4/stdio_h.m4 | 2 +- m4/stdlib_h.m4 | 2 +- m4/stpcpy.m4 | 2 +- m4/string_h.m4 | 2 +- m4/strtoimax.m4 | 3 ++- m4/strtoll.m4 | 3 ++- m4/symlink.m4 | 2 +- m4/sys_select_h.m4 | 2 +- m4/sys_socket_h.m4 | 2 +- m4/sys_stat_h.m4 | 2 +- m4/sys_time_h.m4 | 2 +- m4/sys_types_h.m4 | 2 +- m4/tempname.m4 | 2 +- m4/time_h.m4 | 3 ++- m4/time_r.m4 | 2 +- m4/time_rz.m4 | 2 +- m4/timegm.m4 | 2 +- m4/timer_time.m4 | 2 +- m4/timespec.m4 | 3 ++- m4/tm_gmtoff.m4 | 2 +- m4/unistd_h.m4 | 2 +- m4/unlocked-io.m4 | 2 +- m4/utimbuf.m4 | 2 +- m4/utimens.m4 | 2 +- m4/utimes.m4 | 2 +- m4/vararrays.m4 | 2 +- m4/warnings.m4 | 2 +- m4/wchar_t.m4 | 2 +- make-dist | 2 +- modules/modhelp.py | 2 +- msdos/ChangeLog.1 | 2 +- msdos/INSTALL | 2 +- msdos/README | 2 +- msdos/autogen/Makefile.in | 2 +- msdos/autogen/config.in | 2 +- msdos/inttypes.h | 2 +- msdos/mainmake.v2 | 2 +- msdos/sed1v2.inp | 2 +- msdos/sed1x.inp | 2 +- msdos/sed2v2.inp | 2 +- msdos/sed2x.inp | 2 +- msdos/sed3v2.inp | 2 +- msdos/sed4.inp | 2 +- msdos/sed5x.inp | 2 +- msdos/sed6.inp | 2 +- msdos/sedadmin.inp | 2 +- msdos/sedalloc.inp | 2 +- msdos/sedleim.inp | 2 +- msdos/sedlibcf.inp | 2 +- msdos/sedlibmk.inp | 2 +- msdos/sedlisp.inp | 2 +- nextstep/ChangeLog.1 | 2 +- nextstep/INSTALL | 2 +- nextstep/Makefile.in | 2 +- nextstep/README | 2 +- nextstep/templates/Info.plist.in | 2 +- nt/ChangeLog.1 | 2 +- nt/INSTALL | 2 +- nt/INSTALL.W64 | 2 +- nt/Makefile.in | 2 +- nt/README | 2 +- nt/README.W32 | 2 +- nt/addpm.c | 2 +- nt/cmdproxy.c | 2 +- nt/ddeclient.c | 2 +- nt/epaths.nt | 2 +- nt/gnulib-cfg.mk | 2 +- nt/icons/README | 2 +- nt/inc/grp.h | 2 +- nt/inc/inttypes.h | 2 +- nt/inc/langinfo.h | 2 +- nt/inc/ms-w32.h | 2 +- nt/inc/nl_types.h | 2 +- nt/inc/stdint.h | 2 +- nt/inc/sys/resource.h | 2 +- nt/inc/sys/socket.h | 2 +- nt/inc/sys/stat.h | 2 +- nt/inc/sys/wait.h | 2 +- nt/preprep.c | 2 +- nt/runemacs.c | 2 +- oldXMenu/Activate.c | 2 +- oldXMenu/ChangeLog.1 | 2 +- oldXMenu/Create.c | 2 +- oldXMenu/FindSel.c | 2 +- oldXMenu/Internal.c | 2 +- oldXMenu/Makefile.in | 2 +- oldXMenu/deps.mk | 2 +- oldXMenu/insque.c | 2 +- src/.gdbinit | 2 +- src/ChangeLog.1 | 2 +- src/ChangeLog.10 | 2 +- src/ChangeLog.11 | 2 +- src/ChangeLog.12 | 2 +- src/ChangeLog.13 | 2 +- src/ChangeLog.2 | 2 +- src/ChangeLog.3 | 2 +- src/ChangeLog.4 | 2 +- src/ChangeLog.5 | 2 +- src/ChangeLog.6 | 2 +- src/ChangeLog.7 | 2 +- src/ChangeLog.8 | 2 +- src/ChangeLog.9 | 2 +- src/Makefile.in | 2 +- src/README | 2 +- src/alloc.c | 2 +- src/atimer.c | 2 +- src/atimer.h | 2 +- src/bidi.c | 2 +- src/blockinput.h | 2 +- src/buffer.c | 2 +- src/buffer.h | 2 +- src/bytecode.c | 2 +- src/callint.c | 2 +- src/callproc.c | 2 +- src/casefiddle.c | 2 +- src/casetab.c | 2 +- src/category.c | 2 +- src/ccl.c | 2 +- src/character.c | 2 +- src/charset.c | 2 +- src/charset.h | 2 +- src/cm.c | 2 +- src/cm.h | 2 +- src/cmds.c | 2 +- src/coding.c | 2 +- src/coding.h | 2 +- src/commands.h | 2 +- src/composite.c | 2 +- src/composite.h | 2 +- src/conf_post.h | 2 +- src/cygw32.c | 2 +- src/cygw32.h | 2 +- src/data.c | 2 +- src/dbusbind.c | 2 +- src/decompress.c | 2 +- src/deps.mk | 2 +- src/dired.c | 2 +- src/dispextern.h | 2 +- src/dispnew.c | 2 +- src/disptab.h | 2 +- src/doc.c | 2 +- src/doprnt.c | 2 +- src/dosfns.c | 2 +- src/dosfns.h | 2 +- src/dynlib.c | 2 +- src/dynlib.h | 2 +- src/editfns.c | 2 +- src/emacs-icon.h | 2 +- src/emacs-module.c | 2 +- src/emacs-module.h.in | 2 +- src/emacs.c | 2 +- src/emacsgtkfixed.c | 2 +- src/emacsgtkfixed.h | 2 +- src/epaths.in | 2 +- src/eval.c | 2 +- src/fileio.c | 2 +- src/filelock.c | 2 +- src/firstfile.c | 2 +- src/floatfns.c | 2 +- src/fns.c | 2 +- src/font.c | 2 +- src/font.h | 2 +- src/fontset.c | 2 +- src/fontset.h | 2 +- src/frame.c | 2 +- src/frame.h | 2 +- src/fringe.c | 2 +- src/ftcrfont.c | 2 +- src/ftfont.c | 2 +- src/ftxfont.c | 2 +- src/getpagesize.h | 2 +- src/gfilenotify.c | 2 +- src/gmalloc.c | 2 +- src/gnutls.c | 2 +- src/gnutls.h | 2 +- src/gtkutil.c | 2 +- src/gtkutil.h | 2 +- src/image.c | 2 +- src/indent.c | 2 +- src/indent.h | 2 +- src/inotify.c | 2 +- src/insdel.c | 2 +- src/intervals.c | 2 +- src/intervals.h | 2 +- src/keyboard.c | 2 +- src/keyboard.h | 2 +- src/keymap.c | 2 +- src/keymap.h | 2 +- src/kqueue.c | 2 +- src/lastfile.c | 2 +- src/lcms.c | 2 +- src/lisp.h | 2 +- src/lread.c | 2 +- src/macfont.h | 2 +- src/macfont.m | 2 +- src/macros.c | 2 +- src/macros.h | 2 +- src/marker.c | 2 +- src/menu.c | 2 +- src/menu.h | 2 +- src/minibuf.c | 2 +- src/msdos.c | 2 +- src/msdos.h | 2 +- src/nsfns.m | 2 +- src/nsfont.m | 2 +- src/nsgui.h | 2 +- src/nsimage.m | 2 +- src/nsmenu.m | 2 +- src/nsselect.m | 2 +- src/nsterm.h | 2 +- src/nsterm.m | 2 +- src/print.c | 2 +- src/process.c | 2 +- src/process.h | 2 +- src/profiler.c | 2 +- src/puresize.h | 2 +- src/ralloc.c | 2 +- src/regex.c | 2 +- src/regex.h | 2 +- src/region-cache.c | 2 +- src/region-cache.h | 2 +- src/scroll.c | 2 +- src/search.c | 2 +- src/sheap.c | 2 +- src/sheap.h | 2 +- src/sound.c | 2 +- src/syntax.c | 2 +- src/syntax.h | 2 +- src/sysdep.c | 2 +- src/sysselect.h | 2 +- src/syssignal.h | 2 +- src/sysstdio.h | 2 +- src/systhread.c | 2 +- src/systhread.h | 2 +- src/systime.h | 2 +- src/systty.h | 2 +- src/syswait.h | 2 +- src/term.c | 2 +- src/termcap.c | 2 +- src/termchar.h | 2 +- src/termhooks.h | 2 +- src/terminal.c | 2 +- src/terminfo.c | 2 +- src/termopts.h | 2 +- src/textprop.c | 2 +- src/thread.c | 2 +- src/thread.h | 2 +- src/tparam.c | 2 +- src/tparam.h | 2 +- src/undo.c | 2 +- src/unexaix.c | 2 +- src/unexcoff.c | 2 +- src/unexcw.c | 2 +- src/unexelf.c | 2 +- src/unexmacosx.c | 2 +- src/unexw32.c | 2 +- src/vm-limit.c | 2 +- src/w16select.c | 2 +- src/w32.c | 2 +- src/w32.h | 2 +- src/w32common.h | 2 +- src/w32console.c | 2 +- src/w32fns.c | 2 +- src/w32font.c | 2 +- src/w32font.h | 2 +- src/w32gui.h | 2 +- src/w32heap.c | 2 +- src/w32heap.h | 2 +- src/w32inevt.c | 2 +- src/w32inevt.h | 2 +- src/w32menu.c | 2 +- src/w32notify.c | 2 +- src/w32proc.c | 2 +- src/w32reg.c | 2 +- src/w32select.c | 2 +- src/w32select.h | 2 +- src/w32term.c | 2 +- src/w32term.h | 2 +- src/w32uniscribe.c | 2 +- src/w32xfns.c | 2 +- src/widget.c | 2 +- src/widget.h | 2 +- src/widgetprv.h | 2 +- src/window.c | 2 +- src/window.h | 2 +- src/xdisp.c | 2 +- src/xfaces.c | 2 +- src/xfns.c | 2 +- src/xfont.c | 2 +- src/xftfont.c | 2 +- src/xgselect.c | 2 +- src/xgselect.h | 2 +- src/xmenu.c | 2 +- src/xml.c | 2 +- src/xrdb.c | 2 +- src/xselect.c | 2 +- src/xsettings.c | 2 +- src/xsettings.h | 2 +- src/xsmfns.c | 2 +- src/xterm.c | 2 +- src/xterm.h | 2 +- src/xwidget.c | 2 +- src/xwidget.h | 2 +- test/ChangeLog.1 | 2 +- test/Makefile.in | 2 +- test/README | 2 +- test/data/emacs-module/mod-test.c | 2 +- test/lib-src/emacsclient-tests.el | 2 +- test/lisp/abbrev-tests.el | 2 +- test/lisp/arc-mode-tests.el | 2 +- test/lisp/auth-source-pass-tests.el | 2 +- test/lisp/auth-source-tests.el | 2 +- test/lisp/autorevert-tests.el | 2 +- test/lisp/buff-menu-tests.el | 2 +- test/lisp/calc/calc-tests.el | 2 +- test/lisp/calendar/icalendar-tests.el | 2 +- test/lisp/calendar/parse-time-tests.el | 2 +- test/lisp/calendar/todo-mode-tests.el | 2 +- test/lisp/char-fold-tests.el | 2 +- test/lisp/color-tests.el | 2 +- test/lisp/comint-tests.el | 2 +- test/lisp/dabbrev-tests.el | 2 +- test/lisp/descr-text-tests.el | 2 +- test/lisp/dired-aux-tests.el | 2 +- test/lisp/dired-tests.el | 2 +- test/lisp/dired-x-tests.el | 2 +- test/lisp/dom-tests.el | 2 +- test/lisp/electric-tests.el | 2 +- test/lisp/emacs-lisp/benchmark-tests.el | 2 +- test/lisp/emacs-lisp/bytecomp-tests.el | 2 +- test/lisp/emacs-lisp/checkdoc-tests.el | 2 +- test/lisp/emacs-lisp/cl-extra-tests.el | 2 +- test/lisp/emacs-lisp/cl-generic-tests.el | 2 +- test/lisp/emacs-lisp/cl-lib-tests.el | 2 +- test/lisp/emacs-lisp/cl-macs-tests.el | 2 +- test/lisp/emacs-lisp/cl-print-tests.el | 2 +- test/lisp/emacs-lisp/cl-seq-tests.el | 2 +- test/lisp/emacs-lisp/cl-tests.el | 2 +- test/lisp/emacs-lisp/derived-tests.el | 2 +- .../edebug-resources/edebug-test-code.el | 2 +- test/lisp/emacs-lisp/edebug-tests.el | 2 +- .../eieio-tests/eieio-test-methodinvoke.el | 2 +- .../eieio-tests/eieio-test-persist.el | 2 +- .../emacs-lisp/eieio-tests/eieio-tests.el | 2 +- test/lisp/emacs-lisp/ert-tests.el | 2 +- test/lisp/emacs-lisp/ert-x-tests.el | 2 +- test/lisp/emacs-lisp/generator-tests.el | 2 +- test/lisp/emacs-lisp/gv-tests.el | 2 +- test/lisp/emacs-lisp/let-alist-tests.el | 2 +- test/lisp/emacs-lisp/lisp-mode-tests.el | 2 +- test/lisp/emacs-lisp/lisp-tests.el | 2 +- test/lisp/emacs-lisp/map-tests.el | 2 +- test/lisp/emacs-lisp/nadvice-tests.el | 2 +- test/lisp/emacs-lisp/package-tests.el | 2 +- test/lisp/emacs-lisp/pcase-tests.el | 2 +- test/lisp/emacs-lisp/pp-tests.el | 2 +- test/lisp/emacs-lisp/regexp-opt-tests.el | 2 +- test/lisp/emacs-lisp/ring-tests.el | 2 +- test/lisp/emacs-lisp/rmc-tests.el | 2 +- test/lisp/emacs-lisp/rx-tests.el | 2 +- test/lisp/emacs-lisp/seq-tests.el | 2 +- test/lisp/emacs-lisp/shadow-tests.el | 2 +- test/lisp/emacs-lisp/subr-x-tests.el | 2 +- test/lisp/emacs-lisp/tabulated-list-test.el | 2 +- .../testcover-resources/testcases.el | 2 +- test/lisp/emacs-lisp/testcover-tests.el | 2 +- test/lisp/emacs-lisp/thunk-tests.el | 2 +- test/lisp/emacs-lisp/timer-tests.el | 2 +- test/lisp/emulation/viper-tests.el | 2 +- test/lisp/epg-tests.el | 2 +- test/lisp/erc/erc-track-tests.el | 2 +- test/lisp/eshell/em-hist-tests.el | 2 +- test/lisp/eshell/em-ls-tests.el | 2 +- test/lisp/eshell/eshell-tests.el | 2 +- test/lisp/faces-tests.el | 2 +- test/lisp/ffap-tests.el | 2 +- test/lisp/filenotify-tests.el | 2 +- test/lisp/files-tests.el | 2 +- test/lisp/files-x-tests.el | 2 +- test/lisp/gnus/gnus-tests.el | 2 +- test/lisp/gnus/message-tests.el | 2 +- test/lisp/help-fns-tests.el | 2 +- test/lisp/hi-lock-tests.el | 2 +- test/lisp/htmlfontify-tests.el | 2 +- test/lisp/ibuffer-tests.el | 2 +- test/lisp/ido-tests.el | 2 +- test/lisp/imenu-tests.el | 2 +- test/lisp/info-xref-tests.el | 2 +- test/lisp/international/mule-tests.el | 2 +- test/lisp/international/mule-util-tests.el | 2 +- .../lisp/international/ucs-normalize-tests.el | 2 +- test/lisp/isearch-tests.el | 2 +- test/lisp/jit-lock-tests.el | 2 +- test/lisp/json-tests.el | 2 +- test/lisp/kmacro-tests.el | 2 +- test/lisp/ls-lisp-tests.el | 2 +- test/lisp/mail/rmail-tests.el | 2 +- test/lisp/man-tests.el | 2 +- test/lisp/md4-tests.el | 2 +- test/lisp/minibuffer-tests.el | 2 +- test/lisp/mouse-tests.el | 2 +- test/lisp/net/dbus-tests.el | 2 +- test/lisp/net/gnutls-tests.el | 2 +- test/lisp/net/mailcap-tests.el | 2 +- test/lisp/net/network-stream-tests.el | 2 +- test/lisp/net/newsticker-tests.el | 2 +- test/lisp/net/puny-tests.el | 2 +- test/lisp/net/sasl-scram-rfc-tests.el | 2 +- test/lisp/net/shr-tests.el | 2 +- test/lisp/net/tramp-tests.el | 2 +- test/lisp/obarray-tests.el | 2 +- test/lisp/org/org-tests.el | 2 +- test/lisp/progmodes/bat-mode-tests.el | 2 +- test/lisp/progmodes/cc-mode-tests.el | 2 +- test/lisp/progmodes/compile-tests.el | 2 +- test/lisp/progmodes/elisp-mode-tests.el | 2 +- test/lisp/progmodes/etags-tests.el | 2 +- test/lisp/progmodes/f90-tests.el | 2 +- test/lisp/progmodes/flymake-tests.el | 2 +- test/lisp/progmodes/js-tests.el | 2 +- test/lisp/progmodes/python-tests.el | 2 +- test/lisp/progmodes/ruby-mode-tests.el | 2 +- test/lisp/progmodes/sql-tests.el | 2 +- test/lisp/progmodes/subword-tests.el | 2 +- test/lisp/progmodes/xref-tests.el | 2 +- test/lisp/ps-print-tests.el | 2 +- test/lisp/register-tests.el | 2 +- test/lisp/replace-tests.el | 2 +- test/lisp/rot13-tests.el | 2 +- test/lisp/ses-tests.el | 2 +- test/lisp/shadowfile-tests.el | 2 +- test/lisp/shell-tests.el | 2 +- test/lisp/simple-tests.el | 2 +- test/lisp/sort-tests.el | 2 +- test/lisp/soundex-tests.el | 2 +- test/lisp/subr-tests.el | 2 +- test/lisp/tar-mode-tests.el | 2 +- test/lisp/term-tests.el | 2 +- test/lisp/textmodes/css-mode-tests.el | 2 +- test/lisp/textmodes/dns-mode-tests.el | 2 +- test/lisp/textmodes/mhtml-mode-tests.el | 2 +- test/lisp/textmodes/reftex-tests.el | 2 +- test/lisp/textmodes/sgml-mode-tests.el | 2 +- test/lisp/textmodes/tildify-tests.el | 2 +- test/lisp/thingatpt-tests.el | 2 +- test/lisp/url/url-auth-tests.el | 2 +- test/lisp/url/url-expand-tests.el | 2 +- test/lisp/url/url-file-tests.el | 2 +- test/lisp/url/url-future-tests.el | 2 +- test/lisp/url/url-misc-tests.el | 2 +- test/lisp/url/url-parse-tests.el | 2 +- test/lisp/url/url-tramp-tests.el | 2 +- test/lisp/url/url-util-tests.el | 2 +- test/lisp/vc/add-log-tests.el | 2 +- test/lisp/vc/diff-mode-tests.el | 2 +- test/lisp/vc/ediff-diff-tests.el | 2 +- test/lisp/vc/ediff-ptch-tests.el | 2 +- test/lisp/vc/smerge-mode-tests.el | 2 +- test/lisp/vc/vc-bzr-tests.el | 2 +- test/lisp/vc/vc-hg-tests.el | 2 +- test/lisp/vc/vc-tests.el | 2 +- test/lisp/wdired-tests.el | 2 +- test/lisp/whitespace-tests.el | 2 +- test/lisp/xdg-tests.el | 2 +- test/lisp/xml-tests.el | 2 +- test/lisp/xt-mouse-tests.el | 2 +- test/manual/biditest.el | 2 +- test/manual/cedet/cedet-utests.el | 2 +- test/manual/cedet/ede-tests.el | 2 +- test/manual/cedet/semantic-ia-utest.el | 2 +- test/manual/cedet/semantic-tests.el | 2 +- test/manual/cedet/semantic-utest-c.el | 2 +- test/manual/cedet/semantic-utest.el | 2 +- test/manual/cedet/srecode-tests.el | 2 +- test/manual/cedet/tests/test.c | 2 +- test/manual/cedet/tests/test.el | 2 +- test/manual/cedet/tests/test.make | 2 +- test/manual/cedet/tests/testdoublens.cpp | 2 +- test/manual/cedet/tests/testdoublens.hpp | 2 +- test/manual/cedet/tests/testjavacomp.java | 2 +- test/manual/cedet/tests/testpolymorph.cpp | 2 +- test/manual/cedet/tests/testspp.c | 2 +- test/manual/cedet/tests/testsppreplace.c | 2 +- test/manual/cedet/tests/testsppreplaced.c | 2 +- test/manual/cedet/tests/testsubclass.cpp | 2 +- test/manual/cedet/tests/testsubclass.hh | 2 +- test/manual/cedet/tests/testtypedefs.cpp | 2 +- test/manual/cedet/tests/testvarnames.c | 2 +- test/manual/etags/c-src/abbrev.c | 2 +- test/manual/etags/c-src/emacs/src/gmalloc.c | 2 +- test/manual/etags/c-src/emacs/src/keyboard.c | 2 +- test/manual/etags/c-src/emacs/src/lisp.h | 2 +- test/manual/etags/c-src/emacs/src/regex.h | 2 +- test/manual/etags/c-src/etags.c | 2 +- test/manual/etags/c-src/exit.c | 2 +- test/manual/etags/c-src/exit.strange_suffix | 2 +- test/manual/etags/c-src/getopt.h | 2 +- test/manual/etags/c-src/sysdep.h | 2 +- .../el-src/emacs/lisp/progmodes/etags.el | 2 +- test/manual/etags/tex-src/texinfo.tex | 2 +- test/manual/etags/y-src/cccp.c | 2 +- test/manual/etags/y-src/parse.c | 2 +- test/manual/etags/y-src/parse.y | 2 +- test/manual/image-size-tests.el | 2 +- test/manual/indent/pascal.pas | 2 +- test/manual/redisplay-testsuite.el | 2 +- test/manual/rmailmm.el | 2 +- test/manual/scroll-tests.el | 2 +- test/src/alloc-tests.el | 2 +- test/src/buffer-tests.el | 2 +- test/src/callproc-tests.el | 2 +- test/src/casefiddle-tests.el | 2 +- test/src/charset-tests.el | 2 +- test/src/chartab-tests.el | 2 +- test/src/cmds-tests.el | 2 +- test/src/coding-tests.el | 2 +- test/src/data-tests.el | 2 +- test/src/decompress-tests.el | 2 +- test/src/doc-tests.el | 2 +- test/src/editfns-tests.el | 2 +- test/src/emacs-module-tests.el | 2 +- test/src/eval-tests.el | 2 +- test/src/fileio-tests.el | 2 +- test/src/floatfns-tests.el | 2 +- test/src/fns-tests.el | 2 +- test/src/font-tests.el | 2 +- test/src/inotify-tests.el | 2 +- test/src/keyboard-tests.el | 2 +- test/src/keymap-tests.el | 2 +- test/src/lcms-tests.el | 2 +- test/src/lread-tests.el | 2 +- test/src/marker-tests.el | 2 +- test/src/minibuf-tests.el | 2 +- test/src/print-tests.el | 2 +- test/src/process-tests.el | 2 +- test/src/regex-tests.el | 2 +- test/src/syntax-tests.el | 2 +- test/src/textprop-tests.el | 2 +- test/src/thread-tests.el | 2 +- test/src/undo-tests.el | 2 +- test/src/xml-tests.el | 2 +- 2579 files changed, 2633 insertions(+), 2601 deletions(-) diff --git a/.gitattributes b/.gitattributes index 15f83aeeb186..65a943f69540 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,6 @@ # Attributes of Emacs files in the Git repository. -# Copyright 2015-2018 Free Software Foundation, Inc. +# Copyright 2015-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/.gitignore b/.gitignore index d3712b0d6cf5..48b15837d43a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Files that Git should ignore in the Emacs source directory. -# Copyright 2009-2018 Free Software Foundation, Inc. +# Copyright 2009-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 60c4d551d7ba..af573affc93c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -# Copyright (C) 2017-2018 Free Software Foundation, Inc. +# Copyright (C) 2017-2019 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/ChangeLog.1 b/ChangeLog.1 index 011b383ca93d..8324af328579 100644 --- a/ChangeLog.1 +++ b/ChangeLog.1 @@ -14700,7 +14700,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2018 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/ChangeLog.2 b/ChangeLog.2 index b01ab19ebec8..8695c410ecf3 100644 --- a/ChangeLog.2 +++ b/ChangeLog.2 @@ -35787,7 +35787,7 @@ See ChangeLog.1 for earlier changes. ;; coding: utf-8 ;; End: - Copyright (C) 2015-2018 Free Software Foundation, Inc. + Copyright (C) 2015-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/ChangeLog.3 b/ChangeLog.3 index 194fa685c915..decee10a4eed 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -63455,7 +63455,7 @@ See ChangeLog.1 for earlier changes. ;; coding: utf-8 ;; End: - Copyright (C) 2015-2018 Free Software Foundation, Inc. + Copyright (C) 2015-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/GNUmakefile b/GNUmakefile index 0c1a757e20c8..e878dbbb55a1 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,6 +1,6 @@ # Build Emacs from a fresh tarball or version-control checkout. -# Copyright (C) 2011-2018 Free Software Foundation, Inc. +# Copyright (C) 2011-2019 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/INSTALL b/INSTALL index 0c56fff6d4a6..72bba25df81a 100644 --- a/INSTALL +++ b/INSTALL @@ -1,5 +1,5 @@ GNU Emacs Installation Guide -Copyright (C) 1992, 1994, 1996-1997, 2000-2018 Free Software Foundation, +Copyright (C) 1992, 1994, 1996-1997, 2000-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/INSTALL.REPO b/INSTALL.REPO index caa46b478f13..6dca9dd7147b 100644 --- a/INSTALL.REPO +++ b/INSTALL.REPO @@ -76,7 +76,7 @@ never platform-specific. -Copyright (C) 2002-2018 Free Software Foundation, Inc. +Copyright (C) 2002-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/Makefile.in b/Makefile.in index f48f785fccaa..364deeae226a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1992-2018 Free Software Foundation, Inc. +# Copyright (C) 1992-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/README b/README index ceaecc25a752..a95c82adbfa4 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/admin/ChangeLog.1 b/admin/ChangeLog.1 index c31875094db0..6889407074c5 100644 --- a/admin/ChangeLog.1 +++ b/admin/ChangeLog.1 @@ -2577,7 +2577,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 2001-2018 Free Software Foundation, Inc. + Copyright (C) 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/admin/README b/admin/README index 58e3c5b423e6..54b79abc5b1c 100644 --- a/admin/README +++ b/admin/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/admin/admin.el b/admin/admin.el index 1cad7ae27762..41b1854c90d1 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -1,6 +1,6 @@ ;;; admin.el --- utilities for Emacs administration -;; Copyright (C) 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 2001-2019 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/admin/alloc-colors.c b/admin/alloc-colors.c index e1a344bee89b..5f47accf6825 100644 --- a/admin/alloc-colors.c +++ b/admin/alloc-colors.c @@ -1,6 +1,6 @@ /* Allocate X colors. Used for testing with dense colormaps. -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/admin/authors.el b/admin/authors.el index 1ff98fa588ae..a3f8bdde8412 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -1,7 +1,7 @@ ;;; authors.el --- utility for maintaining Emacs's AUTHORS file -;; Copyright (C) 2000-2018 Free Software Foundation, Inc. +;; Copyright (C) 2000-2019 Free Software Foundation, Inc. ;; Author: Gerd Moellmann ;; Maintainer: emacs-devel@gnu.org diff --git a/admin/build-configs b/admin/build-configs index 3739d4b953fe..09800fc17206 100755 --- a/admin/build-configs +++ b/admin/build-configs @@ -1,7 +1,7 @@ #! /usr/bin/perl # Build Emacs in several different configurations. -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/bzrmerge.el b/admin/bzrmerge.el index cedb625fb0dc..8c4a444bdcd7 100644 --- a/admin/bzrmerge.el +++ b/admin/bzrmerge.el @@ -1,6 +1,6 @@ ;;; bzrmerge.el --- help merge one Emacs bzr branch to another -;; Copyright (C) 2010-2018 Free Software Foundation, Inc. +;; Copyright (C) 2010-2019 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: maint diff --git a/admin/charsets/Makefile.in b/admin/charsets/Makefile.in index 8755c181f03e..0327a5df7eb0 100644 --- a/admin/charsets/Makefile.in +++ b/admin/charsets/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 2015-2018 Free Software Foundation, Inc. +# Copyright (C) 2015-2019 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/charsets/mapconv b/admin/charsets/mapconv index c7e7aa7d2cfd..8e19972f3dfb 100755 --- a/admin/charsets/mapconv +++ b/admin/charsets/mapconv @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright (C) 2015-2018 Free Software Foundation, Inc. +# Copyright (C) 2015-2019 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/charsets/mapfiles/README b/admin/charsets/mapfiles/README index 825ec6242686..7e4493bdc656 100644 --- a/admin/charsets/mapfiles/README +++ b/admin/charsets/mapfiles/README @@ -1,4 +1,4 @@ -Copyright (C) 2009-2018 Free Software Foundation, Inc. +Copyright (C) 2009-2019 Free Software Foundation, Inc. Copyright (C) 2009, 2010, 2011 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H13PRO009 diff --git a/admin/cus-test.el b/admin/cus-test.el index 13d777dfcea4..f9fd53d98e85 100644 --- a/admin/cus-test.el +++ b/admin/cus-test.el @@ -1,6 +1,6 @@ ;;; cus-test.el --- tests for custom types and load problems -;; Copyright (C) 1998, 2000, 2002-2018 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2000, 2002-2019 Free Software Foundation, Inc. ;; Author: Markus Rost ;; Maintainer: Markus Rost diff --git a/admin/diff-tar-files b/admin/diff-tar-files index 87446fb00e45..79a035baeea0 100755 --- a/admin/diff-tar-files +++ b/admin/diff-tar-files @@ -1,6 +1,6 @@ #! /bin/sh -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/find-gc.el b/admin/find-gc.el index fb564039c7b4..c985b1f7b216 100644 --- a/admin/find-gc.el +++ b/admin/find-gc.el @@ -1,6 +1,6 @@ ;;; find-gc.el --- detect functions that call the garbage collector -;; Copyright (C) 1992, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2019 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/admin/gitmerge.el b/admin/gitmerge.el index 1058088cce94..bcf32f12e7f7 100644 --- a/admin/gitmerge.el +++ b/admin/gitmerge.el @@ -1,6 +1,6 @@ ;;; gitmerge.el --- help merge one Emacs branch into another -;; Copyright (C) 2010-2018 Free Software Foundation, Inc. +;; Copyright (C) 2010-2019 Free Software Foundation, Inc. ;; Authors: David Engster ;; Stefan Monnier diff --git a/admin/grammars/Makefile.in b/admin/grammars/Makefile.in index 1f6a8639b336..2d9d0e8a47f3 100644 --- a/admin/grammars/Makefile.in +++ b/admin/grammars/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -## Copyright (C) 2013-2018 Free Software Foundation, Inc. +## Copyright (C) 2013-2019 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/admin/grammars/c.by b/admin/grammars/c.by index 3755c3232201..bd1b6a528eef 100644 --- a/admin/grammars/c.by +++ b/admin/grammars/c.by @@ -1,5 +1,5 @@ ;;; c.by -- LL grammar for C/C++ language specification -;; Copyright (C) 1999-2018 Free Software Foundation, Inc. +;; Copyright (C) 1999-2019 Free Software Foundation, Inc. ;; ;; Author: Eric M. Ludlam ;; David Ponce diff --git a/admin/grammars/grammar.wy b/admin/grammars/grammar.wy index d8647f935516..f7664de655a6 100644 --- a/admin/grammars/grammar.wy +++ b/admin/grammars/grammar.wy @@ -1,6 +1,6 @@ ;;; semantic-grammar.wy -- LALR grammar of Semantic input grammars ;; -;; Copyright (C) 2002-2018 Free Software Foundation, Inc. +;; Copyright (C) 2002-2019 Free Software Foundation, Inc. ;; ;; Author: David Ponce ;; Maintainer: David Ponce diff --git a/admin/grammars/java-tags.wy b/admin/grammars/java-tags.wy index b3c23d5ce1e4..88beafeddb42 100644 --- a/admin/grammars/java-tags.wy +++ b/admin/grammars/java-tags.wy @@ -1,6 +1,6 @@ ;;; java-tags.wy -- Semantic LALR grammar for Java -;; Copyright (C) 2002-2018 Free Software Foundation, Inc. +;; Copyright (C) 2002-2019 Free Software Foundation, Inc. ;; ;; Author: David Ponce ;; Maintainer: David Ponce diff --git a/admin/grammars/js.wy b/admin/grammars/js.wy index 653d2b0fd13a..441fd416c128 100644 --- a/admin/grammars/js.wy +++ b/admin/grammars/js.wy @@ -1,6 +1,6 @@ ;;; javascript-jv.wy -- LALR grammar for Javascript -;; Copyright (C) 2005-2018 Free Software Foundation, Inc. +;; Copyright (C) 2005-2019 Free Software Foundation, Inc. ;; Copyright (C) 1998-2011 Ecma International. ;; Author: Joakim Verona diff --git a/admin/grammars/make.by b/admin/grammars/make.by index 3f550dfb2015..905166d221de 100644 --- a/admin/grammars/make.by +++ b/admin/grammars/make.by @@ -1,6 +1,6 @@ ;;; make.by -- BY notation for Makefiles. -;; Copyright (C) 1999-2018 Free Software Foundation, Inc. +;; Copyright (C) 1999-2019 Free Software Foundation, Inc. ;; ;; Author: Eric M. Ludlam ;; David Ponce diff --git a/admin/grammars/python.wy b/admin/grammars/python.wy index 1f02d439d533..5e5bdc194cc8 100644 --- a/admin/grammars/python.wy +++ b/admin/grammars/python.wy @@ -1,6 +1,6 @@ ;;; python.wy -- LALR grammar for Python -;; Copyright (C) 2002-2018 Free Software Foundation, Inc. +;; Copyright (C) 2002-2019 Free Software Foundation, Inc. ;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, ;; 2009, 2010 Python Software Foundation; All Rights Reserved diff --git a/admin/grammars/scheme.by b/admin/grammars/scheme.by index ce9fff0286a5..91c7808e84cc 100644 --- a/admin/grammars/scheme.by +++ b/admin/grammars/scheme.by @@ -1,6 +1,6 @@ ;;; scheme.by -- Scheme BNF language specification -;; Copyright (C) 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 2001-2019 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/admin/grammars/srecode-template.wy b/admin/grammars/srecode-template.wy index de52ede8e75c..fb56d23af50a 100644 --- a/admin/grammars/srecode-template.wy +++ b/admin/grammars/srecode-template.wy @@ -1,6 +1,6 @@ ;;; srecode-template.wy --- Semantic Recoder Template parser -;; Copyright (C) 2005-2018 Free Software Foundation, Inc. +;; Copyright (C) 2005-2019 Free Software Foundation, Inc. ;; Author: Eric Ludlam ;; Keywords: syntax diff --git a/admin/last-chance.el b/admin/last-chance.el index c536ca8b716d..5f993be18e27 100644 --- a/admin/last-chance.el +++ b/admin/last-chance.el @@ -1,6 +1,6 @@ ;;; last-chance.el --- dangling deterrence -*- lexical-binding: t; -*- -;; Copyright (C) 2016-2018 Free Software Foundation, Inc. +;; Copyright (C) 2016-2019 Free Software Foundation, Inc. ;; Author: Thien-Thi Nguyen ;; Maintainer: emacs-devel@gnu.org diff --git a/admin/make-emacs b/admin/make-emacs index 5ff2f5a1eef4..b7cca06e1c67 100755 --- a/admin/make-emacs +++ b/admin/make-emacs @@ -2,7 +2,7 @@ # Build Emacs with various options for profiling, debugging, # with and without warnings enabled etc. -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/make-manuals b/admin/make-manuals index 7b9f6a287180..4e65d3d87532 100755 --- a/admin/make-manuals +++ b/admin/make-manuals @@ -1,7 +1,7 @@ #!/bin/bash ### make-manuals - create the Emacs manuals to upload to the gnu.org website -## Copyright 2018 Free Software Foundation, Inc. +## Copyright 2018-2019 Free Software Foundation, Inc. ## Author: Glenn Morris diff --git a/admin/merge-gnulib b/admin/merge-gnulib index b23adc26fb27..8e768a423197 100755 --- a/admin/merge-gnulib +++ b/admin/merge-gnulib @@ -4,7 +4,7 @@ # # admin/merge-gnulib -# Copyright 2012-2018 Free Software Foundation, Inc. +# Copyright 2012-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/merge-pkg-config b/admin/merge-pkg-config index a7d71227d8d3..61f96e53f941 100755 --- a/admin/merge-pkg-config +++ b/admin/merge-pkg-config @@ -4,7 +4,7 @@ # # admin/merge-pkg-config -# Copyright 2014-2018 Free Software Foundation, Inc. +# Copyright 2014-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/notes/copyright b/admin/notes/copyright index 246950eca544..b2c74a835be9 100644 --- a/admin/notes/copyright +++ b/admin/notes/copyright @@ -1,4 +1,4 @@ -Copyright (C) 2007-2018 Free Software Foundation, Inc. +Copyright (C) 2007-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/admin/notes/font-backend b/admin/notes/font-backend index fcb9c3717805..eef7439bcc11 100644 --- a/admin/notes/font-backend +++ b/admin/notes/font-backend @@ -1,4 +1,4 @@ -Copyright (C) 2002-2018 Free Software Foundation, Inc. +Copyright (C) 2002-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/admin/notes/hydra b/admin/notes/hydra index 5fe833236b18..49c995f3f7ed 100644 --- a/admin/notes/hydra +++ b/admin/notes/hydra @@ -1,6 +1,6 @@ -*- mode: outline; coding: utf-8 -*- -Copyright (C) 2013-2018 Free Software Foundation, Inc. +Copyright (C) 2013-2019 Free Software Foundation, Inc. See the end of the file for license conditions. NOTES FOR EMACS CONTINUOUS BUILD ON HYDRA diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty index 5b34bb598ef5..c124f37d23b6 100644 --- a/admin/notes/multi-tty +++ b/admin/notes/multi-tty @@ -1,6 +1,6 @@ -*- coding: utf-8; mode: text; -*- -Copyright (C) 2007-2018 Free Software Foundation, Inc. +Copyright (C) 2007-2019 Free Software Foundation, Inc. See the end of the file for license conditions. From README.multi-tty in the multi-tty branch. diff --git a/admin/notes/unicode b/admin/notes/unicode index 4240ac1e76db..d641e60ff730 100644 --- a/admin/notes/unicode +++ b/admin/notes/unicode @@ -1,6 +1,6 @@ -*-mode: text; coding: utf-8;-*- -Copyright (C) 2002-2018 Free Software Foundation, Inc. +Copyright (C) 2002-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Importing a new Unicode Standard version into Emacs diff --git a/admin/notes/www b/admin/notes/www index 2652eccc15f7..ed2349d96678 100644 --- a/admin/notes/www +++ b/admin/notes/www @@ -1,6 +1,6 @@ -*- outline -*- -Copyright (C) 2013-2018 Free Software Foundation, Inc. +Copyright (C) 2013-2019 Free Software Foundation, Inc. See the end of the file for license conditions. NOTES FOR EMACS WWW PAGES diff --git a/admin/nt/README-UNDUMP.W32 b/admin/nt/README-UNDUMP.W32 index e54e208a9be8..d692a30dbcf3 100644 --- a/admin/nt/README-UNDUMP.W32 +++ b/admin/nt/README-UNDUMP.W32 @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Emacs for Windows diff --git a/admin/nt/README-ftp-server b/admin/nt/README-ftp-server index 3378820e16b0..0c68d99c2ffe 100644 --- a/admin/nt/README-ftp-server +++ b/admin/nt/README-ftp-server @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Precompiled Distributions of diff --git a/admin/nt/dist-build/build-dep-zips.py b/admin/nt/dist-build/build-dep-zips.py index fe98ebdcc7c8..c6864e1687f0 100755 --- a/admin/nt/dist-build/build-dep-zips.py +++ b/admin/nt/dist-build/build-dep-zips.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -## Copyright (C) 2017-2018 Free Software Foundation, Inc. +## Copyright (C) 2017-2019 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/admin/nt/dist-build/build-zips.sh b/admin/nt/dist-build/build-zips.sh index d008626bb3b8..0069dc9c46bf 100755 --- a/admin/nt/dist-build/build-zips.sh +++ b/admin/nt/dist-build/build-zips.sh @@ -1,6 +1,6 @@ #!/bin/bash -## Copyright (C) 2017-2018 Free Software Foundation, Inc. +## Copyright (C) 2017-2019 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/admin/quick-install-emacs b/admin/quick-install-emacs index e2e00d5b8867..71c4431418da 100755 --- a/admin/quick-install-emacs +++ b/admin/quick-install-emacs @@ -1,7 +1,7 @@ #!/bin/sh ### quick-install-emacs --- do a halfway-decent job of installing emacs quickly -## Copyright (C) 2001-2018 Free Software Foundation, Inc. +## Copyright (C) 2001-2019 Free Software Foundation, Inc. ## Author: Miles Bader diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in index 818404f8baf5..31efba0227a8 100644 --- a/admin/unidata/Makefile.in +++ b/admin/unidata/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 2012-2018 Free Software Foundation, Inc. +# Copyright (C) 2012-2019 Free Software Foundation, Inc. # Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/unidata/blocks.awk b/admin/unidata/blocks.awk index ea62d87d4430..1b1d3fc66ba7 100755 --- a/admin/unidata/blocks.awk +++ b/admin/unidata/blocks.awk @@ -1,6 +1,6 @@ #!/usr/bin/awk -f -## Copyright (C) 2015-2018 Free Software Foundation, Inc. +## Copyright (C) 2015-2019 Free Software Foundation, Inc. ## Author: Glenn Morris diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el index 8cc1893adbbf..749cde2178c8 100644 --- a/admin/unidata/unidata-gen.el +++ b/admin/unidata/unidata-gen.el @@ -1,6 +1,6 @@ ;; unidata-gen.el -- Create files containing character property data. -;; Copyright (C) 2008-2018 Free Software Foundation, Inc. +;; Copyright (C) 2008-2019 Free Software Foundation, Inc. ;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/unidata/uvs.el b/admin/unidata/uvs.el index 6bb6a2ab763a..277d33bbd816 100644 --- a/admin/unidata/uvs.el +++ b/admin/unidata/uvs.el @@ -1,6 +1,6 @@ ;;; uvs.el --- utility for UVS (format 14) cmap subtables in OpenType fonts. -;; Copyright (C) 2014-2018 Free Software Foundation, Inc. +;; Copyright (C) 2014-2019 Free Software Foundation, Inc. ;; Author: YAMAMOTO Mitsuharu diff --git a/admin/update-copyright b/admin/update-copyright index d3ffb4774c30..44cb84d8cc9d 100755 --- a/admin/update-copyright +++ b/admin/update-copyright @@ -7,7 +7,7 @@ # By default, this script uses the local-time calendar year. # Set the UPDATE_COPYRIGHT_YEAR environment variable to override the default. -# Copyright 2013-2018 Free Software Foundation, Inc. +# Copyright 2013-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/update_autogen b/admin/update_autogen index d21186747926..67ed5d66465e 100755 --- a/admin/update_autogen +++ b/admin/update_autogen @@ -1,7 +1,7 @@ #!/usr/bin/env bash ### update_autogen - update some auto-generated files in the Emacs tree -## Copyright (C) 2011-2018 Free Software Foundation, Inc. +## Copyright (C) 2011-2019 Free Software Foundation, Inc. ## Author: Glenn Morris diff --git a/admin/upload-manuals b/admin/upload-manuals index 1aa7d8be32dc..08b47d741d7e 100755 --- a/admin/upload-manuals +++ b/admin/upload-manuals @@ -2,7 +2,7 @@ ### upload-manuals - upload the Emacs manuals to the gnu.org website -## Copyright 2018 Free Software Foundation, Inc. +## Copyright 2018-2019 Free Software Foundation, Inc. ## Author: Glenn Morris diff --git a/autogen.sh b/autogen.sh index acebc2381a3f..7972f01b3872 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,7 +1,7 @@ #!/bin/sh ### autogen.sh - tool to help build Emacs from a repository checkout -## Copyright (C) 2011-2018 Free Software Foundation, Inc. +## Copyright (C) 2011-2019 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: emacs-devel@gnu.org diff --git a/build-aux/config.guess b/build-aux/config.guess index 588fe82a42aa..d7c8fb43e28c 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,6 +1,6 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright 1992-2019 Free Software Foundation, Inc. timestamp='2018-01-01' diff --git a/build-aux/config.sub b/build-aux/config.sub index f2632cd8a2be..4f2906bf98c6 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -1,6 +1,6 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright 1992-2019 Free Software Foundation, Inc. timestamp='2018-01-01' diff --git a/build-aux/git-hooks/commit-msg b/build-aux/git-hooks/commit-msg index 1ce4cee2648b..4ed261425d33 100755 --- a/build-aux/git-hooks/commit-msg +++ b/build-aux/git-hooks/commit-msg @@ -1,7 +1,7 @@ #!/bin/sh # Check the format of GNU Emacs change log entries. -# Copyright 2014-2018 Free Software Foundation, Inc. +# Copyright 2014-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/build-aux/git-hooks/pre-commit b/build-aux/git-hooks/pre-commit index c0455fb2fa2a..e29a69f25b8b 100755 --- a/build-aux/git-hooks/pre-commit +++ b/build-aux/git-hooks/pre-commit @@ -1,7 +1,7 @@ #!/bin/sh # Check file names in git commits for GNU Emacs. -# Copyright 2014-2018 Free Software Foundation, Inc. +# Copyright 2014-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog index d8074aadabfe..69520eeae709 100755 --- a/build-aux/gitlog-to-changelog +++ b/build-aux/gitlog-to-changelog @@ -9,7 +9,7 @@ my $VERSION = '2017-09-13 06:45'; # UTC # If you change this file with Emacs, please let the write hook # do its job. Otherwise, update this string manually. -# Copyright (C) 2008-2018 Free Software Foundation, Inc. +# Copyright (C) 2008-2019 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog index bdf45360aa4a..7cd7c58c355d 100755 --- a/build-aux/gitlog-to-emacslog +++ b/build-aux/gitlog-to-emacslog @@ -2,7 +2,7 @@ # Convert git log output to ChangeLog format for GNU Emacs. -# Copyright (C) 2014-2018 Free Software Foundation, Inc. +# Copyright (C) 2014-2019 Free Software Foundation, Inc. # Author: Paul Eggert diff --git a/build-aux/make-info-dir b/build-aux/make-info-dir index cf8ffabd2199..2dcac87b4899 100755 --- a/build-aux/make-info-dir +++ b/build-aux/make-info-dir @@ -2,7 +2,7 @@ ### make-info-dir - create info/dir, for systems without install-info -## Copyright (C) 2013-2018 Free Software Foundation, Inc. +## Copyright (C) 2013-2019 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: emacs-devel@gnu.org diff --git a/build-aux/move-if-change b/build-aux/move-if-change index f15923613c8b..69662a3ff8b2 100755 --- a/build-aux/move-if-change +++ b/build-aux/move-if-change @@ -8,7 +8,7 @@ VERSION='2017-09-13 06:45'; # UTC # If you change this file with Emacs, please let the write hook # do its job. Otherwise, update this string manually. -# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# Copyright (C) 2002-2019 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/build-aux/msys-to-w32 b/build-aux/msys-to-w32 index ca23302a5b59..758d172355de 100755 --- a/build-aux/msys-to-w32 +++ b/build-aux/msys-to-w32 @@ -2,7 +2,7 @@ # Convert a MSYS path list to Windows-native format. # Status is zero if successful, nonzero otherwise. -# Copyright (C) 2013-2018 Free Software Foundation, Inc. +# Copyright (C) 2013-2019 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/build-aux/update-copyright b/build-aux/update-copyright index 3bb26abea1b6..19d881316afa 100755 --- a/build-aux/update-copyright +++ b/build-aux/update-copyright @@ -5,7 +5,7 @@ eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" "$@"' my $VERSION = '2018-01-04.14:48'; # UTC -# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# Copyright (C) 2009-2019 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/build-aux/update-subdirs b/build-aux/update-subdirs index 8bc4f1a8b0f7..75509956276d 100755 --- a/build-aux/update-subdirs +++ b/build-aux/update-subdirs @@ -1,7 +1,7 @@ #!/bin/sh # Write into $1/subdirs.el a list of subdirs of directory $1. -# Copyright (C) 1994-1995, 1997, 1999, 2001-2018 Free Software +# Copyright (C) 1994-1995, 1997, 1999, 2001-2019 Free Software # Foundation, Inc. # This file is part of GNU Emacs. diff --git a/configure.ac b/configure.ac index dc6d776d45d4..7a84182915a2 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ dnl autoconf dnl in the directory containing this script. dnl If you changed any AC_DEFINES, also run autoheader. dnl -dnl Copyright (C) 1994-1996, 1999-2018 Free Software Foundation, Inc. +dnl Copyright (C) 1994-1996, 1999-2019 Free Software Foundation, Inc. dnl dnl This file is part of GNU Emacs. dnl diff --git a/doc/emacs/ChangeLog.1 b/doc/emacs/ChangeLog.1 index ab9da47513fb..439ef51acb8c 100644 --- a/doc/emacs/ChangeLog.1 +++ b/doc/emacs/ChangeLog.1 @@ -10919,7 +10919,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2018 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in index 1da2f1550f9f..fa451b1f927f 100644 --- a/doc/emacs/Makefile.in +++ b/doc/emacs/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1994, 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1994, 1996-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi index 00b9e560ac0c..9c8a280efb30 100644 --- a/doc/emacs/abbrevs.texi +++ b/doc/emacs/abbrevs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Abbrevs diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi index 20c8d4e610ba..3ad673973544 100644 --- a/doc/emacs/ack.texi +++ b/doc/emacs/ack.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1994-1997, 1999-2018 Free Software Foundation, Inc. +@c Copyright (C) 1994-1997, 1999-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @node Acknowledgments diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi index b91516315adc..9eac08c2643d 100644 --- a/doc/emacs/anti.texi +++ b/doc/emacs/anti.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 2005-2018 Free Software Foundation, Inc. +@c Copyright (C) 2005-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Antinews diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi index 45fca1f508dc..cd7c1ff895ea 100644 --- a/doc/emacs/arevert-xtra.texi +++ b/doc/emacs/arevert-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index f911c673bff0..86403b7a23de 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Basic diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index dd7a653186cf..27fcb7369a97 100644 --- a/doc/emacs/buffers.texi +++ b/doc/emacs/buffers.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Buffers diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 5cd3221928f8..7ce62498b8e8 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Building diff --git a/doc/emacs/cal-xtra.texi b/doc/emacs/cal-xtra.texi index 80e9b8518174..7fa20deac04c 100644 --- a/doc/emacs/cal-xtra.texi +++ b/doc/emacs/cal-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -*- coding: utf-8 -*- -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi index 7021146e6985..138a24fd4595 100644 --- a/doc/emacs/calendar.texi +++ b/doc/emacs/calendar.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -*- coding: utf-8 -*- -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Calendar/Diary diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index 76b1cdf1d8dc..c870e6dad9d9 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Emacs Invocation diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi index a992dedc929e..4773d7675bdb 100644 --- a/doc/emacs/commands.texi +++ b/doc/emacs/commands.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index b93009ad216e..4aaf58cc264e 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Customization diff --git a/doc/emacs/dired-xtra.texi b/doc/emacs/dired-xtra.texi index 4412e4757118..025da21478a0 100644 --- a/doc/emacs/dired-xtra.texi +++ b/doc/emacs/dired-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index 9c408e13ae70..cf9665ac5b4e 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Dired diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 2f5ce80d607c..9cf6baa7e913 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. diff --git a/doc/emacs/emerge-xtra.texi b/doc/emacs/emerge-xtra.texi index 1d817125b364..6c5e46b6de60 100644 --- a/doc/emacs/emerge-xtra.texi +++ b/doc/emacs/emerge-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/entering.texi b/doc/emacs/entering.texi index 84b3e5d4cbf6..4362553a2230 100644 --- a/doc/emacs/entering.texi +++ b/doc/emacs/entering.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index e4b97e58fca9..cd64fb109ea7 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Files diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi index 7bbaa0016bad..bb1b4c871379 100644 --- a/doc/emacs/fixit.texi +++ b/doc/emacs/fixit.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Fixit diff --git a/doc/emacs/fortran-xtra.texi b/doc/emacs/fortran-xtra.texi index fa5a3e6eafbf..30f7c421d517 100644 --- a/doc/emacs/fortran-xtra.texi +++ b/doc/emacs/fortran-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index 6bbaae24b177..05aabd0e15b8 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Frames diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi index 02939679fef1..ad16d72ddbf9 100644 --- a/doc/emacs/glossary.texi +++ b/doc/emacs/glossary.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Glossary diff --git a/doc/emacs/gnu.texi b/doc/emacs/gnu.texi index 4a42a641a72a..fef4f71c6eed 100644 --- a/doc/emacs/gnu.texi +++ b/doc/emacs/gnu.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1985-1987, 1993, 1995, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993, 1995, 2001-2019 Free Software @c Foundation, Inc. @c @c Permission is granted to anyone to make or distribute verbatim copies diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi index 94d27a276dc4..9ffea416827a 100644 --- a/doc/emacs/help.texi +++ b/doc/emacs/help.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Help diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi index bf43909edf3a..a6aa75bbb425 100644 --- a/doc/emacs/indent.texi +++ b/doc/emacs/indent.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Indentation diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 4c47c8b04791..2d56f1d26e12 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. diff --git a/doc/emacs/kmacro.texi b/doc/emacs/kmacro.texi index 0151c816a896..a7d849a7f0d7 100644 --- a/doc/emacs/kmacro.texi +++ b/doc/emacs/kmacro.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Keyboard Macros diff --git a/doc/emacs/m-x.texi b/doc/emacs/m-x.texi index adf46ff19d7f..2b2be38cb379 100644 --- a/doc/emacs/m-x.texi +++ b/doc/emacs/m-x.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node M-x diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi index 34b645dbc171..6d27e9782176 100644 --- a/doc/emacs/macos.texi +++ b/doc/emacs/macos.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2000-2018 Free Software Foundation, Inc. +@c Copyright (C) 2000-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Mac OS / GNUstep @appendix Emacs and macOS / GNUstep diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index d7d7eddf6213..cddffd6f2a5b 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual., Abbrevs, This is part of the Emacs manual., Top -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Maintaining diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 626f9dda25f2..aa753888e5fe 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Mark diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index e180d1d185d5..d17ef2dad631 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Minibuffer diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index 27cd317fe3b6..41a540a7610d 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi index 2bbc17b26dbb..4505bb5dc2d7 100644 --- a/doc/emacs/modes.texi +++ b/doc/emacs/modes.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Modes diff --git a/doc/emacs/msdos-xtra.texi b/doc/emacs/msdos-xtra.texi index 64ce8414fc0e..e0d3bcd40938 100644 --- a/doc/emacs/msdos-xtra.texi +++ b/doc/emacs/msdos-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi index 679bdd3e83bf..fb876340b411 100644 --- a/doc/emacs/msdos.texi +++ b/doc/emacs/msdos.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Microsoft Windows diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index 6c0c5b239895..b3e7d218c623 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1997, 1999-2018 Free Software Foundation, Inc. +@c Copyright (C) 1997, 1999-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node International @chapter International Character Set Support diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index bc6afb7966a3..99e04740d3c8 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Packages diff --git a/doc/emacs/picture-xtra.texi b/doc/emacs/picture-xtra.texi index 9ebc78ec6280..704cff16502a 100644 --- a/doc/emacs/picture-xtra.texi +++ b/doc/emacs/picture-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index 46711aaf3051..9d712eb66cc2 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Programs diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi index 7d16d5391280..b9d0afe42ee3 100644 --- a/doc/emacs/regs.texi +++ b/doc/emacs/regs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Registers diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi index 5241686cab80..94e1e63d44ed 100644 --- a/doc/emacs/rmail.texi +++ b/doc/emacs/rmail.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Rmail diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi index 8f2be4b9a7e9..67da9daab87e 100644 --- a/doc/emacs/screen.texi +++ b/doc/emacs/screen.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Screen diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 33aa0dd1c7b4..ae22a90a16b6 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Search diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi index 0c5caf0ff982..f5d69abf2798 100644 --- a/doc/emacs/sending.texi +++ b/doc/emacs/sending.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Sending Mail diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index 96262a5eef39..e9b17dbb651c 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Text diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi index bb05378f4c94..1bdd9fa01417 100644 --- a/doc/emacs/trouble.texi +++ b/doc/emacs/trouble.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/vc-xtra.texi b/doc/emacs/vc-xtra.texi index 17d6a3b55b96..ca919e847e48 100644 --- a/doc/emacs/vc-xtra.texi +++ b/doc/emacs/vc-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included in emacs-xtra.texi when producing the printed diff --git a/doc/emacs/vc1-xtra.texi b/doc/emacs/vc1-xtra.texi index 35dd6d1235a5..1c17695c8dda 100644 --- a/doc/emacs/vc1-xtra.texi +++ b/doc/emacs/vc1-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in vc-xtra.texi (when producing the diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index 0a05c3770397..27077ff9ec19 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2018 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Windows diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi index 903090f51a9f..d8b70ef90098 100644 --- a/doc/emacs/xresources.texi +++ b/doc/emacs/xresources.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1987, 1993-1995, 1997, 2001-2018 Free Software +@c Copyright (C) 1987, 1993-1995, 1997, 2001-2019 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node X Resources diff --git a/doc/lispintro/ChangeLog.1 b/doc/lispintro/ChangeLog.1 index 9e15544630c4..2df76f4e029e 100644 --- a/doc/lispintro/ChangeLog.1 +++ b/doc/lispintro/ChangeLog.1 @@ -782,7 +782,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 2001-2018 Free Software Foundation, Inc. + Copyright (C) 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in index 71739fdb35fe..efe5a1e00469 100644 --- a/doc/lispintro/Makefile.in +++ b/doc/lispintro/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1994-1999, 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-1999, 2001-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/lispintro/README b/doc/lispintro/README index c39f6d2402a3..fd4ede1dfa02 100644 --- a/doc/lispintro/README +++ b/doc/lispintro/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/doc/lispintro/cons-1.eps b/doc/lispintro/cons-1.eps index cc1d5c7c4092..dff7130952eb 100644 --- a/doc/lispintro/cons-1.eps +++ b/doc/lispintro/cons-1.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:26:58 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-2.eps b/doc/lispintro/cons-2.eps index 00d08e423d9d..ccba32056ab1 100644 --- a/doc/lispintro/cons-2.eps +++ b/doc/lispintro/cons-2.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:26:39 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-2a.eps b/doc/lispintro/cons-2a.eps index 26f690a14353..3beaa5b640b6 100644 --- a/doc/lispintro/cons-2a.eps +++ b/doc/lispintro/cons-2a.eps @@ -4,7 +4,7 @@ %%CreationDate: Tue Mar 14 15:09:30 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-3.eps b/doc/lispintro/cons-3.eps index d75620e28e4d..6bae8f74116a 100644 --- a/doc/lispintro/cons-3.eps +++ b/doc/lispintro/cons-3.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:25:41 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-4.eps b/doc/lispintro/cons-4.eps index 154df88e5310..fd056b551964 100644 --- a/doc/lispintro/cons-4.eps +++ b/doc/lispintro/cons-4.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:25:06 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-5.eps b/doc/lispintro/cons-5.eps index d5c08ac16350..d3f7581eab9b 100644 --- a/doc/lispintro/cons-5.eps +++ b/doc/lispintro/cons-5.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:27:28 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/drawers.eps b/doc/lispintro/drawers.eps index e3a7f0a7dd25..4569b21fde92 100644 --- a/doc/lispintro/drawers.eps +++ b/doc/lispintro/drawers.eps @@ -9,7 +9,7 @@ %%EndComments %%BeginProlog -% Copyright (C) 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/lambda-1.eps b/doc/lispintro/lambda-1.eps index 4b6d8275cb5c..a78a60cb42f1 100644 --- a/doc/lispintro/lambda-1.eps +++ b/doc/lispintro/lambda-1.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:31:53 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/lambda-2.eps b/doc/lispintro/lambda-2.eps index 473785c81afe..a7c2e7b830b3 100644 --- a/doc/lispintro/lambda-2.eps +++ b/doc/lispintro/lambda-2.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:33:09 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/lambda-3.eps b/doc/lispintro/lambda-3.eps index c1a251682f85..d73a9d691047 100644 --- a/doc/lispintro/lambda-3.eps +++ b/doc/lispintro/lambda-3.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:33:49 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispref/ChangeLog.1 b/doc/lispref/ChangeLog.1 index 42240ae28806..a271d2158cc2 100644 --- a/doc/lispref/ChangeLog.1 +++ b/doc/lispref/ChangeLog.1 @@ -13989,7 +13989,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1998-2018 Free Software Foundation, Inc. + Copyright (C) 1998-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in index 98ca90a96d43..74e3878a37e8 100644 --- a/doc/lispref/Makefile.in +++ b/doc/lispref/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1990-1996, 1998-2018 Free Software Foundation, Inc. +# Copyright (C) 1990-1996, 1998-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/lispref/README b/doc/lispref/README index cca433868b29..3e121bfd2bbc 100644 --- a/doc/lispref/README +++ b/doc/lispref/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. -*- outline -*- +Copyright (C) 2001-2019 Free Software Foundation, Inc. -*- outline -*- See the end of the file for license conditions. diff --git a/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi index 087e69452038..ce1ab6936723 100644 --- a/doc/lispref/abbrevs.texi +++ b/doc/lispref/abbrevs.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1999, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1994, 1999, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Abbrevs diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi index 556203b69f00..6066e2663873 100644 --- a/doc/lispref/anti.texi +++ b/doc/lispref/anti.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1999, 2002-2018 Free Software Foundation, Inc. +@c Copyright (C) 1999, 2002-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @c This node must have no pointers. diff --git a/doc/lispref/back.texi b/doc/lispref/back.texi index df39479bb612..c4c346628bf9 100644 --- a/doc/lispref/back.texi +++ b/doc/lispref/back.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @c @c %**start of header diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi index 8ce8f6180d1e..6a5b6d1661d4 100644 --- a/doc/lispref/backups.texi +++ b/doc/lispref/backups.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1999, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1995, 1999, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Backups and Auto-Saving diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi index b030d2e63a84..8d8fc97a60f4 100644 --- a/doc/lispref/buffers.texi +++ b/doc/lispref/buffers.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Buffers diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index b6749d0a0ccd..1eb580e1e0fd 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Command Loop diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi index 6d21ca3e6ab9..d9db55e22cdb 100644 --- a/doc/lispref/compile.texi +++ b/doc/lispref/compile.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1994, 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Byte Compilation @chapter Byte Compilation diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 4e5422aaa70c..3ffe8f7fb9d5 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Control Structures diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi index 1cc7cb65b5f3..f71dedfd8b0e 100644 --- a/doc/lispref/customize.texi +++ b/doc/lispref/customize.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1997-2018 Free Software Foundation, Inc. +@c Copyright (C) 1997-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Customization @chapter Customization Settings diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi index cbf8778ca8b9..2576fbe39d74 100644 --- a/doc/lispref/debugging.texi +++ b/doc/lispref/debugging.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1994, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Debugging diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index deabd31d7760..b3ce7fbf6af0 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1995, 1998-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Display @chapter Emacs Display diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index 5c47945e5563..e674280a83d4 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -1,6 +1,6 @@ @comment -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1992-1994, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1992-1994, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. diff --git a/doc/lispref/errors.texi b/doc/lispref/errors.texi index a0e32c5631c3..c794028b5e67 100644 --- a/doc/lispref/errors.texi +++ b/doc/lispref/errors.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1993, 1999, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1993, 1999, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Standard Errors diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi index 416815e19006..4bf70d247b6b 100644 --- a/doc/lispref/eval.texi +++ b/doc/lispref/eval.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1998, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1994, 1998, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Evaluation diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index 6364289b6903..403a21b33654 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Files diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index 3795f425e7b9..b993f4932cd6 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Frames diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index 37c94c1db747..d01804e4940d 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Functions diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi index f7d33eafa34f..d5c9948ca731 100644 --- a/doc/lispref/hash.texi +++ b/doc/lispref/hash.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1999, 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 1999, 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Hash Tables @chapter Hash Tables diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi index 2688a2bff6ec..63a782c3263d 100644 --- a/doc/lispref/help.texi +++ b/doc/lispref/help.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Documentation diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi index db4e413921fb..7c8748b5e48d 100644 --- a/doc/lispref/hooks.texi +++ b/doc/lispref/hooks.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1993, 1998, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1993, 1998, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Standard Hooks diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index b95a15fec5df..38d84f149e0f 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1993, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1993, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node GNU Emacs Internals diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi index f421f3b3efbc..2b5f79052581 100644 --- a/doc/lispref/intro.texi +++ b/doc/lispref/intro.texi @@ -1,6 +1,6 @@ @c -*-coding: utf-8-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1994, 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Introduction diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi index cc2e11e0b6d1..ccc75a9c7af8 100644 --- a/doc/lispref/keymaps.texi +++ b/doc/lispref/keymaps.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1998-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1994, 1998-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Keymaps @chapter Keymaps diff --git a/doc/lispref/lay-flat.texi b/doc/lispref/lay-flat.texi index da2215906d19..1f12efe3559e 100644 --- a/doc/lispref/lay-flat.texi +++ b/doc/lispref/lay-flat.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @c @comment %**start of header diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi index fdcfe33661db..615f21581aa1 100644 --- a/doc/lispref/lists.texi +++ b/doc/lispref/lists.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Lists diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index cbb2f701ed95..f0cc689d1f6e 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Loading diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi index dbd35b484848..a422ba9750d2 100644 --- a/doc/lispref/macros.texi +++ b/doc/lispref/macros.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1995, 1998, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Macros diff --git a/doc/lispref/maps.texi b/doc/lispref/maps.texi index fc40f28ded80..bcf8f175e093 100644 --- a/doc/lispref/maps.texi +++ b/doc/lispref/maps.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1993, 1999, 2001-2018 Free Software Foundation, +@c Copyright (C) 1990-1993, 1999, 2001-2019 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Standard Keymaps diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi index 349ec12aa81a..27fe1414f094 100644 --- a/doc/lispref/markers.texi +++ b/doc/lispref/markers.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Markers diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi index 97797d00096e..0c0862160bf3 100644 --- a/doc/lispref/minibuf.texi +++ b/doc/lispref/minibuf.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Minibuffers diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index d7e217c5287b..9df1a69e9070 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Modes diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index 4d75d6a1f14d..ab15ea7d9b21 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1998-1999, 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 1998-1999, 2001-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Non-ASCII Characters @chapter Non-@acronym{ASCII} Characters diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi index c12ffe2cde79..e7beed0073df 100644 --- a/doc/lispref/numbers.texi +++ b/doc/lispref/numbers.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Numbers diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi index b8cae49027cc..69b6c859f65e 100644 --- a/doc/lispref/objects.texi +++ b/doc/lispref/objects.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Lisp Data Types diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index 44fc9a1eea2d..65c57064a3d4 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node System Interface diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi index c1c61a1b5c6e..39bdc01a75c2 100644 --- a/doc/lispref/package.texi +++ b/doc/lispref/package.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2010-2018 Free Software Foundation, Inc. +@c Copyright (C) 2010-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Packaging @chapter Preparing Lisp code for distribution diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index a09b6b6d0973..527a3ab420c7 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1995, 1998-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Positions @chapter Positions diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index f2b3a9c096b5..d2ab518e5eb6 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Processes diff --git a/doc/lispref/records.texi b/doc/lispref/records.texi index 81a52341b129..3a89b6873514 100644 --- a/doc/lispref/records.texi +++ b/doc/lispref/records.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2017-2018 Free Software Foundation, Inc. +@c Copyright (C) 2017-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Records @chapter Records diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index 6c1ebb22b53f..7546863dde22 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Searching and Matching diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi index 60d017c3e446..5cf2e89644d1 100644 --- a/doc/lispref/sequences.texi +++ b/doc/lispref/sequences.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Sequences Arrays Vectors diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi index ebd806601ef4..5aa49c2e9549 100644 --- a/doc/lispref/streams.texi +++ b/doc/lispref/streams.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1994, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Read and Print diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi index f39119987995..8420527f8588 100644 --- a/doc/lispref/strings.texi +++ b/doc/lispref/strings.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Strings and Characters diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi index 11e92f6217f6..a214a2d3fd81 100644 --- a/doc/lispref/symbols.texi +++ b/doc/lispref/symbols.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Symbols diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi index 71c97fdae8ce..90d380f5b841 100644 --- a/doc/lispref/syntax.texi +++ b/doc/lispref/syntax.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Syntax Tables diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index b790b28fc2e8..fb5f56e9dddc 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1995, 1998-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Text @chapter Text diff --git a/doc/lispref/threads.texi b/doc/lispref/threads.texi index 69f89c32bf16..7b14ab5a730b 100644 --- a/doc/lispref/threads.texi +++ b/doc/lispref/threads.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2012-2018 Free Software Foundation, Inc. +@c Copyright (C) 2012-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Threads @chapter Threads diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi index 08cc10da14cc..8c805bc4eb8b 100644 --- a/doc/lispref/tips.texi +++ b/doc/lispref/tips.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1993, 1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1993, 1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Tips diff --git a/doc/lispref/two-volume-cross-refs.txt b/doc/lispref/two-volume-cross-refs.txt index b5379df38d08..e3db8ff651b7 100644 --- a/doc/lispref/two-volume-cross-refs.txt +++ b/doc/lispref/two-volume-cross-refs.txt @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See end for copying conditions. Two Volume Cross References diff --git a/doc/lispref/two-volume.make b/doc/lispref/two-volume.make index 07a6d2c1717b..63c97c239588 100644 --- a/doc/lispref/two-volume.make +++ b/doc/lispref/two-volume.make @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2018 Free Software Foundation, Inc. +# Copyright (C) 2007-2019 Free Software Foundation, Inc. # See end for copying conditions. # although it would be nice to use tex rather than pdftex to avoid diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 6560660120b7..f1e0e37e6d6d 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-2018 Free Software Foundation, Inc. +@c Copyright (C) 1990-1995, 1998-2019 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Variables @chapter Variables diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 04689f1c5e23..7f0fcffaaf1f 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1995, 1998-1999, 2001-2018 Free Software +@c Copyright (C) 1990-1995, 1998-1999, 2001-2019 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Windows diff --git a/doc/man/ChangeLog.1 b/doc/man/ChangeLog.1 index b72837fea75b..68e411232ab0 100644 --- a/doc/man/ChangeLog.1 +++ b/doc/man/ChangeLog.1 @@ -176,7 +176,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 2007-2018 Free Software Foundation, Inc. + Copyright (C) 2007-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/man/ebrowse.1 b/doc/man/ebrowse.1 index c0245f8259f7..b0448d489814 100644 --- a/doc/man/ebrowse.1 +++ b/doc/man/ebrowse.1 @@ -82,7 +82,7 @@ should give you access to the complete manual. was written by Gerd Moellmann. . .SH COPYING -Copyright 2008-2018 Free Software Foundation, Inc. +Copyright 2008-2019 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are diff --git a/doc/man/emacs.1.in b/doc/man/emacs.1.in index 62afec653781..11a3390b17ec 100644 --- a/doc/man/emacs.1.in +++ b/doc/man/emacs.1.in @@ -653,7 +653,7 @@ For detailed credits and acknowledgments, see the GNU Emacs manual. . . .SH COPYING -Copyright 1995, 1999-2018 Free Software Foundation, Inc. +Copyright 1995, 1999-2019 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are diff --git a/doc/man/etags.1 b/doc/man/etags.1 index 45d2541ec133..57120e78dda6 100644 --- a/doc/man/etags.1 +++ b/doc/man/etags.1 @@ -281,7 +281,7 @@ Stallman. .BR vi ( 1 ). .SH COPYING -Copyright 1992, 1999, 2001-2018 Free Software Foundation, Inc. +Copyright 1992, 1999, 2001-2019 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are diff --git a/doc/misc/ChangeLog.1 b/doc/misc/ChangeLog.1 index 9ef3f0ea6f2a..9b25c90f7f6c 100644 --- a/doc/misc/ChangeLog.1 +++ b/doc/misc/ChangeLog.1 @@ -12116,7 +12116,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2018 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in index 11086b330374..d02f42bbeb93 100644 --- a/doc/misc/Makefile.in +++ b/doc/misc/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1994, 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1994, 1996-2019 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi index e18bb739f848..8e067a7a2693 100644 --- a/doc/misc/efaq-w32.texi +++ b/doc/misc/efaq-w32.texi @@ -15,7 +15,7 @@ Answers to Frequently asked Questions about using Emacs on Microsoft Windows. @include emacsver.texi @copying -Copyright @copyright{} 2008, 2010-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2008, 2010-2019 Free Software Foundation, Inc. @quotation This list of frequently asked questions about GNU Emacs on MS Windows diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi index efef01f6978f..55010d4e4308 100644 --- a/doc/misc/gnus-faq.texi +++ b/doc/misc/gnus-faq.texi @@ -1,7 +1,7 @@ @c \input texinfo @c -*-texinfo-*- @c Uncomment 1st line before texing this file alone. @c %**start of header -@c Copyright (C) 1995, 2001-2018 Free Software Foundation, Inc. +@c Copyright (C) 1995, 2001-2019 Free Software Foundation, Inc. @c @c @setfilename gnus-faq.info @c @settitle Frequently Asked Questions diff --git a/doc/misc/gnus-news.el b/doc/misc/gnus-news.el index 301ea9327954..ce58faf0ae34 100644 --- a/doc/misc/gnus-news.el +++ b/doc/misc/gnus-news.el @@ -1,5 +1,5 @@ ;;; gnus-news.el --- a hack to create GNUS-NEWS from texinfo source -;; Copyright (C) 2004-2018 Free Software Foundation, Inc. +;; Copyright (C) 2004-2019 Free Software Foundation, Inc. ;; Author: Reiner Steib ;; Keywords: tools diff --git a/doc/misc/gnus-news.texi b/doc/misc/gnus-news.texi index 171f59a3ad06..9bf8d190416a 100644 --- a/doc/misc/gnus-news.texi +++ b/doc/misc/gnus-news.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- -@c Copyright (C) 2004-2018 Free Software Foundation, Inc. +@c Copyright (C) 2004-2019 Free Software Foundation, Inc. @c Permission is granted to anyone to make or distribute verbatim copies @c of this document as received, in any medium, provided that the diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi index c4cf7dac0a6a..f1da8785eb79 100644 --- a/doc/misc/htmlfontify.texi +++ b/doc/misc/htmlfontify.texi @@ -10,7 +10,7 @@ This manual documents Htmlfontify, a source code -> crosslinked + formatted + syntax colorized html transformer. -Copyright @copyright{} 2002-2003, 2013-2018 Free Software Foundation, +Copyright @copyright{} 2002-2003, 2013-2019 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/ido.texi b/doc/misc/ido.texi index 098b28ee524d..bb7e72326570 100644 --- a/doc/misc/ido.texi +++ b/doc/misc/ido.texi @@ -7,7 +7,7 @@ @copying This file documents the Ido package for GNU Emacs. -Copyright @copyright{} 2013-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2013-2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/sem-user.texi b/doc/misc/sem-user.texi index 8484a7bfe232..3fe104af1f50 100644 --- a/doc/misc/sem-user.texi +++ b/doc/misc/sem-user.texi @@ -1,5 +1,5 @@ @c This is part of the Semantic manual. -@c Copyright (C) 1999-2005, 2007, 2009-2018 Free Software Foundation, +@c Copyright (C) 1999-2005, 2007, 2009-2019 Free Software Foundation, @c Inc. @c See file semantic.texi for copying conditions. diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index 1987c50ba264..f2be62ce47b8 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex @@ -5,10 +5,8 @@ % \def\texinfoversion{2017-12-26.21} % -% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, -% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 -% Free Software Foundation, Inc. +% Copyright 1985-1986, 1988, 1990-2017, 2019 Free Software Foundation, +% Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as diff --git a/doc/misc/todo-mode.texi b/doc/misc/todo-mode.texi index 1e4ea856fc77..18e5a8fa3b10 100644 --- a/doc/misc/todo-mode.texi +++ b/doc/misc/todo-mode.texi @@ -9,7 +9,7 @@ @c %**end of header @copying -Copyright @copyright{} 2013-2018 Free Software Foundation, Inc. +Copyright @copyright{} 2013-2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi index c6473f5b7343..aecbbe261c8f 100644 --- a/doc/misc/trampver.texi +++ b/doc/misc/trampver.texi @@ -2,7 +2,7 @@ @c texi/trampver.texi. Generated from trampver.texi.in by configure. @c This is part of the Emacs manual. -@c Copyright (C) 2003-2018 Free Software Foundation, Inc. +@c Copyright (C) 2003-2019 Free Software Foundation, Inc. @c See file doclicense.texi for copying conditions. @c In the Tramp GIT, the version number is auto-frobbed from diff --git a/etc/CALC-NEWS b/etc/CALC-NEWS index 04baf41148e1..07167c956615 100644 --- a/etc/CALC-NEWS +++ b/etc/CALC-NEWS @@ -1,4 +1,4 @@ -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Calc is an advanced desk calculator for GNU Emacs. diff --git a/etc/ChangeLog.1 b/etc/ChangeLog.1 index 09a282491115..24b8b39ec1c5 100644 --- a/etc/ChangeLog.1 +++ b/etc/ChangeLog.1 @@ -6891,7 +6891,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2018 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/etc/DEBUG b/etc/DEBUG index 50417af57665..377cfcfc8f7b 100644 --- a/etc/DEBUG +++ b/etc/DEBUG @@ -1,6 +1,6 @@ Debugging GNU Emacs -Copyright (C) 1985, 2000-2018 Free Software Foundation, Inc. +Copyright (C) 1985, 2000-2019 Free Software Foundation, Inc. See the end of the file for license conditions. ** Preliminaries diff --git a/etc/DISTRIB b/etc/DISTRIB index 854b1c8cc14a..4b8e4de2ca59 100644 --- a/etc/DISTRIB +++ b/etc/DISTRIB @@ -1,7 +1,7 @@ -*- text -*- GNU Emacs availability information -Copyright (C) 1986-1993, 1995, 1998, 2000-2018 Free Software Foundation, +Copyright (C) 1986-1993, 1995, 1998, 2000-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index 864efa44e71f..5331b9c911ec 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -1,6 +1,6 @@ ERC NEWS -*- outline -*- -Copyright (C) 2006-2018 Free Software Foundation, Inc. +Copyright (C) 2006-2019 Free Software Foundation, Inc. See the end of the file for license conditions. * For changes after ERC 5.3, see the main Emacs NEWS file diff --git a/etc/ETAGS.EBNF b/etc/ETAGS.EBNF index 23bb9445edd1..db967091e5e1 100644 --- a/etc/ETAGS.EBNF +++ b/etc/ETAGS.EBNF @@ -94,7 +94,7 @@ those. ===================== end of discussion of tag names ===================== -Copyright (C) 2002-2018 Free Software Foundation, Inc. +Copyright (C) 2002-2019 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/ETAGS.README b/etc/ETAGS.README index 0be4d44a8997..82d4314f673f 100644 --- a/etc/ETAGS.README +++ b/etc/ETAGS.README @@ -28,7 +28,7 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2018 Free Software +Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2019 Free Software Foundation, Inc. This file is not considered part of GNU Emacs. diff --git a/etc/GNUS-NEWS b/etc/GNUS-NEWS index 2ca5a9d7e2da..a8b03857bd2c 100644 --- a/etc/GNUS-NEWS +++ b/etc/GNUS-NEWS @@ -1,6 +1,6 @@ GNUS NEWS -- history of user-visible changes. -Copyright (C) 1999-2018 Free Software Foundation, Inc. +Copyright (C) 1999-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Gnus bug reports to bugs@gnus.org. diff --git a/etc/HELLO b/etc/HELLO index 2c95e211369b..ae52e94b0653 100644 --- a/etc/HELLO +++ b/etc/HELLO @@ -75,7 +75,7 @@ Korean ($(CGQ1[(B) $(C>H3gGO<H3gGO=J4O1n(B -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/etc/MACHINES b/etc/MACHINES index 0b736fb42742..2cb1bfd2644e 100644 --- a/etc/MACHINES +++ b/etc/MACHINES @@ -1,6 +1,6 @@ Emacs machines list -Copyright (C) 1989-1990, 1992-1993, 1998, 2001-2018 Free Software +Copyright (C) 1989-1990, 1992-1993, 1998, 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS index f59823a1c1aa..def0af158832 100644 --- a/etc/MH-E-NEWS +++ b/etc/MH-E-NEWS @@ -1,6 +1,6 @@ * COPYRIGHT -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. * Changes in MH-E 8.6 diff --git a/etc/NEWS b/etc/NEWS index 55bdaf111725..9ee1a4f284e1 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2016-2018 Free Software Foundation, Inc. +Copyright (C) 2016-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. diff --git a/etc/NEWS.1-17 b/etc/NEWS.1-17 index f978a4748095..f215542a5290 100644 --- a/etc/NEWS.1-17 +++ b/etc/NEWS.1-17 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986 -Copyright (C) 1985-1986, 2006-2018 Free Software Foundation, Inc. +Copyright (C) 1985-1986, 2006-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/NEWS.18 b/etc/NEWS.18 index 437f7c7e04ae..8d30d549aea4 100644 --- a/etc/NEWS.18 +++ b/etc/NEWS.18 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. 17-Aug-1988 -Copyright (C) 1988, 2006-2018 Free Software Foundation, Inc. +Copyright (C) 1988, 2006-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/NEWS.19 b/etc/NEWS.19 index f7f5a8ad225e..617248e31ad2 100644 --- a/etc/NEWS.19 +++ b/etc/NEWS.19 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. 1992. -Copyright (C) 1993-1995, 2001, 2006-2018 Free Software Foundation, Inc. +Copyright (C) 1993-1995, 2001, 2006-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/NEWS.20 b/etc/NEWS.20 index 956e900c289d..ff687015ccab 100644 --- a/etc/NEWS.20 +++ b/etc/NEWS.20 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 -Copyright (C) 1999-2001, 2006-2018 Free Software Foundation, Inc. +Copyright (C) 1999-2001, 2006-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/NEWS.21 b/etc/NEWS.21 index 4a22109e0b55..d078fb111395 100644 --- a/etc/NEWS.21 +++ b/etc/NEWS.21 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 -Copyright (C) 2000-2018 Free Software Foundation, Inc. +Copyright (C) 2000-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/NEWS.22 b/etc/NEWS.22 index 26054d2c397d..675b14432aac 100644 --- a/etc/NEWS.22 +++ b/etc/NEWS.22 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. diff --git a/etc/NEWS.23 b/etc/NEWS.23 index 181dad7bf4c4..bbc81d2889c0 100644 --- a/etc/NEWS.23 +++ b/etc/NEWS.23 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2007-2018 Free Software Foundation, Inc. +Copyright (C) 2007-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. diff --git a/etc/NEWS.24 b/etc/NEWS.24 index 9ace7ce541f9..9150e49fd926 100644 --- a/etc/NEWS.24 +++ b/etc/NEWS.24 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2010-2018 Free Software Foundation, Inc. +Copyright (C) 2010-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. diff --git a/etc/NEWS.25 b/etc/NEWS.25 index 4ae5eceebec9..98aec3cd2793 100644 --- a/etc/NEWS.25 +++ b/etc/NEWS.25 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2014-2018 Free Software Foundation, Inc. +Copyright (C) 2014-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. diff --git a/etc/NEXTSTEP b/etc/NEXTSTEP index f4f2c2e1507e..e5555a95de20 100644 --- a/etc/NEXTSTEP +++ b/etc/NEXTSTEP @@ -1,4 +1,4 @@ -Copyright (C) 2008-2018 Free Software Foundation, Inc. +Copyright (C) 2008-2019 Free Software Foundation, Inc. See the end of the file for license conditions. This file contains information about GNU Emacs on "Nextstep" platforms. diff --git a/etc/NXML-NEWS b/etc/NXML-NEWS index 250ee1779411..8bae9b0ab04e 100644 --- a/etc/NXML-NEWS +++ b/etc/NXML-NEWS @@ -1,4 +1,4 @@ -Copyright (C) 2007-2018 Free Software Foundation, Inc. +Copyright (C) 2007-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 013c7b13995d..249750171b53 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -3,7 +3,7 @@ ORG NEWS -- history of user-visible changes. -*- mode: org; coding: utf-8 -*- #+LINK: doc https://orgmode.org/worg/doc.html#%s #+LINK: git https://code.orgmode.org/bzg/org-mode/commit/%s -Copyright (C) 2012-2018 Free Software Foundation, Inc. +Copyright (C) 2012-2019 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Org bug reports to mailto:emacs-orgmode@gnu.org. diff --git a/etc/PROBLEMS b/etc/PROBLEMS index 29f87e2eaf56..cab087631c70 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -1,6 +1,6 @@ Known Problems with GNU Emacs -Copyright (C) 1987-1989, 1993-1999, 2001-2018 Free Software Foundation, +Copyright (C) 1987-1989, 1993-1999, 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/README b/etc/README index 9a85ce1145a3..ca6f38eec3c5 100644 --- a/etc/README +++ b/etc/README @@ -7,5 +7,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES File: emacs.icon Author: Sun Microsystems, Inc - Copyright (C) 1999, 2001-2018 Free Software Foundation, Inc. + Copyright (C) 1999, 2001-2019 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) diff --git a/etc/TERMS b/etc/TERMS index cea5932c7146..19b875769bd5 100644 --- a/etc/TERMS +++ b/etc/TERMS @@ -1,4 +1,4 @@ -Copyright (C) 1999, 2001-2018 Free Software Foundation, Inc. +Copyright (C) 1999, 2001-2019 Free Software Foundation, Inc. See the end of the file for copying permissions. This file describes what you must or might want to do to termcap entries diff --git a/etc/TODO b/etc/TODO index de579746ac73..ccb82cd296d1 100644 --- a/etc/TODO +++ b/etc/TODO @@ -1,6 +1,6 @@ Emacs TODO List -*-outline-*- -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/charsets/README b/etc/charsets/README index 6366cf77ff9a..0cf0368ff0b3 100644 --- a/etc/charsets/README +++ b/etc/charsets/README @@ -1,6 +1,6 @@ # README file for charset mapping files in this directory. -# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# Copyright (C) 2003-2019 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) # Registration Number H13PRO009 diff --git a/etc/compilation.txt b/etc/compilation.txt index 00bd0ebfeca2..eccdfa737f0a 100644 --- a/etc/compilation.txt +++ b/etc/compilation.txt @@ -625,7 +625,7 @@ Compilation segmentation fault at Thu Jul 13 10:55:49 Compilation finished at Thu Jul 21 15:02:15 -Copyright (C) 2004-2018 Free Software Foundation, Inc. +Copyright (C) 2004-2019 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/edt-user.el b/etc/edt-user.el index 535b066a85d6..5aede6bfd8e2 100644 --- a/etc/edt-user.el +++ b/etc/edt-user.el @@ -1,6 +1,6 @@ ;;; edt-user.el --- Sample user customizations for Emacs EDT emulation -;; Copyright (C) 1986, 1992-1993, 2000-2018 Free Software Foundation, +;; Copyright (C) 1986, 1992-1993, 2000-2019 Free Software Foundation, ;; Inc. ;; Author: Kevin Gallagher diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb index 8a4d6485bf6c..e5916b3784fb 100644 --- a/etc/emacs-buffer.gdb +++ b/etc/emacs-buffer.gdb @@ -1,6 +1,6 @@ # emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps -# Copyright (C) 2005-2018 Free Software Foundation, Inc. +# Copyright (C) 2005-2019 Free Software Foundation, Inc. # Author: Noah Friedman # Created: 2005-04-28 diff --git a/etc/emacs.appdata.xml b/etc/emacs.appdata.xml index f4ef0e7adb7c..6898de3a0c79 100644 --- a/etc/emacs.appdata.xml +++ b/etc/emacs.appdata.xml @@ -1,5 +1,5 @@ - + org.gnu.emacs GFDL-1.3+ diff --git a/etc/enriched.txt b/etc/enriched.txt index 251b133eb8c0..0a9c4be9fc7a 100644 --- a/etc/enriched.txt +++ b/etc/enriched.txt @@ -239,7 +239,7 @@ it. -Copyright (C) 1995, 1997, 2001-2018 Free Software Foundation, Inc. +Copyright (C) 1995, 1997, 2001-2019 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/forms/forms-d2.el b/etc/forms/forms-d2.el index 57ace61bbd3a..eeca3c0d2b78 100644 --- a/etc/forms/forms-d2.el +++ b/etc/forms/forms-d2.el @@ -1,6 +1,6 @@ ;;; forms-d2.el --- demo forms-mode -;; Copyright (C) 1991, 1994-1997, 2001-2018 Free Software Foundation, +;; Copyright (C) 1991, 1994-1997, 2001-2019 Free Software Foundation, ;; Inc. ;; Author: Johan Vromans diff --git a/etc/gnus-tut.txt b/etc/gnus-tut.txt index cc6f71d6dea3..d9ea4f6372c8 100644 --- a/etc/gnus-tut.txt +++ b/etc/gnus-tut.txt @@ -24,7 +24,7 @@ was done by moi, yours truly, your humble servant, Lars Magne Ingebrigtsen. If you have a WWW browser, you can investigate to your heart's delight at . -;; Copyright (C) 1995, 2001-2018 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2019 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/etc/grep.txt b/etc/grep.txt index 75187b9a86c3..d01f994c9864 100644 --- a/etc/grep.txt +++ b/etc/grep.txt @@ -97,7 +97,7 @@ grep -nH -e "xyzxyz" ../info/* -Copyright (C) 2005-2018 Free Software Foundation, Inc. +Copyright (C) 2005-2019 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/images/README b/etc/images/README index 34e145ed9a64..eefb9f04b25e 100644 --- a/etc/images/README +++ b/etc/images/README @@ -27,7 +27,7 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES File: mh-logo.xpm Author: Satyaki Das - Copyright (C) 2003-2018 Free Software Foundation, Inc. + Copyright (C) 2003-2019 Free Software Foundation, Inc. Files: gnus.pbm Author: Luis Fernandes diff --git a/etc/images/custom/README b/etc/images/custom/README index e28576af356f..498f16805ec9 100644 --- a/etc/images/custom/README +++ b/etc/images/custom/README @@ -6,5 +6,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES Files: down.xpm down-pushed.xpm right.xpm right-pushed.xpm Author: Juri Linkov -Copyright (C) 2008-2018 Free Software Foundation, Inc. +Copyright (C) 2008-2019 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) diff --git a/etc/images/ezimage/README b/etc/images/ezimage/README index d30b35c68f68..512cfb9e35bb 100644 --- a/etc/images/ezimage/README +++ b/etc/images/ezimage/README @@ -7,5 +7,5 @@ Files: bits.xpm bitsbang.xpm box-minus.xpm box-plus.xpm tag-gt.xpm tag-minus.xpm tag-plus.xpm tag-type.xpm tag-v.xpm tag.xpm unlock.xpm Author: Eric M. Ludlam -Copyright (C) 1999-2018 Free Software Foundation, Inc. +Copyright (C) 1999-2019 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) diff --git a/etc/images/gnus/README b/etc/images/gnus/README index a6a5274faf9e..832fd5576295 100644 --- a/etc/images/gnus/README +++ b/etc/images/gnus/README @@ -7,7 +7,7 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES Files: important.xpm, unimportant.xpm Author: Simon Josefsson -Copyright (C) 2001-2018 Free Software Foundation, Inc. +Copyright (C) 2001-2019 Free Software Foundation, Inc. Files: catchup.pbm catchup.xpm cu-exit.pbm cu-exit.xpm describe-group.pbm describe-group.xpm exit-gnus.pbm exit-gnus.xpm diff --git a/etc/images/gnus/gnus.svg b/etc/images/gnus/gnus.svg index 4c1e9e8d58d7..ed70274326d1 100644 --- a/etc/images/gnus/gnus.svg +++ b/etc/images/gnus/gnus.svg @@ -1,7 +1,7 @@ + {y(H)}. +a(A) --> + b(A).")) + (insert str) + (search-backward "{") + (indent-sexp) + ;; There's no line-spanning sexp, so nothing should be indented. + (should (equal (buffer-string) str))))) + (ert-deftest lisp-indent-region () "Test basics of `lisp-indent-region'." (with-temp-buffer From 9ec18fbd560526ab19c6171aff15995d1307233e Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 22 Apr 2019 21:24:22 -0400 Subject: [PATCH 386/567] * admin/admin.el (set-version): Check for increase in version length, rather than a .50 version. --- admin/admin.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/admin/admin.el b/admin/admin.el index fda6708d4cd5..d7de42e07823 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -138,10 +138,10 @@ Root must be the root of an Emacs source tree." (if (eq 2 (length newversion)) 0 1)))) (majorbump (and oldversion (not (equal oldmajor newmajor)))) (minorbump (and oldversion (not majorbump) - (or (not (equal (cadr oldversion) - (cadr newversion))) - (and (equal (cadr oldversion) (cadr newversion)) - (equal (nth 2 newversion) 50))))) + (or (not (equal (cadr oldversion) (cadr newversion))) + ;; Eg 26.2 -> 26.2.50. + (and (> (length newversion) + (length oldversion)))))) (newsfile (expand-file-name "etc/NEWS" root)) (oldnewsfile (expand-file-name (format "etc/NEWS.%s" oldmajor) root))) (unless (> (length newversion) 2) ; pretest or release candidate? From 25a2ff72d09dfedc3803984cd1744c982de1c709 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Thu, 25 Apr 2019 22:49:03 +0200 Subject: [PATCH 387/567] ; Add missing space in custom.texi --- doc/emacs/custom.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index 3f660fe9a28f..b07362f3ceaa 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -1329,7 +1329,7 @@ On MS-DOS, the name of this file should be @file{_dir-locals.el}, due to limitations of the DOS filesystems. If the filesystem is limited to 8+3 file names, the name of the file will be truncated by the OS to @file{_dir-loc.el}. -}in a directory. Whenever Emacs visits any file in that directory or +} in a directory. Whenever Emacs visits any file in that directory or any of its subdirectories, it will apply the directory-local variables specified in @file{.dir-locals.el}, as though they had been defined as file-local variables for that file (@pxref{File Variables}). Emacs From 0e8d452c1c166ff65a0325de23bc04b57aea68d8 Mon Sep 17 00:00:00 2001 From: "Charles A. Roelli" Date: Fri, 26 Apr 2019 21:49:46 +0200 Subject: [PATCH 388/567] ; * doc/lispref/nonascii.texi (Coding System Basics): Fix grammar. --- doc/lispref/nonascii.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index d58041b279b4..df4f2932c6e1 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi @@ -1049,7 +1049,7 @@ is like @code{undecided}, but it prefers to choose @code{utf-8} when possible. In general, a coding system doesn't guarantee roundtrip identity: -decoding a byte sequence using coding system, then encoding the +decoding a byte sequence using a coding system, then encoding the resulting text in the same coding system, can produce a different byte sequence. But some coding systems do guarantee that the byte sequence will be the same as what you originally decoded. Here are a few From 531c74e2493cf54dc76238930bb93c6d7112ed3b Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 5 Jan 2019 09:47:14 -0800 Subject: [PATCH 389/567] Port to platforms where tputs is in libtinfow * configure.ac (tputs_library): Also try tinfow, ncursesw (Bug#33977). (cherry picked from commit a3d52b3057c98bce581bc94912ef3ced6fad6f14) --- configure.ac | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index cf3fbd9d503e..58a3ea109130 100644 --- a/configure.ac +++ b/configure.ac @@ -4046,7 +4046,8 @@ AC_CACHE_CHECK([for library containing tputs], [emacs_cv_tputs_lib], emacs_cv_tputs_lib='none required' else # curses precedes termcap because of AIX (Bug#9736#35) and OpenIndiana. - for tputs_library in '' tinfo ncurses terminfo curses termcap; do + tputs_libraries='tinfo ncurses terminfo curses termcap tinfow ncursesw' + for tputs_library in '' $tputs_libraries; do OLIBS=$LIBS if test -z "$tputs_library"; then emacs_cv_tputs_lib='none required' From 7cb5364ef5334de0fb1bc2e470bea450e4567d24 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 27 Apr 2019 15:22:11 -0400 Subject: [PATCH 390/567] Check if mouse_face_overlay was deleted (Bug#35273) * src/xdisp.c (note_mouse_highlight): Check if the mouse_face_overlay actually points to a buffer, before calling mouse_face_overlay_overlaps on it. --- src/xdisp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/xdisp.c b/src/xdisp.c index 0c3754a338fa..aa6e1bd2df8d 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -31526,7 +31526,9 @@ note_mouse_highlight (struct frame *f, int x, int y) is currently hidden to avoid Bug#30519. */ || (!hlinfo->mouse_face_hidden && OVERLAYP (hlinfo->mouse_face_overlay) - && mouse_face_overlay_overlaps (hlinfo->mouse_face_overlay))) + /* It's possible the overlay was deleted (Bug#35273). */ + && XMARKER (OVERLAY_START (hlinfo->mouse_face_overlay))->buffer + && mouse_face_overlay_overlaps (hlinfo->mouse_face_overlay))) { /* Find the highest priority overlay with a mouse-face. */ Lisp_Object overlay = Qnil; From 140e7f890fa94f8b6381dfa3e0682cacfa92a593 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Fri, 19 Apr 2019 00:55:14 -0400 Subject: [PATCH 391/567] Recommend using font-lock-face over face (Bug#35044) * doc/lispref/modes.texi (Precalculated Fontification): Explain advantages of using font-lock-face over face. --- doc/lispref/modes.texi | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index 919816f3deef..0ff13d72e2fd 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -3201,7 +3201,12 @@ is disabled, @code{font-lock-face} has no effect on the display. It is ok for a mode to use @code{font-lock-face} for some text and also use the normal Font Lock machinery. But if the mode does not use the normal Font Lock machinery, it should not set the variable -@code{font-lock-defaults}. +@code{font-lock-defaults}. In this case the @code{face} property will +not be overriden, so using the @code{face} property could work too. +However, using @code{font-lock-face} is generally preferable as it +allows the user to control the fontification by toggling +@code{font-lock-mode}, and lets the code work regardless of whether +the mode uses Font Lock machinery or not. @node Faces for Font Lock @subsection Faces for Font Lock From c26d452ae15a74f0eeec53ba529eebaa95eb5489 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Mon, 29 Apr 2019 07:31:45 +0900 Subject: [PATCH 392/567] * src/macfont.m (macfont_shape): Use convenient LGLYPH_NEW. --- src/macfont.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/macfont.m b/src/macfont.m index 42ebfd3d6b78..7f153e130453 100644 --- a/src/macfont.m +++ b/src/macfont.m @@ -2994,7 +2994,7 @@ So we use CTFontDescriptorCreateMatchingFontDescriptor (no if (NILP (lglyph)) { - lglyph = Fmake_vector (make_number (LGLYPH_SIZE), Qnil); + lglyph = LGLYPH_NEW (); LGSTRING_SET_GLYPH (lgstring, i, lglyph); } From ec02c736d65f2fd3a8a17e4e8dc143bf15d9600d Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sun, 28 Apr 2019 08:28:46 -0400 Subject: [PATCH 393/567] Update process filter example (Bug#35044) * doc/lispref/processes.texi (Filter Functions): Use insert-before-markers in the "ordinary" filter example, like internal-default-process-filter does. --- doc/lispref/processes.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 7331eb63762c..38ad9076a0c3 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -1643,7 +1643,7 @@ how to do these things: (save-excursion ;; @r{Insert the text, advancing the process marker.} (goto-char (process-mark proc)) - (insert string) + (insert-before-markers string) (set-marker (process-mark proc) (point))) (if moving (goto-char (process-mark proc))))))) @end group From 3e322df06003e64a491bca47fd14f652374ac3a4 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 1 May 2019 09:15:59 -0700 Subject: [PATCH 394/567] * admin/update_autogen: Handle git worktree. ; No need to merge to master. --- admin/update_autogen | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/update_autogen b/admin/update_autogen index 67ed5d66465e..651d35beafbf 100755 --- a/admin/update_autogen +++ b/admin/update_autogen @@ -47,7 +47,7 @@ cd $PD cd ../ [ -d admin ] || die "Could not locate admin directory" -[ -d .git ] || die "No .git directory" +[ -e .git ] || die "No .git" usage () { From 0ae7b2b88f5356480ba6f2082d76c55ad88dfb55 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 1 May 2019 09:20:05 -0700 Subject: [PATCH 395/567] ; Auto-commit of loaddefs files. --- lisp/ldefs-boot.el | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 3903463c8a1b..405fe362f152 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -1819,7 +1819,7 @@ If `global-auto-revert-non-file-buffers' is non-nil, this mode may also revert some non-file buffers, as described in the documentation of that variable. It ignores buffers with modes matching `global-auto-revert-ignore-modes', and buffers with a -non-nil vale of `global-auto-revert-ignore-buffer'. +non-nil value of `global-auto-revert-ignore-buffer'. When a buffer is reverted, a message is generated. This can be suppressed by setting `auto-revert-verbose' to nil. @@ -18025,8 +18025,9 @@ Return a regular expression matching image-file filenames. (autoload 'insert-image-file "image-file" "\ Insert the image file FILE into the current buffer. -Optional arguments VISIT, BEG, END, and REPLACE are interpreted as for -the command `insert-file-contents'. +Optional arguments VISIT, BEG, END, and REPLACE are interpreted +as for the command `insert-file-contents'. Return list of +absolute file name and number of characters inserted. \(fn FILE &optional VISIT BEG END REPLACE)" nil nil) @@ -36011,7 +36012,12 @@ first backend that could register the file is used. \(fn &optional VC-FILESET COMMENT)" t nil) (autoload 'vc-version-diff "vc" "\ -Report diffs between revisions of the fileset in the repository history. +Report diffs between revisions REV1 and REV2 in the repository history. +This compares two revisions of the current fileset. +If REV1 is nil, it defaults to the current revision, i.e. revision +of the last commit. +If REV2 is nil, it defaults to the work tree, i.e. the current +state of each file in the fileset. \(fn FILES REV1 REV2)" t nil) @@ -36027,8 +36033,14 @@ saving the buffer. \(fn &optional HISTORIC NOT-URGENT)" t nil) (autoload 'vc-version-ediff "vc" "\ -Show differences between revisions of the fileset in the -repository history using ediff. +Show differences between REV1 and REV2 of FILES using ediff. +This compares two revisions of the files in FILES. Currently, +only a single file's revisions can be compared, i.e. FILES can +specify only one file name. +If REV1 is nil, it defaults to the current revision, i.e. revision +of the last commit. +If REV2 is nil, it defaults to the work tree, i.e. the current +state of each file in FILES. \(fn FILES REV1 REV2)" t nil) From 3e29de2ce03d19af84d6dea361e13f0a398e79f1 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Wed, 1 May 2019 22:17:10 -0400 Subject: [PATCH 396/567] * etc/NEWS.24: Belatedly announce delete-consecutive-dups. --- etc/NEWS.24 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/NEWS.24 b/etc/NEWS.24 index 9150e49fd926..049005306fd5 100644 --- a/etc/NEWS.24 +++ b/etc/NEWS.24 @@ -1117,6 +1117,8 @@ a non-nil `interactive-only' property. The value, if non-nil, is a regexp that specifies what to trim from the start and end of each substring. +** New function `delete-consecutive-dups'. + ** Completion *** The separator used by `completing-read-multiple' is now a regexp. From 04340a8e2f32c12e00000373e0067c570fd2a7cb Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 4 May 2019 12:22:49 +0300 Subject: [PATCH 397/567] Improve documentation of the daemon and emacsclient * doc/emacs/misc.texi (emacsclient Options): * doc/emacs/cmdargs.texi (Initial Options): Document that using --daemon=NAME will need to specify the same NAME when invoking 'emacscilent'. (Bug#35547) --- doc/emacs/cmdargs.texi | 16 +++++++++------- doc/emacs/misc.texi | 3 +++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index c870e6dad9d9..a905b8f688fc 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -347,13 +347,15 @@ Start Emacs with minimum customizations. This is similar to using @itemx --bg-daemon[=@var{name}] @itemx --fg-daemon[=@var{name}] Start Emacs as a daemon: after Emacs starts up, it starts the Emacs -server without opening any frames. -(Optionally, you can specify an explicit @var{name} for the server.) -You can then use the @command{emacsclient} command to connect to Emacs -for editing. @xref{Emacs Server}, for information about using Emacs -as a daemon. A ``background'' daemon disconnects from the terminal -and runs in the background (@samp{--daemon} is an alias for -@samp{--bg-daemon}). +server without opening any frames. You can then use the +@command{emacsclient} command to connect to Emacs for editing. +(Optionally, you can specify an explicit @var{name} for the server; if +you do, you will need to specify the same @var{name} when you invoke +@command{emacsclient}, via its @option{--socket-name} option, see +@ref{emacsclient Options}.) @xref{Emacs Server}, for information +about using Emacs as a daemon. A ``background'' daemon disconnects +from the terminal and runs in the background (@samp{--daemon} is an +alias for @samp{--bg-daemon}). @item --no-desktop @opindex --no-desktop diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index 2d1617ef964c..fc6b4cf1e7cb 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -1925,6 +1925,9 @@ omitted, @command{emacsclient} connects to the first server it finds. If you set @code{server-name} of the Emacs server to an absolute file name, give the same absolute file name as @var{server-name} to this option to instruct @command{emacsclient} to connect to that server. +You need to use this option if you started Emacs as daemon +(@pxref{Initial Options}) and specified the name for the server +started by the daemon. @item -t @itemx --tty From 3b86e0b812e97aa83222f042ce8323516aaca0ec Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 4 May 2019 23:55:50 -0400 Subject: [PATCH 398/567] Clarify handling of long options (Bug#24949) * doc/emacs/cmdargs.texi (Emacs Invocation): Note that space can be used instead of "=" only if an option requires an argument. --- doc/emacs/cmdargs.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index a905b8f688fc..9b60c2c3e33b 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -39,7 +39,7 @@ corresponding long form. The long forms with @samp{--} are easier to remember, but longer to type. However, you don't have to spell out the whole option name; any -unambiguous abbreviation is enough. When a long option takes an +unambiguous abbreviation is enough. When a long option requires an argument, you can use either a space or an equal sign to separate the option name and the argument. Thus, for the option @samp{--display}, you can write either @samp{--display sugar-bombs:0.0} or From f77bd2b4ed59370876f5c177398ae3e1683b71f9 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 6 May 2019 21:52:19 +0300 Subject: [PATCH 399/567] ; * src/lisp.h (DEFSYM): Fix inaccurate comment. --- src/lisp.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lisp.h b/src/lisp.h index 08c6dbdf72b2..782c396dbb4e 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -2010,7 +2010,7 @@ INLINE int } /* Placeholder for make-docfile to process. The actual symbol - definition is done by lread.c's defsym. */ + definition is done by lread.c's define_symbol. */ #define DEFSYM(sym, name) /* empty */ From fb65a36f4587726b3de0df02daf02c28e9129f62 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Tue, 7 May 2019 01:40:22 +0100 Subject: [PATCH 400/567] Fix ibuffer-unmark-backward synopsis (bug#35572) * lisp/ibuffer.el (ibuffer-mode): Fix synopsis of ibuffer-unmark-backward along with other minor copy-edits. --- lisp/ibuffer.el | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 66a7087b9b88..8cb9a97d92ca 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -2523,8 +2523,8 @@ particular subset of them, and sorting by various criteria. Operations on marked buffers: \\ - `\\[ibuffer-do-save]' - Save the marked buffers - `\\[ibuffer-do-view]' - View the marked buffers in this frame. + `\\[ibuffer-do-save]' - Save the marked buffers. + `\\[ibuffer-do-view]' - View the marked buffers in the selected frame. `\\[ibuffer-do-view-other-frame]' - View the marked buffers in another frame. `\\[ibuffer-do-revert]' - Revert the marked buffers. `\\[ibuffer-do-toggle-read-only]' - Toggle read-only state of marked buffers. @@ -2547,7 +2547,7 @@ Operations on marked buffers: buffer's file as an argument. `\\[ibuffer-do-eval]' - Evaluate a form in each of the marked buffers. This is a very flexible command. For example, if you want to make all - of the marked buffers read only, try using (read-only-mode 1) as + of the marked buffers read-only, try using (read-only-mode 1) as the input form. `\\[ibuffer-do-view-and-eval]' - As above, but view each buffer while the form is evaluated. @@ -2562,21 +2562,20 @@ Marking commands: all unmarked buffers. `\\[ibuffer-change-marks]' - Change the mark used on marked buffers. `\\[ibuffer-unmark-forward]' - Unmark the buffer at point. - `\\[ibuffer-unmark-backward]' - Unmark the buffer at point, and move to the - previous line. + `\\[ibuffer-unmark-backward]' - Unmark the previous buffer. `\\[ibuffer-unmark-all]' - Unmark buffers marked with MARK. `\\[ibuffer-unmark-all-marks]' - Unmark all marked buffers. `\\[ibuffer-mark-by-mode]' - Mark buffers by major mode. `\\[ibuffer-mark-unsaved-buffers]' - Mark all \"unsaved\" buffers. This means that the buffer is modified, and has an associated file. `\\[ibuffer-mark-modified-buffers]' - Mark all modified buffers, - regardless of whether or not they have an associated file. + regardless of whether they have an associated file. `\\[ibuffer-mark-special-buffers]' - Mark all buffers whose name begins and ends with `*'. `\\[ibuffer-mark-dissociated-buffers]' - Mark all buffers which have an associated file, but that file doesn't currently exist. `\\[ibuffer-mark-read-only-buffers]' - Mark all read-only buffers. - `\\[ibuffer-mark-dired-buffers]' - Mark buffers in `dired' mode. + `\\[ibuffer-mark-dired-buffers]' - Mark buffers in `dired-mode'. `\\[ibuffer-mark-help-buffers]' - Mark buffers in `help-mode', `apropos-mode', etc. `\\[ibuffer-mark-old-buffers]' - Mark buffers older than `ibuffer-old-time'. `\\[ibuffer-mark-for-delete]' - Mark the buffer at point for deletion. @@ -2655,17 +2654,17 @@ Other commands: ** Information on Filtering: - You can filter your ibuffer view via different criteria. Each Ibuffer +You can filter your Ibuffer view via different criteria. Each Ibuffer buffer has its own stack of active filters. For example, suppose you are working on an Emacs Lisp project. You can create an Ibuffer -buffer displays buffers in just `emacs-lisp' modes via +buffer displaying only `emacs-lisp-mode' buffers via `\\[ibuffer-filter-by-mode] emacs-lisp-mode RET'. In this case, there is just one entry on the filtering stack. You can also combine filters. The various filtering commands push a new filter onto the stack, and the filters combine to show just buffers which satisfy ALL criteria on the stack. For example, suppose -you only want to see buffers in `emacs-lisp' mode, whose names begin +you only want to see buffers in `emacs-lisp-mode', whose names begin with \"gnus\". You can accomplish this via: \\[ibuffer-filter-by-mode] emacs-lisp-mode RET @@ -2709,8 +2708,8 @@ will not be displayed multiple times if they would be included in multiple filter groups; instead, the first filter group is used. The filter groups are displayed in this order of precedence. -You may rearrange filter groups by using the regular -`\\[ibuffer-kill-line]' and `\\[ibuffer-yank]' pair. Yanked groups +You may rearrange filter groups by using the usual pair +`\\[ibuffer-kill-line]' and `\\[ibuffer-yank]'. Yanked groups will be inserted before the group at point." ;; Include state info next to the mode name. (set (make-local-variable 'mode-line-process) From 37436fe6d32539b03d1c4dbd535d5409bef5ac09 Mon Sep 17 00:00:00 2001 From: Vitalie Spinu Date: Tue, 7 May 2019 13:15:43 +0200 Subject: [PATCH 401/567] Fix cloning of eieio-named objects (Bug#22840) * lisp/emacs-lisp/eieio-base.el (clone): Correctly set the name of the cloned objects from eieio-named instances. --- lisp/emacs-lisp/eieio-base.el | 20 ++++++++++--------- .../emacs-lisp/eieio-tests/eieio-tests.el | 15 ++++++++++++-- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el index 7a9f905c6fe3..3aeda92db12b 100644 --- a/lisp/emacs-lisp/eieio-base.el +++ b/lisp/emacs-lisp/eieio-base.el @@ -510,16 +510,18 @@ instance." All slots are unbound, except those initialized with PARAMS." (let* ((newname (and (stringp (car params)) (pop params))) (nobj (apply #'cl-call-next-method obj params)) - (nm (slot-value obj 'object-name))) - (eieio-oset obj 'object-name + (nm (slot-value nobj 'object-name))) + (eieio-oset nobj 'object-name (or newname - (save-match-data - (if (and nm (string-match "-\\([0-9]+\\)" nm)) - (let ((num (1+ (string-to-number - (match-string 1 nm))))) - (concat (substring nm 0 (match-beginning 0)) - "-" (int-to-string num))) - (concat nm "-1"))))) + (if (equal nm (slot-value obj 'object-name)) + (save-match-data + (if (and nm (string-match "-\\([0-9]+\\)" nm)) + (let ((num (1+ (string-to-number + (match-string 1 nm))))) + (concat (substring nm 0 (match-beginning 0)) + "-" (int-to-string num))) + (concat nm "-1"))) + nm))) nobj)) (cl-defmethod make-instance ((class (subclass eieio-named)) &rest args) diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el index 09ee123efaa3..0c7b6b71c311 100644 --- a/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el +++ b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el @@ -862,8 +862,7 @@ Subclasses to override slot attributes.") (should (oref obj1 a-slot)))) (defclass NAMED (eieio-named) - ((some-slot :initform nil) - ) + ((some-slot :initform nil)) "A class inheriting from eieio-named.") (ert-deftest eieio-test-35-named-object () @@ -902,6 +901,18 @@ Subclasses to override slot attributes.") (should (fboundp 'eieio--defalias))) +(ert-deftest eieio-test-38-clone-named-object () + (let* ((A (NAMED :object-name "aa")) + (B (clone A :object-name "bb")) + (C (clone A "cc")) + (D (clone A)) + (E (clone D))) + (should (string= "aa" (oref A object-name))) + (should (string= "bb" (oref B object-name))) + (should (string= "cc" (oref C object-name))) + (should (string= "aa-1" (oref D object-name))) + (should (string= "aa-2" (oref E object-name))))) + (provide 'eieio-tests) From 1c6484e975e8b0e50d22980d02a3be6c9bf93b49 Mon Sep 17 00:00:00 2001 From: Vitalie Spinu Date: Wed, 8 May 2019 11:12:29 +0200 Subject: [PATCH 402/567] Fix incorrect cloning of eieio-instance-inheritor objects (Bug#34840) * lisp/emacs-lisp/eieio-base.el (clone): Unbound slots of eieio-instance-inheritor objects as documented in the docs string and implemented in the original eieio implementation. --- lisp/emacs-lisp/eieio-base.el | 12 +++++- .../emacs-lisp/eieio-tests/eieio-tests.el | 41 +++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el index 3aeda92db12b..62f4c82026ec 100644 --- a/lisp/emacs-lisp/eieio-base.el +++ b/lisp/emacs-lisp/eieio-base.el @@ -64,10 +64,18 @@ SLOT-NAME is the offending slot. FN is the function signaling the error." ;; Throw the regular signal. (cl-call-next-method))) -(cl-defmethod clone ((obj eieio-instance-inheritor) &rest _params) +(cl-defmethod clone ((obj eieio-instance-inheritor) &rest params) "Clone OBJ, initializing `:parent' to OBJ. All slots are unbound, except those initialized with PARAMS." - (let ((nobj (cl-call-next-method))) + ;; call next method without params as we makeunbound slots anyhow + (let ((nobj (if (stringp (car params)) + (cl-call-next-method obj (pop params)) + (cl-call-next-method obj)))) + (dolist (descriptor (eieio-class-slots (class-of nobj))) + (let ((slot (eieio-slot-descriptor-name descriptor))) + (slot-makeunbound nobj slot))) + (when params + (shared-initialize nobj params)) (oset nobj parent-instance obj) nobj)) diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el index 0c7b6b71c311..1084c99dd5c6 100644 --- a/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el +++ b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el @@ -696,6 +696,17 @@ Do not override for `prot-2'." (setq eitest-II3 (clone eitest-II2 "eitest-II3 Test.")) (oset eitest-II3 slot3 'penguin) + ;; Test that slots are non-initialized slots are unbounded + (oref eitest-II2 slot1) + (should (slot-boundp eitest-II2 'slot1)) + (should-not (slot-boundp eitest-II2 'slot2)) + (should-not (slot-boundp eitest-II2 'slot3)) + (should-not (slot-boundp eitest-II3 'slot2)) + (should-not (slot-boundp eitest-II3 'slot1)) + (should-not (slot-boundp eitest-II3 'slot2)) + (should (eieio-instance-inheritor-slot-boundp eitest-II3 'slot2)) + (should (slot-boundp eitest-II3 'slot3)) + ;; Test level 1 inheritance (should (eq (oref eitest-II3 slot1) 'moose)) ;; Test level 2 inheritance @@ -913,6 +924,36 @@ Subclasses to override slot attributes.") (should (string= "aa-1" (oref D object-name))) (should (string= "aa-2" (oref E object-name))))) +(defclass TII (eieio-instance-inheritor) + ((a :initform 1 :initarg :a) + (b :initarg :b) + (c :initarg :c)) + "Instance Inheritor test class.") + +(ert-deftest eieio-test-39-clone-instance-inheritor-with-args () + (let* ((A (TII)) + (B (clone A :b "bb")) + (C (clone B :a "aa"))) + + (should (string= "aa" (oref C :a))) + (should (string= "bb" (oref C :b))) + + (should (slot-boundp A :a)) + (should-not (slot-boundp A :b)) + (should-not (slot-boundp A :c)) + + (should-not (slot-boundp B :a)) + (should (slot-boundp B :b)) + (should-not (slot-boundp A :c)) + + (should (slot-boundp C :a)) + (should-not (slot-boundp C :b)) + (should-not (slot-boundp C :c)) + + (should (eieio-instance-inheritor-slot-boundp C :a)) + (should (eieio-instance-inheritor-slot-boundp C :b)) + (should-not (eieio-instance-inheritor-slot-boundp C :c)))) + (provide 'eieio-tests) From 916510b6d919a333d1dac528a9d051aa6d857ccc Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 8 May 2019 13:19:36 -0400 Subject: [PATCH 403/567] * etc/package-keyring.gpg: Add the 2019 key (backport) --- etc/package-keyring.gpg | Bin 999 -> 2069 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/etc/package-keyring.gpg b/etc/package-keyring.gpg index e76e68522f36382fa5897866680fdb5afc73abdb..490dee41a92eaa4afaade953da7c2a61ee303a50 100644 GIT binary patch delta 1268 zcmaFPK2>0Y5p%t%yI-h+t51NVLU3k!US?jpf@6AWUWtN+k%6I!rh-jsPC;TZP{sko z&`ZxN)ypqRx9gb3A}q+kU?--?a>_-A;iq`X$NI>d8{GX_o9p+!pUuh?v%fTxNt&6J zlQWI6ft8z+gPn;@l!KFtn~6n?iJ6f}j*&^cfq{#&UI3=2=Ox4cpk$k!rMI7PZ`A$t zAjIo%?#k9jmk43lt=! z^%xZE=PTrRZvD^KOK*qPKO%?7z0Ci(5}W?c!88(sb~%OTUfB z>nECzt4}5I8$6rsFu7gh!P{E}IhJ1)%i5H^Up)S)|-@n++50Pp7&Yp(tP8#lVLwng)bEDix6CwxN7^vDKA$4T*~+1 z<{2@IFNxEld<9oV&HGRrk*(Co*(>DM0vDn<7aOH`)OUD0n+aGOQx?D`(%`8oSM2UE5<@uZA<5t zt}4SY(H5cSs}?z3yHgmM(mz2mD4g$6AoGU}owH`??Co=@{d2OjQ)@U6O^kS6aOg%NRUi|yP>f#$8SeS~w zXPI@zYJ~M}_Dv|BQT~7D-hH8ITa;DW7Wt;XQM;tCaMp5>ugFXvt6Ee%ik^}p%)+FK`5 zK8enov)j9)ltlnoddLDxj~raZM@a{;bbuEQjfD(<1tU(|=*?Ex67%i5CiA~M&0E&1 zl=2Hzo_r9usEA)BxrX6?@!iO@{yjfq+;&^ee*3EEX3?3T?CC3l&Uc(lS~WS}g&6?t CcN}m4 delta 170 zcmV;b09F5$5a$Q5G6NSbM^05BMNCjZAX8~)ZfS03AVFtkZgi7S0~vpS1QQVm04N0l zR3gzx0viJb2?=HafCdW*2nPcK1{DYb2?`4Y76JnS0v-VZ7k~f?2@pq51%rRR@0)kA z0RKZOACm&di--I4#S|RO-$el(p?8eS?_@nf2Y8*SZ1w>FmZSjX$*Y~`_%%PEnG?>R YB#v^QT Date: Wed, 8 May 2019 20:34:09 +0300 Subject: [PATCH 404/567] Fix positioning client buffer as instructed by emacsclient * lisp/server.el (server-switch-buffer): Let-bind switch-to-buffer-preserve-window-point to nil when switching to the client buffer, when the client requested a specific position. (Bug#35602) --- lisp/server.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/server.el b/lisp/server.el index a39b1cb46d40..42329e853bae 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -1621,7 +1621,14 @@ be a cons cell (LINENUMBER . COLUMNNUMBER)." (frame-terminal)))) 'nomini 'visible (selected-window)))) (condition-case nil - (switch-to-buffer next-buffer) + ;; If the client specified a new buffer position, + ;; treat that as an explicit point-move command, and + ;; override switch-to-buffer-preserve-window-point. + (let ((switch-to-buffer-preserve-window-point + (if filepos + nil + switch-to-buffer-preserve-window-point))) + (switch-to-buffer next-buffer)) ;; After all the above, we might still have ended up with ;; a minibuffer/dedicated-window (if there's no other). (error (pop-to-buffer next-buffer))))))) From ca14dd1d4628094dd33d5d94694dcf5f29e843b8 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 18 Apr 2019 23:36:04 -0400 Subject: [PATCH 405/567] Fix nxml-get-inside (Bug#32003) The change from 2016-01-16 "lisp/nxml: Use syntax-tables for comments" made nxml-get-inside return non-nil for any string or comment, including attribute strings. This caused incorrect and therefore indentation. * lisp/nxml/nxml-rap.el: Update commentary to reflect changes to nxml-mode parsing. (nxml-get-inside): Only return non-nil when inside comments and generic strings, not normal quote-delimited strings. * test/lisp/nxml/nxml-mode-tests.el: New tests. --- lisp/nxml/nxml-rap.el | 42 ++++++++++----------- test/lisp/nxml/nxml-mode-tests.el | 62 +++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 22 deletions(-) create mode 100644 test/lisp/nxml/nxml-mode-tests.el diff --git a/lisp/nxml/nxml-rap.el b/lisp/nxml/nxml-rap.el index 2bd758be3a5d..21dbaded25a4 100644 --- a/lisp/nxml/nxml-rap.el +++ b/lisp/nxml/nxml-rap.el @@ -35,35 +35,25 @@ ;; ;; Our strategy is to keep track of just the problematic things. ;; Specifically, we keep track of all comments, CDATA sections and -;; processing instructions in the instance. We do this by marking all -;; except the first character of these with a non-nil nxml-inside text -;; property. The value of the nxml-inside property is comment, -;; cdata-section or processing-instruction. The first character does -;; not have the nxml-inside property so we can find the beginning of -;; the construct by looking for a change in a text property value -;; (Emacs provides primitives for this). We use text properties -;; rather than overlays, since the implementation of overlays doesn't -;; look like it scales to large numbers of overlays in a buffer. -;; -;; We don't in fact track all these constructs, but only track them in -;; some initial part of the instance. +;; processing instructions in the instance. We do this by marking +;; the first character of these with the generic string syntax by setting +;; a 'syntax-table' text property in `sgml-syntax-propertize'. ;; ;; Thus to parse some random point in the file we first ensure that we -;; have scanned up to that point. Then we search backwards for a -;; <. Then we check whether the < has an nxml-inside property. If it -;; does we go backwards to first character that does not have an -;; nxml-inside property (this character must be a <). Then we start -;; parsing forward from the < we have found. +;; have scanned up to that point. Then we search backwards for a <. +;; Then we check whether the < has the generic string syntax. If it +;; does we go backwards to first character of the generic string (this +;; character must be a <). Then we start parsing forward from the < +;; we have found. ;; ;; The prolog has to be parsed specially, so we also keep track of the ;; end of the prolog in `nxml-prolog-end'. The prolog is reparsed on ;; every change to the prolog. This won't work well if people try to ;; edit huge internal subsets. Hopefully that will be rare. ;; -;; We keep track of the changes by adding to the buffer's -;; after-change-functions hook. Scanning is also done as a -;; prerequisite to fontification by adding to fontification-functions -;; (in the same way as jit-lock). This means that scanning for these +;; We rely on the `syntax-propertize-function' machinery to keep track +;; of the changes in the buffer. Fontification also relies on correct +;; `syntax-table' properties. This means that scanning for these ;; constructs had better be quick. Fortunately it is. Firstly, the ;; typical proportion of comments, CDATA sections and processing ;; instructions is small relative to other things. Secondly, to scan @@ -79,7 +69,15 @@ "Integer giving position following end of the prolog.") (defsubst nxml-get-inside (pos) - (save-excursion (nth 8 (syntax-ppss pos)))) + "Return non-nil if inside comment, CDATA, or PI." + (let ((ppss (save-excursion (syntax-ppss pos)))) + (or + ;; Inside comment. + (nth 4 ppss) + ;; Inside "generic" string which is used for CDATA, and PI. + ;; "Normal" double and single quoted strings are used for + ;; attribute values. + (eq t (nth 3 ppss))))) (defun nxml-inside-end (pos) "Return the end of the inside region containing POS. diff --git a/test/lisp/nxml/nxml-mode-tests.el b/test/lisp/nxml/nxml-mode-tests.el new file mode 100644 index 000000000000..57a731ad182e --- /dev/null +++ b/test/lisp/nxml/nxml-mode-tests.el @@ -0,0 +1,62 @@ +;;; nxml-mode-tests.el --- Test NXML Mode -*- lexical-binding: t; -*- + +;; Copyright (C) 2019 Free Software Foundation, Inc. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Code: + +(require 'ert) +(require 'nxml-mode) + +(defun nxml-mode-tests-correctly-indented-string (str) + (with-temp-buffer + (nxml-mode) + (insert str) + (indent-region (point-min) (point-max)) + (equal (buffer-string) str))) + +(ert-deftest nxml-indent-line-after-attribute () + (should (nxml-mode-tests-correctly-indented-string " + + + ... + + +")) + (should (nxml-mode-tests-correctly-indented-string "\ + + + + + + +"))) + +(ert-deftest nxml-balanced-close-start-tag-inline () + (with-temp-buffer + (nxml-mode) + (insert "") + (search-backward "") + (nxml-balanced-close-start-tag-inline) + (should (equal (buffer-string) "")))) + +(provide 'nxml-mode-tests) +;;; nxml-mode-tests.el ends here From e4cde42657f8f91f795e6b7041dc50b896dc468d Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Fri, 19 Apr 2019 13:28:00 -0400 Subject: [PATCH 406/567] Disable extra display of in nxml-mode (Bug#32897) * lisp/nxml/nxml-mode.el (nxml-char-ref-display-extra): Don't put display for the newline, it makes the indentation look wrong. --- lisp/nxml/nxml-mode.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index f17f5843b80d..ab035b927ee5 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el @@ -2378,7 +2378,9 @@ With a prefix argument, inserts the character directly." (put 'nxml-char-ref 'evaporate t) (defun nxml-char-ref-display-extra (start end n) - (when nxml-char-ref-extra-display + (when (and ;; Displaying literal newline is unhelpful. + (not (eql n ?\n)) + nxml-char-ref-extra-display) (let ((name (or (get-char-code-property n 'name) (get-char-code-property n 'old-name))) (glyph-string (and nxml-char-ref-display-glyph-flag From 7dab3ee7ab54b3c2e7bc24170376054786c01d6f Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sun, 21 Apr 2019 22:44:50 -0400 Subject: [PATCH 407/567] Recognize single quote attribute values in nxml and sgml (Bug#35381) * lisp/textmodes/sgml-mode.el (sgml-specials): Add single quote. (sgml-syntax-propertize-rules): Handle single quote. * test/lisp/nxml/nxml-mode-tests.el (nxml-mode-font-lock-quotes): New test. * test/lisp/textmodes/sgml-mode-tests.el (sgml-delete-tag-bug-8203-should-not-delete-apostrophe): Now passes. --- lisp/textmodes/sgml-mode.el | 34 ++++++++++++-------------- test/lisp/nxml/nxml-mode-tests.el | 20 +++++++++++++++ test/lisp/textmodes/sgml-mode-tests.el | 1 - 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 50b2077ef4f6..128e58810e51 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -100,24 +100,20 @@ a DOCTYPE or an XML declaration." :group 'sgml :type 'hook) -;; As long as Emacs's syntax can't be complemented with predicates to context -;; sensitively confirm the syntax of characters, we have to live with this -;; kludgy kind of tradeoff. -(defvar sgml-specials '(?\") +;; The official handling of "--" is complicated in SGML, and +;; historically not well supported by browser HTML parsers. +;; Recommendations for writing HTML comments is to use +;; (where ... doesn't contain "--") to avoid the complications +;; altogether (XML goes even further by requiring this in the spec). +;; So there is probably no need to handle it "correctly". +(defvar sgml-specials '(?\" ?\') "List of characters that have a special meaning for SGML mode. This list is used when first loading the `sgml-mode' library. -The supported characters and potential disadvantages are: +The supported characters are ?\\\", ?\\=', and ?-. - ?\\\" Makes \" in text start a string. - ?\\=' Makes \\=' in text start a string. - ?- Makes -- in text start a comment. - -When only one of ?\\\" or ?\\=' are included, \"\\='\" or \\='\"\\=', as can be found in -DTDs, start a string. To partially avoid this problem this also makes these -self insert as named entities depending on `sgml-quick-keys'. - -Including ?- has the problem of affecting dashes that have nothing to do -with comments, so we normally turn it off.") +Including ?- makes double dashes into comment delimiters, but +they are really only supposed to delimit comments within DTD +definitions. So we normally turn it off.") (defvar sgml-quick-keys nil "Use <, >, &, /, SPC and `sgml-specials' keys \"electrically\" when non-nil. @@ -351,12 +347,12 @@ Any terminating `>' or `/' is not matched.") ("--[ \t\n]*\\(>\\)" (1 "> b")) ("\\(<\\)[?!]" (1 (prog1 "|>" (sgml-syntax-propertize-inside end)))) - ;; Double quotes outside of tags should not introduce strings. + ;; Quotes outside of tags should not introduce strings. ;; Be careful to call `syntax-ppss' on a position before the one we're ;; going to change, so as not to need to flush the data we just computed. - ("\"" (0 (if (prog1 (zerop (car (syntax-ppss (match-beginning 0)))) - (goto-char (match-end 0))) - (string-to-syntax "."))))))) + ("[\"']" (0 (if (prog1 (zerop (car (syntax-ppss (match-beginning 0)))) + (goto-char (match-end 0))) + (string-to-syntax "."))))))) (defun sgml-syntax-propertize (start end) "Syntactic keywords for `sgml-mode'." diff --git a/test/lisp/nxml/nxml-mode-tests.el b/test/lisp/nxml/nxml-mode-tests.el index 57a731ad182e..92744be619de 100644 --- a/test/lisp/nxml/nxml-mode-tests.el +++ b/test/lisp/nxml/nxml-mode-tests.el @@ -58,5 +58,25 @@ (nxml-balanced-close-start-tag-inline) (should (equal (buffer-string) "")))) +(ert-deftest nxml-mode-font-lock-quotes () + (with-temp-buffer + (nxml-mode) + (insert "\"dquote text\"'squote text'") + (font-lock-ensure) + (let ((squote-txt-pos (search-backward "squote text")) + (dquote-txt-pos (search-backward "dquote text")) + (squote-att-pos (search-backward "squote attr")) + (dquote-att-pos (search-backward "dquote attr"))) + ;; Just make sure that each quote uses the same face for quoted + ;; attribute values, and a different face for quoted text + ;; outside tags. Don't test `font-lock-string-face' vs + ;; `nxml-attribute-value' here. + (should (equal (get-text-property squote-att-pos 'face) + (get-text-property dquote-att-pos 'face))) + (should (equal (get-text-property squote-txt-pos 'face) + (get-text-property dquote-txt-pos 'face))) + (should-not (equal (get-text-property squote-txt-pos 'face) + (get-text-property dquote-att-pos 'face)))))) + (provide 'nxml-mode-tests) ;;; nxml-mode-tests.el ends here diff --git a/test/lisp/textmodes/sgml-mode-tests.el b/test/lisp/textmodes/sgml-mode-tests.el index 20b5e27ff5d0..7318a667b36f 100644 --- a/test/lisp/textmodes/sgml-mode-tests.el +++ b/test/lisp/textmodes/sgml-mode-tests.el @@ -125,7 +125,6 @@ The point is set to the beginning of the buffer." (should (string= content (buffer-string)))))) (ert-deftest sgml-delete-tag-bug-8203-should-not-delete-apostrophe () - :expected-result :failed (sgml-with-content "Winter is comin'" (sgml-delete-tag 1) From 0397b7c797b891906bd6613b46a5634aba468fb9 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sun, 5 May 2019 12:27:32 -0400 Subject: [PATCH 408/567] ; Fix smtpmail-stream-type docstring * lisp/mail/smtpmail.el (smtpmail-stream-type): Remove redundant docstring verbiage. --- lisp/mail/smtpmail.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el index 0043fafb4a09..5502e7cfa64f 100644 --- a/lisp/mail/smtpmail.el +++ b/lisp/mail/smtpmail.el @@ -101,9 +101,9 @@ don't define this value." (defcustom smtpmail-stream-type nil "Type of SMTP connections to use. -This may be either nil (possibly upgraded to STARTTLS if possible), -or `starttls' (refuse to send if STARTTLS isn't available), or `plain' -\(never use STARTTLS), or `ssl' (to use TLS/SSL)." +This may be either nil (upgrade with STARTTLS if possible), +`starttls' (refuse to send if STARTTLS isn't available), +`plain' (never use STARTTLS), or `ssl' (to use TLS/SSL)." :version "24.1" :group 'smtpmail :type '(choice (const :tag "Possibly upgrade to STARTTLS" nil) From 32d181326a752375ce31796556017b94878d2d2b Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Thu, 9 May 2019 16:27:03 +0000 Subject: [PATCH 409/567] Fix description of (move-to-column t) when column is inside a tab This fixes bug #35647. State that when indent-tabs-mode is non-nil, spaces are inserted before the tab rather than the tab being replaced by spaces. * doc/lispref/text.texi (columns) * src/indent.c (move-to-column): Make the above documentation amendment. --- doc/lispref/text.texi | 8 +++++--- src/indent.c | 7 ++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 73312bb0caa1..f3d222b70830 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -2245,9 +2245,11 @@ If it is impossible to move to column @var{column} because that is in the middle of a multicolumn character such as a tab, point moves to the end of that character. However, if @var{force} is non-@code{nil}, and @var{column} is in the middle of a tab, then @code{move-to-column} -converts the tab into spaces so that it can move precisely to column -@var{column}. Other multicolumn characters can cause anomalies despite -@var{force}, since there is no way to split them. +either converts the tab into spaces (when @code{indent-tabs-mode} is +@code{nil}), or inserts enough spaces before it (otherwise), so that +point can move precisely to column @var{column}. Other multicolumn +characters can cause anomalies despite @var{force}, since there is no +way to split them. The argument @var{force} also has an effect if the line isn't long enough to reach column @var{column}; if it is @code{t}, that means to diff --git a/src/indent.c b/src/indent.c index 5e3a7e05923e..53f998d6995e 100644 --- a/src/indent.c +++ b/src/indent.c @@ -983,9 +983,10 @@ If specified column is within a character, point goes after that character. If it's past end of line, point goes to end of line. Optional second argument FORCE non-nil means if COLUMN is in the -middle of a tab character, change it to spaces. -In addition, if FORCE is t, and the line is too short to reach -COLUMN, add spaces/tabs to get there. +middle of a tab character, either change it to spaces (when +`indent-tabs-mode' is nil), or insert enough spaces before it to reach +COLUMN (otherwise). In addition, if FORCE is t, and the line is too short +to reach COLUMN, add spaces/tabs to get there. The return value is the current column. */) (Lisp_Object column, Lisp_Object force) From b1235f9abd0f255ff65e13b18ef3ee4e19278484 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 11 May 2019 15:00:06 +0300 Subject: [PATCH 410/567] Improve documentation of Hexl mode * doc/emacs/misc.texi (Editing Binary Files): Clarify "insertion". Improve wording. Add a few Hexl commands. (Bug#35580) --- doc/emacs/misc.texi | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index fc6b4cf1e7cb..75cca7219006 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -2423,10 +2423,13 @@ automatically back to binary. into hex. This is useful if you visit a file normally and then discover it is a binary file. - Ordinary text characters overwrite in Hexl mode. This is to reduce + Inserting text always overwrites in Hexl mode. This is to reduce the risk of accidentally spoiling the alignment of data in the file. -There are special commands for insertion. Here is a list of the -commands of Hexl mode: +Ordinary text characters insert themselves (i.e., overwrite with +themselves). There are commands for insertion of special characters +by their code. Most cursor motion keys, as well as @kbd{C-x C-s}, are +bound in Hexl mode to commands that produce the same effect. Here is +a list of other important commands special to Hexl mode: @c I don't think individual index entries for these commands are useful--RMS. @table @kbd @@ -2439,6 +2442,12 @@ Insert a byte with a code typed in octal. @item C-M-x Insert a byte with a code typed in hex. +@item C-M-a +Move to the beginning of a 512-byte page. + +@item C-M-e +Move to the end of a 512-byte page. + @item C-x [ Move to the beginning of a 1k-byte page. From 02bee7860f7e650ef13e00fe1a7f9a362e3eb001 Mon Sep 17 00:00:00 2001 From: Neil Roberts Date: Fri, 10 May 2019 12:57:28 +0200 Subject: [PATCH 411/567] Let dir locals for more specific modes override those from less MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The list of dir local variables to apply is now sorted by the number of parent modes of the mode used as the key in the association list. That way when the variables are applied in order the variables from more specific modes will override those from less specific modes. If there are directory entries in the list then they are sorted in order of name length. The list of modes for that dir is then recursively sorted with the same mechanism. That way variables tied to a particular subdirectory override those in in a parent directory. Previously the behaviour didn’t seem to be well defined anyway and was dependent on the order they appeared in the file. However this order was changed in version 26.1 and it probably also depended on the number of dir-local files that are merged. Bug#33400 * lisp/files.el (dir-locals-get-sort-score, dir-locals-sort-variables) (dir-locals-read-from-dir): Sort the dir locals so that more precise modes and directory-specific entries have override lesser ones. * doc/emacs/custom.texi (Directory Variables): Document the priority. --- doc/emacs/custom.texi | 22 ++++++++++++++++++++ lisp/files.el | 47 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index b07362f3ceaa..3fd655048b40 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -1375,6 +1375,28 @@ be applied in the current directory, not in any subdirectories. Finally, it specifies a different @file{ChangeLog} file name for any file in the @file{src/imported} subdirectory. +If the @file{.dir-locals.el} file contains multiple different values +for a variable using different mode names or directories, the values +will be applied in an order such that the values for more specific +modes take priority over more generic modes. Values specified under a +directory have even more priority. For example: + +@example +((nil . ((fill-column . 40))) + (c-mode . ((fill-column . 50))) + (prog-mode . ((fill-column . 60))) + ("narrow-files" . ((nil . ((fill-column . 20)))))) +@end example + +Files that use @code{c-mode} also match @code{prog-mode} because the +former inherits from the latter. The value used for +@code{fill-column} in C files will however be @code{50} because the +mode name is more specific than @code{prog-mode}. Files using other +modes inheriting from @code{prog-mode} will use @code{60}. Any file +under the directory @file{narrow-files} will use the value @code{20} +even if they use @code{c-mode} because directory entries have priority +over mode entries. + You can specify the variables @code{mode}, @code{eval}, and @code{unibyte} in your @file{.dir-locals.el}, and they have the same meanings as they would have in file local variables. @code{coding} diff --git a/lisp/files.el b/lisp/files.el index d7ed24878628..f3b502095dde 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -4026,6 +4026,52 @@ This function returns either: ;; No cache entry. locals-dir))) +(defun dir-locals--get-sort-score (node) + "Return a number used for sorting the definitions of dir locals. +NODE is assumed to be a cons cell where the car is either a +string or a symbol representing a mode name. + +If it is a mode then the the depth of the mode (ie, how many +parents that mode has) will be returned. + +If it is a string then the length of the string plus 1000 will be +returned. + +Otherwise it returns -1. + +That way the value can be used to sort the list such that deeper +modes will be after the other modes. This will be followed by +directory entries in order of length. If the entries are all +applied in order then that means the more specific modes will +override the values specified by the earlier modes and directory +variables will override modes." + (let ((key (car node))) + (cond ((null key) -1) + ((symbolp key) + (let ((mode key) + (depth 0)) + (while (setq mode (get mode 'derived-mode-parent)) + (setq depth (1+ depth))) + depth)) + ((stringp key) + (+ 1000 (length key))) + (t -2)))) + +(defun dir-locals--sort-variables (variables) + "Sorts VARIABLES so that applying them in order has the right effect. +The variables are compared by dir-locals--get-sort-score. +Directory entries are then recursively sorted using the same +criteria." + (setq variables (sort variables + (lambda (a b) + (< (dir-locals--get-sort-score a) + (dir-locals--get-sort-score b))))) + (dolist (n variables) + (when (stringp (car n)) + (setcdr n (dir-locals--sort-variables (cdr n))))) + + variables) + (defun dir-locals-read-from-dir (dir) "Load all variables files in DIR and register a new class and instance. DIR is the absolute name of a directory which must contain at @@ -4054,6 +4100,7 @@ Return the new class name, which is a symbol named DIR." (read (current-buffer)))) (end-of-file nil)))) (setq success latest)) + (setq variables (dir-locals--sort-variables variables)) (dir-locals-set-class-variables class-name variables) (dir-locals-set-directory-class dir class-name success) class-name)) From 202ff53da267f9fa15f438e9c38603bbead6e890 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Mon, 6 May 2019 19:55:17 -0400 Subject: [PATCH 412/567] Handle GNUTLS_E_AGAIN in emacs_gnutls_read (Bug#34341) Don't merge to master, this has already been fixed there by 2019-01-15 "Fix unlikely races with GnuTLS, datagrams". * src/gnutls.c (emacs_gnutls_read): Similar to emacs_gnutls_write, when gnutls_record_recv returns GNUTLS_E_AGAIN set errno to EGAIN. --- src/gnutls.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/gnutls.c b/src/gnutls.c index 3c16b6c9c31f..b724c3592d00 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -753,8 +753,15 @@ emacs_gnutls_read (struct Lisp_Process *proc, char *buf, ptrdiff_t nbyte) /* The peer closed the connection. */ return 0; else if (emacs_gnutls_handle_error (state, rtnval)) - /* non-fatal error */ - return -1; + { + /* If we get GNUTLS_E_AGAIN, then set errno appropriately so that + wait_reading_process_output retries the correct way instead of + erroring out. */ + if (rtnval == GNUTLS_E_AGAIN) + errno = EAGAIN; + /* non-fatal error */ + return -1; + } else { /* a fatal error occurred */ return 0; From cf5457764c1288ee34e01d82deb596950fc9f885 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 13 May 2019 12:43:13 -0700 Subject: [PATCH 413/567] Backport: fix broken build on m68k The GCC + valgrind fix caused the m68k build to fail (Bug#35711). Simplify string allocation a bit to make similar problems less likely in the future. * src/alloc.c (sdata, SDATA_NBYTES, SDATA_DATA) [GC_CHECK_STRING_BYTES]: Use the same implementation as with !GC_CHECK_STRING_BYTES, as the special case is no longer needed. (SDATA_ALIGN): New constant. (SDATA_SIZE): Remove this macro, replacing with ... (sdata_size): ... this new function. All uses changed. Properly account for sizes and alignments even in the m68k case, and even if GC_CHECK_STRING_BYTES is not defined. --- src/alloc.c | 77 +++++++++++++++++------------------------------------ 1 file changed, 25 insertions(+), 52 deletions(-) diff --git a/src/alloc.c b/src/alloc.c index 6fd78188a0cd..6aeac140ca07 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -1607,9 +1607,7 @@ mark_interval (INTERVAL i, void *dummy) #define LARGE_STRING_BYTES 1024 -/* The SDATA typedef is a struct or union describing string memory - sub-allocated from an sblock. This is where the contents of Lisp - strings are stored. */ +/* The layout of a nonnull string. */ struct sdata { @@ -1628,13 +1626,8 @@ struct sdata unsigned char data[FLEXIBLE_ARRAY_MEMBER]; }; -#ifdef GC_CHECK_STRING_BYTES - -typedef struct sdata sdata; -#define SDATA_NBYTES(S) (S)->nbytes -#define SDATA_DATA(S) (S)->data - -#else +/* A union describing string memory sub-allocated from an sblock. + This is where the contents of Lisp strings are stored. */ typedef union { @@ -1662,8 +1655,6 @@ typedef union #define SDATA_NBYTES(S) (S)->n.nbytes #define SDATA_DATA(S) ((struct sdata *) (S))->data -#endif /* not GC_CHECK_STRING_BYTES */ - enum { SDATA_DATA_OFFSET = offsetof (struct sdata, data) }; /* Structure describing a block of memory which is sub-allocated to @@ -1754,31 +1745,20 @@ static char const string_overrun_cookie[GC_STRING_OVERRUN_COOKIE_SIZE] = #define GC_STRING_OVERRUN_COOKIE_SIZE 0 #endif -/* Value is the size of an sdata structure large enough to hold NBYTES - bytes of string data. The value returned includes a terminating - NUL byte, the size of the sdata structure, and padding. */ - -#ifdef GC_CHECK_STRING_BYTES - -#define SDATA_SIZE(NBYTES) FLEXSIZEOF (struct sdata, data, (NBYTES) + 1) - -#else /* not GC_CHECK_STRING_BYTES */ - -/* The 'max' reserves space for the nbytes union member even when NBYTES + 1 is - less than the size of that member. The 'max' is not needed when - SDATA_DATA_OFFSET is a multiple of FLEXALIGNOF (struct sdata), - because then the alignment code reserves enough space. */ - -#define SDATA_SIZE(NBYTES) \ - ((SDATA_DATA_OFFSET \ - + (SDATA_DATA_OFFSET % FLEXALIGNOF (struct sdata) == 0 \ - ? NBYTES \ - : max (NBYTES, FLEXALIGNOF (struct sdata) - 1)) \ - + 1 \ - + FLEXALIGNOF (struct sdata) - 1) \ - & ~(FLEXALIGNOF (struct sdata) - 1)) +/* Return the size of an sdata structure large enough to hold N bytes + of string data. This counts the sdata structure, the N bytes, a + terminating NUL byte, and alignment padding. */ -#endif /* not GC_CHECK_STRING_BYTES */ +static ptrdiff_t +sdata_size (ptrdiff_t n) +{ + /* Reserve space for the nbytes union member even when N + 1 is less + than the size of that member. */ + ptrdiff_t unaligned_size = max (SDATA_DATA_OFFSET + n + 1, + sizeof (sdata)); + int sdata_align = max (FLEXALIGNOF (struct sdata), alignof (sdata)); + return (unaligned_size + sdata_align - 1) & ~(sdata_align - 1); +} /* Extra bytes to allocate for each string. */ @@ -1831,21 +1811,14 @@ string_bytes (struct Lisp_String *s) static void check_sblock (struct sblock *b) { - sdata *from, *end, *from_end; - - end = b->next_free; + sdata *end = b->next_free; - for (from = b->data; from < end; from = from_end) + for (sdata *from = b->data; from < end; ) { - /* Compute the next FROM here because copying below may - overwrite data we need to compute it. */ - ptrdiff_t nbytes; - - /* Check that the string size recorded in the string is the - same as the one recorded in the sdata structure. */ - nbytes = SDATA_SIZE (from->string ? string_bytes (from->string) - : SDATA_NBYTES (from)); - from_end = (sdata *) ((char *) from + nbytes + GC_STRING_EXTRA); + ptrdiff_t nbytes = sdata_size (from->string + ? string_bytes (from->string) + : SDATA_NBYTES (from)); + from = (sdata *) ((char *) from + nbytes + GC_STRING_EXTRA); } } @@ -1977,14 +1950,14 @@ allocate_string_data (struct Lisp_String *s, { sdata *data, *old_data; struct sblock *b; - ptrdiff_t needed, old_nbytes; + ptrdiff_t old_nbytes; if (STRING_BYTES_MAX < nbytes) string_overflow (); /* Determine the number of bytes needed to store NBYTES bytes of string data. */ - needed = SDATA_SIZE (nbytes); + ptrdiff_t needed = sdata_size (nbytes); if (s->u.s.data) { old_data = SDATA_OF_STRING (s); @@ -2234,7 +2207,7 @@ compact_small_strings (void) nbytes = s ? STRING_BYTES (s) : SDATA_NBYTES (from); eassert (nbytes <= LARGE_STRING_BYTES); - nbytes = SDATA_SIZE (nbytes); + nbytes = sdata_size (nbytes); sdata *from_end = (sdata *) ((char *) from + nbytes + GC_STRING_EXTRA); From 2bdc419f51630eb433deb139da67e419000c7694 Mon Sep 17 00:00:00 2001 From: Konstantin Kharlamov Date: Thu, 16 May 2019 00:25:53 +0300 Subject: [PATCH 414/567] Do potentially destructive operations in prepare-commit-msg * build-aux/git-hooks/prepare-commit-msg: If someone occasionally puts Signed-off line, it will likely get there through -s option of git. Exploit this fact to abort before a user got a chance to type commit message. (Bug#35368) --- autogen.sh | 2 +- build-aux/git-hooks/prepare-commit-msg | 45 ++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100755 build-aux/git-hooks/prepare-commit-msg diff --git a/autogen.sh b/autogen.sh index 7972f01b3872..bf8d61f0c65d 100755 --- a/autogen.sh +++ b/autogen.sh @@ -323,7 +323,7 @@ git_config diff.texinfo.xfuncname \ tailored_hooks= sample_hooks= -for hook in commit-msg pre-commit; do +for hook in commit-msg pre-commit prepare-commit-msg; do cmp -- build-aux/git-hooks/$hook "$hooks/$hook" >/dev/null 2>&1 || tailored_hooks="$tailored_hooks $hook" done diff --git a/build-aux/git-hooks/prepare-commit-msg b/build-aux/git-hooks/prepare-commit-msg new file mode 100755 index 000000000000..3562a8022345 --- /dev/null +++ b/build-aux/git-hooks/prepare-commit-msg @@ -0,0 +1,45 @@ +#!/bin/sh +# Check the format of GNU Emacs change log entries. + +# Copyright 2019 Free Software Foundation, Inc. + +# This file is part of GNU Emacs. + +# GNU Emacs is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# GNU Emacs is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with GNU Emacs. If not, see . + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +# Prefer gawk if available, as it handles NUL bytes properly. +if type gawk >/dev/null 2>&1; then + awk=gawk +else + awk=awk +fi + +exec $awk ' + # Catch the case when someone ran git-commit with -s option, + # which automatically adds Signed-off-by. + /^Signed-off-by: / { + print "'\''Signed-off-by:'\'' in commit message" + status = 1 + } + END { + if (status != 0) { + print "Commit aborted; please see the file 'CONTRIBUTE'" + } + exit status + } +' <"$COMMIT_MSG_FILE" From 5d24af87c15d9baa9db96fe3c3200d5585d58c4e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 17 May 2019 09:58:15 +0300 Subject: [PATCH 415/567] Remove from docs references to obsolete MULE variables * src/search.c (search_buffer): Remove obsolete text from a comment. * src/fns.c (Fstring_make_unibyte): Remove obsolete text from a doc string. --- src/fns.c | 6 ++---- src/search.c | 7 +------ 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/fns.c b/src/fns.c index d6299755201d..8db2a86a7252 100644 --- a/src/fns.c +++ b/src/fns.c @@ -1042,10 +1042,8 @@ string the same way whether it is unibyte or multibyte.) */) DEFUN ("string-make-unibyte", Fstring_make_unibyte, Sstring_make_unibyte, 1, 1, 0, doc: /* Return the unibyte equivalent of STRING. -Multibyte character codes are converted to unibyte according to -`nonascii-translation-table' or, if that is nil, `nonascii-insert-offset'. -If the lookup in the translation table fails, this function takes just -the low 8 bits of each character. */) +Multibyte character codes above 255 are converted to unibyte +by taking just the low 8 bits of each character's code. */) (Lisp_Object string) { CHECK_STRING (string); diff --git a/src/search.c b/src/search.c index 9bde884bc53b..db7fecd9bab2 100644 --- a/src/search.c +++ b/src/search.c @@ -1341,12 +1341,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, } else { - /* Converting multibyte to single-byte. - - ??? Perhaps this conversion should be done in a special way - by subtracting nonascii-insert-offset from each non-ASCII char, - so that only the multibyte chars which really correspond to - the chosen single-byte character set can possibly match. */ + /* Converting multibyte to single-byte. */ raw_pattern_size = SCHARS (string); raw_pattern_size_byte = SCHARS (string); raw_pattern = SAFE_ALLOCA (raw_pattern_size + 1); From 7ce4b35ac427506bb8b43ab14a134bd2e707c9d6 Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Mon, 13 Nov 2017 21:40:17 -0800 Subject: [PATCH 416/567] Backport: Fix name of gnus-summary-sort-by-mark(s) * lisp/gnus/gnus-sum.el (gnus-summary-sort-by-marks): Needs the "s", according to docs and keymap both. (bug#35765) (cherry picked from commit 13248f7444630508cfc3b78a07e8d96613af11c8) --- lisp/gnus/gnus-sum.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 9c95934ee026..99b970e323ed 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -11963,7 +11963,7 @@ Argument REVERSE means reverse order." (interactive "P") (gnus-summary-sort 'chars reverse)) -(defun gnus-summary-sort-by-mark (&optional reverse) +(defun gnus-summary-sort-by-marks (&optional reverse) "Sort the summary buffer by article marks. Argument REVERSE means reverse order." (interactive "P") From 6cfd68d4d7c3e577ba1ed55b304229fc6e78718b Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Sun, 19 May 2019 13:52:26 +0100 Subject: [PATCH 417/567] Fix Hideshow key binding typo in Emacs manual * doc/emacs/programs.texi (Hideshow): Add missing function and key index entries. Fix hs-toggle-hiding binding typo. (bug#35798) --- doc/emacs/programs.texi | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index 9d712eb66cc2..df14fd8a05a1 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -1332,8 +1332,11 @@ count as blocks. @findex hs-show-block @findex hs-show-region @findex hs-hide-level +@findex hs-toggle-hiding +@findex hs-mouse-toggle-hiding @kindex C-c @@ C-h @kindex C-c @@ C-s +@kindex C-c @@ C-c @kindex C-c @@ C-M-h @kindex C-c @@ C-M-s @kindex C-c @@ C-r @@ -1346,7 +1349,7 @@ Hide the current block (@code{hs-hide-block}). @item C-c @@ C-s Show the current block (@code{hs-show-block}). @item C-c @@ C-c -@itemx C-x @@ C-e +@itemx C-c @@ C-e Either hide or show the current block (@code{hs-toggle-hiding}). @item S-mouse-2 Toggle hiding for the block you click on (@code{hs-mouse-toggle-hiding}). From 1228a90c69b51c6e9084385552ff991e6915b175 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Mon, 20 May 2019 00:37:13 +0100 Subject: [PATCH 418/567] ; Fix mm-destroy-parts docstring typo * lisp/gnus/mm-decode.el (mm-destroy-parts): Fix typo in docstring copy-pasted from mm-remove-parts. --- lisp/gnus/mm-decode.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index 21552abae734..33cb797bf697 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -1117,7 +1117,7 @@ external if displayed external." (mm-remove-part handle))))))) (defun mm-destroy-parts (handles) - "Remove the displayed MIME parts represented by HANDLES." + "Destroy the displayed MIME parts represented by HANDLES." (if (and (listp handles) (bufferp (car handles))) (mm-destroy-part handles) From eadf044e0663703af61967c1ff890043f46c9a15 Mon Sep 17 00:00:00 2001 From: Mauro Aranda Date: Fri, 17 May 2019 10:00:01 -0300 Subject: [PATCH 419/567] Remove repeated function call in picture.el * lisp/textmodes/picture.el (picture-mode-map): Remove repeated define-key call. (Bug#35772) --- lisp/textmodes/picture.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/textmodes/picture.el b/lisp/textmodes/picture.el index f0e30135f160..aed531e7694d 100644 --- a/lisp/textmodes/picture.el +++ b/lisp/textmodes/picture.el @@ -622,7 +622,6 @@ Leaves the region surrounding the rectangle." (defvar picture-mode-map (let ((map (make-keymap))) - (define-key map [remap self-insert-command] 'picture-self-insert) (define-key map [remap self-insert-command] 'picture-self-insert) (define-key map [remap completion-separator-self-insert-command] 'picture-self-insert) From 015b12ebb84995386dd84ef80092f01fba882168 Mon Sep 17 00:00:00 2001 From: Mauro Aranda Date: Sun, 19 May 2019 11:36:26 -0300 Subject: [PATCH 420/567] Fix typo in ELisp manual * doc/lispref/variables.texi (Directory Local Variables): Fix typo in dir-locals-set-class-variables description. (Bug#35799) --- doc/lispref/variables.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index f1e0e37e6d6d..153a80a44434 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -2009,7 +2009,7 @@ all files in those directories. The list in @var{variables} can be of one of the two forms: @code{(@var{major-mode} . @var{alist})} or @code{(@var{directory} . @var{list})}. With the first form, if the file's buffer turns on a mode that is derived from @var{major-mode}, -then the all the variables in the associated @var{alist} are applied; +then all the variables in the associated @var{alist} are applied; @var{alist} should be of the form @code{(@var{name} . @var{value})}. A special value @code{nil} for @var{major-mode} means the settings are applicable to any mode. In @var{alist}, you can use a special From 122ba1689046c53535b4d6c5142cfd81752808d0 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sun, 19 May 2019 13:05:55 -0400 Subject: [PATCH 421/567] Don't segfault on force-window-update of deleted window * src/window.c (Fforce_window_update): Do nothing for deleted windows (Bug#35784). --- src/window.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/window.c b/src/window.c index dfac3b5b879f..4d5ddeea14bc 100644 --- a/src/window.c +++ b/src/window.c @@ -3637,7 +3637,7 @@ displaying that buffer. */) return Qt; } - if (WINDOWP (object)) + if (WINDOW_LIVE_P (object)) { struct window *w = XWINDOW (object); mark_window_display_accurate (object, false); From 400907b3c1d94359dda38ad5f416829567d6e478 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Wed, 15 May 2019 20:29:38 -0400 Subject: [PATCH 422/567] Add option to disable help completion autoloading (Bug#28607) * lisp/help-fns.el (help-enable-completion-auto-load): New option. (help--symbol-completion-table): Consult it. * doc/emacs/building.texi (Lisp Libraries): Document it. * etc/NEWS: Announce it. * doc/lispref/loading.texi (Autoload by Prefix): New section. (Autoload): Reference it. --- doc/emacs/building.texi | 6 ++++++ doc/lispref/loading.texi | 23 ++++++++++++++++++++++- etc/NEWS | 6 ++++++ lisp/help-fns.el | 18 +++++++++++++++--- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 31acfc827bf0..246a04c28246 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -1499,6 +1499,12 @@ library lets Emacs properly set up the hyperlinks in the @file{*Help*} buffer). To disable this feature, change the variable @code{help-enable-auto-load} to @code{nil}. +@vindex help-enable-completion-auto-load +Automatic loading also occurs when completing names for +@code{describe-variable} and @code{describe-function}, based on the +prefix being completed. To disable this feature, change the variable +@code{help-enable-completion-auto-load} to @code{nil}. + @vindex load-dangerous-libraries @cindex Lisp files byte-compiled by XEmacs By default, Emacs refuses to load compiled Lisp files which were diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index f0cc689d1f6e..fa6b301bb0f9 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -466,9 +466,11 @@ first call to the function automatically loads the proper library, in order to install the real definition and other associated code, then runs the real definition as if it had been loaded all along. Autoloading can also be triggered by looking up the documentation of -the function or macro (@pxref{Documentation Basics}). +the function or macro (@pxref{Documentation Basics}), and completion +of variable and function names (@pxref{Autoload by Prefix} below). @menu +* Autoload by Prefix:: Autoload by Prefix. * When to Autoload:: When to Use Autoload. @end menu @@ -703,6 +705,25 @@ symbol's new function value. If the value of the optional argument function, only a macro. @end defun +@node Autoload by Prefix +@subsection Autoload by Prefix +@cindex autoload by prefix + +@vindex definition-prefixes +@findex register-definition-prefixes +@vindex autoload-compute-prefixes +During completion for the commands @code{describe-variable} and +@code{describe-function}, Emacs will try to load files which may +contain definitions matching the prefix being completed. The variable +@code{definition-prefixes} holds a hashtable which maps a prefix to +the corresponding list of files to load for it. Entries to this +mapping are added by calls to @code{register-definition-prefixes} +which are generated by @code{update-file-autoloads} +(@pxref{Autoload}). Files which don't contain any definitions worth +loading (test files, for examples), should set +@code{autoload-compute-prefixes} to @code{nil} as a file-local +variable. + @node When to Autoload @subsection When to Use Autoload @cindex autoload, when to use diff --git a/etc/NEWS b/etc/NEWS index 573c8236b23c..1b668628413d 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -24,6 +24,12 @@ with a prefix argument or by typing 'C-u C-h C-n'. * Changes in Emacs 26.3 ++++ +** New option 'help-enable-completion-auto-load'. +This allows disabling the new feature introduced in Emacs 26.1 which +loads files during completion of 'C-h f' and 'C-h v' according to +'definition-prefixes'. + * Editing Changes in Emacs 26.3 diff --git a/lisp/help-fns.el b/lisp/help-fns.el index a7812e3b4b5b..8684a853af29 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -89,11 +89,23 @@ The functions will receive the function name as argument.") (unless (help--loaded-p file) (load file 'noerror 'nomessage))))) +(defcustom help-enable-completion-auto-load t + "Whether completion for Help commands can perform autoloading. +If non-nil, whenever invoking completion for `describe-function' +or `describe-variable' load files that might contain definitions +with the current prefix. The files are chosen according to +`definition-prefixes'." + :type 'boolean + :group 'help + :version "26.3") + (defun help--symbol-completion-table (string pred action) - (let ((prefixes (radix-tree-prefixes (help-definition-prefixes) string))) - (help--load-prefixes prefixes)) + (when help-enable-completion-auto-load + (let ((prefixes (radix-tree-prefixes (help-definition-prefixes) string))) + (help--load-prefixes prefixes))) (let ((prefix-completions - (mapcar #'intern (all-completions string definition-prefixes)))) + (and help-enable-completion-auto-load + (mapcar #'intern (all-completions string definition-prefixes))))) (complete-with-action action obarray string (if pred (lambda (sym) (or (funcall pred sym) From b0da9151d880f7ae60367a4b3d3ef91209bbd06f Mon Sep 17 00:00:00 2001 From: Tom Levy Date: Tue, 21 May 2019 14:25:31 +1200 Subject: [PATCH 423/567] Fix a typo in ELisp manual * doc/lispref/sequences.texi (Sequence Functions): Fix a typo. (Bug#35817) Copyright-paperwork-exempt: yes --- doc/lispref/sequences.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi index 5cf2e89644d1..bf2c9c8a7d6c 100644 --- a/doc/lispref/sequences.texi +++ b/doc/lispref/sequences.texi @@ -601,7 +601,7 @@ returned value is a list. @defun seq-mapn function &rest sequences This function returns the result of applying @var{function} to each element of @var{sequences}. The arity (@pxref{What Is a Function, -sub-arity}) of @var{function} must match the number of sequences. +subr-arity}) of @var{function} must match the number of sequences. Mapping stops at the end of the shortest sequence, and the returned value is a list. From e61349c22412c0eaa7c03e08bfb0467a0a79708a Mon Sep 17 00:00:00 2001 From: Dario Gjorgjevski Date: Fri, 17 May 2019 11:46:54 +0200 Subject: [PATCH 424/567] Fix customization type of recentf-max-saved-items Change the customization type of recentf-max-saved-items to include nil, as it is an allowed value (Bug#35771). * lisp/recentf.el (recentf-max-saved-items): Change the customization type in the defcustom. --- lisp/recentf.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/recentf.el b/lisp/recentf.el index 93f9a57094c9..4390626ef205 100644 --- a/lisp/recentf.el +++ b/lisp/recentf.el @@ -67,7 +67,8 @@ You should define the options of your own filters in this group." A nil value means to save the whole list. See the command `recentf-save-list'." :group 'recentf - :type 'integer) + :type '(choice (integer :tag "Entries" :value 1) + (const :tag "No Limit" nil))) (defcustom recentf-save-file (locate-user-emacs-file "recentf" ".recentf") "File to save the recent list into." From 9bee76227c04a5bedbda77c7ada2e5b2aa95e2c9 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 23 May 2019 17:36:06 +0300 Subject: [PATCH 425/567] ; * src/coding.c: Improve commentary. (Bug#34765) --- src/coding.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/coding.c b/src/coding.c index 249abd9dd4e1..3a463b9905df 100644 --- a/src/coding.c +++ b/src/coding.c @@ -7782,15 +7782,22 @@ encode_coding (struct coding_system *coding) SAFE_FREE (); } - -/* Name (or base name) of work buffer for code conversion. */ +/* Code-conversion operations use internal buffers. There's a single + reusable buffer, which is created the first time it is needed, and + then never killed. When this reusable buffer is being used, the + reused_workbuf_in_use flag is set. If we need another conversion + buffer while the reusable one is in use (e.g., if code-conversion + is reentered when another code-conversion is in progress), we + create temporary buffers using the name of the reusable buffer as + the base name, see code_conversion_save below. These temporary + buffers are killed when the code-conversion operations that use + them return, see code_conversion_restore below. */ + +/* A string that serves as name of the reusable work buffer, and as base + name of temporary work buffers used for code-conversion operations. */ static Lisp_Object Vcode_conversion_workbuf_name; -/* A working buffer used by the top level conversion. Once it is - created, it is never destroyed. It has the name - Vcode_conversion_workbuf_name. The other working buffers are - destroyed after the use is finished, and their names are modified - versions of Vcode_conversion_workbuf_name. */ +/* The reusable working buffer, created once and never killed. */ static Lisp_Object Vcode_conversion_reused_workbuf; /* True iff Vcode_conversion_reused_workbuf is already in use. */ From 7681a57b88a91bf9eedc890b974df9728d5eb50d Mon Sep 17 00:00:00 2001 From: Mauro Aranda Date: Sat, 18 May 2019 17:35:04 -0300 Subject: [PATCH 426/567] Remove redundants "See" before @xref or @pxref (Bug#35793) * doc/lispref/control.texi (Control Structures): * doc/lispref/modes.texi (Search-based Fontification): * doc/misc/cc-mode.texi (Filling and Line Breaking Commands) (Auto-newline Insertion, Other Special Indentations): * doc/misc/dbus.texi (Errors and Events): * doc/misc/dired-x.texi (Find File At Point): * doc/misc/eudc.texi (Display of Query Results, Inline Query Expansion): * doc/misc/gnus-faq.texi (FAQ 3-11): * doc/misc/gnus.texi (Group Parameters, Posting Styles) (Spam Package Introduction): * doc/misc/org.texi (LaTeX fragments, Previewing LaTeX fragments): * doc/misc/reftex.texi (Commands): Remove redundant "See" before cross references. * doc/lispref/functions.texi (Function Safety): Redundant "see" is in ignored text, but remove it anyway. * doc/lispref/positions.texi (Skipping Characters): Remove redundant "See" before cross references. Change @xref to @pxref, which is more suitable when at the end of a sentence. Most of the redundants "See" found by Noam Postavsky. --- doc/lispref/control.texi | 2 +- doc/lispref/functions.texi | 2 +- doc/lispref/modes.texi | 2 +- doc/lispref/positions.texi | 4 ++-- doc/misc/cc-mode.texi | 6 +++--- doc/misc/dbus.texi | 4 ++-- doc/misc/dired-x.texi | 4 ++-- doc/misc/eudc.texi | 4 ++-- doc/misc/gnus-faq.texi | 2 +- doc/misc/gnus.texi | 6 +++--- doc/misc/org.texi | 4 ++-- doc/misc/reftex.texi | 2 +- 12 files changed, 21 insertions(+), 21 deletions(-) diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 3ffe8f7fb9d5..9e27e1a751a8 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -1452,7 +1452,7 @@ Run @var{body} with @var{var} bound to each value that @end defmac The Common Lisp loop facility also contains features for working with -iterators. See @xref{Loop Facility,,,cl,Common Lisp Extensions}. +iterators. @xref{Loop Facility,,,cl,Common Lisp Extensions}. The following piece of code demonstrates some important principles of working with iterators. diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index f641fe7024a4..0077fad83758 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -2369,7 +2369,7 @@ safe. A form that creates temporary bindings (@code{condition-case}, @code{dolist}, @code{dotimes}, @code{lambda}, @code{let}, or @code{let*}), if all args are safe and the symbols to be bound are not -explicitly risky (see @pxref{File Local Variables}). +explicitly risky (@pxref{File Local Variables}). @item An assignment using @code{add-to-list}, @code{setq}, @code{push}, or @code{pop}, if all args are safe and the symbols to be assigned are diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index 0ff13d72e2fd..e8a8eb35e97f 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -2977,7 +2977,7 @@ Its value should have one of the forms described in this table. @strong{Warning:} Do not design an element of @code{font-lock-keywords} to match text which spans lines; this does not work reliably. -For details, see @xref{Multiline Font Lock}. +For details, @pxref{Multiline Font Lock}. You can use @var{case-fold} in @code{font-lock-defaults} to specify the value of @code{font-lock-keywords-case-fold-search} which says diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index 527a3ab420c7..770779346739 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi @@ -840,8 +840,8 @@ The argument @var{character-set} is a string, like the inside of a terminate it, and @samp{\} quotes @samp{^}, @samp{-} or @samp{\}. Thus, @code{"a-zA-Z"} skips over all letters, stopping before the first nonletter, and @code{"^a-zA-Z"} skips nonletters stopping before -the first letter. See @xref{Regular Expressions}. Character classes -can also be used, e.g., @code{"[:alnum:]"}. See @pxref{Char Classes}. +the first letter (@pxref{Regular Expressions}). Character classes +can also be used, e.g., @code{"[:alnum:]"} (@pxref{Char Classes}). If @var{limit} is supplied (it must be a number or a marker), it specifies the maximum position in the buffer that point can be skipped diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi index 0102a4ace87e..bdeff22693f8 100644 --- a/doc/misc/cc-mode.texi +++ b/doc/misc/cc-mode.texi @@ -1060,7 +1060,7 @@ there's a piece of normal text without having to think much about it. and so on. You can configure the exact way comments get filled and broken, and -where Emacs does auto-filling (see @pxref{Custom Filling and +where Emacs does auto-filling (@pxref{Custom Filling and Breaking}). Typically, the style system (@pxref{Styles}) will have set this up for you, so you probably won't have to bother. @@ -1478,7 +1478,7 @@ normal, with no @kbd{C-u} prefix). @end itemize You can configure the precise circumstances in which newlines get -inserted (see @pxref{Custom Auto-newlines}). Typically, the style +inserted (@pxref{Custom Auto-newlines}). Typically, the style system (@pxref{Styles}) will have set this up for you, so you probably won't have to bother. @@ -6731,7 +6731,7 @@ custom line-up function associated with it. @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! To configure macros which you invoke without a terminating @samp{;}, -see @xref{Macros with ;}. +@pxref{Macros with ;}. Here are the remaining odds and ends regarding indentation: diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi index c7d499884da6..7c7612f579c5 100644 --- a/doc/misc/dbus.texi +++ b/doc/misc/dbus.texi @@ -1928,7 +1928,7 @@ This executes @var{forms} exactly like a @code{progn}, except that errors can be made visible when @code{dbus-debug} is set to @code{t}. @end defspec -Incoming D-Bus messages are handled as Emacs events, see @pxref{Misc +Incoming D-Bus messages are handled as Emacs events, @pxref{Misc Events, , , elisp}. They are retrieved only, when Emacs runs in interactive mode. The generated event has this form: @@ -1952,7 +1952,7 @@ of the D-Bus object emitting the message. @var{interface} and @var{member} denote the message which has been sent. @var{handler} is the callback function which has been registered for -this message (see @pxref{Signals}). When a @code{dbus-event} event +this message (@pxref{Signals}). When a @code{dbus-event} event arrives, @var{handler} is called with @var{args} as arguments. In order to inspect the @code{dbus-event} data, you could extend the diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi index c2630e6be669..b8e1ad459d1a 100644 --- a/doc/misc/dired-x.texi +++ b/doc/misc/dired-x.texi @@ -968,7 +968,7 @@ should not bind @code{dired-x-find-file-other-window} over @code{find-file-other-window}. If you change this variable after @file{dired-x.el} is loaded then do @kbd{M-x dired-x-bind-find-file}. The default value of this variable is @code{t}; by default, the binding is not -done. See @xref{Optional Installation File At Point}. +done. @xref{Optional Installation File At Point}. @item dired-x-bind-find-file @findex dired-x-bind-find-file @@ -976,7 +976,7 @@ A function, which can be called interactively or in your @file{~/.emacs} file, that uses the value of @code{dired-x-hands-off-my-keys} to determine if @code{dired-x-find-file} should be bound over @code{find-file} and @code{dired-x-find-file-other-window} bound over -@code{find-file-other-window}. See @xref{Optional Installation File At Point}. +@code{find-file-other-window}. @xref{Optional Installation File At Point}. @end table @node Miscellaneous Commands diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi index 117b62e9ac8b..568f94ba7c1a 100644 --- a/doc/misc/eudc.texi +++ b/doc/misc/eudc.texi @@ -606,7 +606,7 @@ function that will be passed the corresponding attribute values for display. @end defvar -This variable has protocol-local definitions (see @pxref{Server/Protocol +This variable has protocol-local definitions (@pxref{Server/Protocol Locals}). For instance, it is defined as follows for LDAP: @lisp @@ -714,7 +714,7 @@ name and the remaining words are all considered as surname constituents. @var{format}s are in fact not limited to EUDC attribute names, you can use server or protocol specific names in them. It may be safer if you do so, to set the variable @code{eudc-inline-query-format} in a protocol -or server local fashion (see @pxref{Server/Protocol Locals}). +or server local fashion (@pxref{Server/Protocol Locals}). For instance you could use the following to match up to three words against the @code{cn} attribute of LDAP servers: diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi index d4be7b1f0cea..bc0357144dc5 100644 --- a/doc/misc/gnus-faq.texi +++ b/doc/misc/gnus-faq.texi @@ -707,7 +707,7 @@ retrieves via POP3? Yes, if the POP3 server supports the UIDL control (maybe almost servers do it nowadays). To do that, add a @code{:leave VALUE} pair to each -POP3 mail source. See @pxref{Mail Source Specifiers} for VALUE. +POP3 mail source. @xref{Mail Source Specifiers}, for details on VALUE. @node FAQ 4 - Reading messages @subsection Reading messages diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index 4ee80eacb2e1..0d4cf9708488 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -3096,7 +3096,7 @@ You can also use regexp expansions in the rules: (sieve header :regex "list-id" "") @end example -See @pxref{Sieve Commands} for commands and variables that might be of +@xref{Sieve Commands}, for commands and variables that might be of interest in relation to the sieve parameter. The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve, @@ -12837,7 +12837,7 @@ In the case of a string value, if the @code{match} is a regular expression, or if it takes the form @code{(header @var{match} @var{regexp})}, a @samp{gnus-match-substitute-replacement} is proceed on the value to replace the positional parameters @samp{\@var{n}} by -the corresponding parenthetical matches (see @xref{Replacing Match,, +the corresponding parenthetical matches (@pxref{Replacing Match,, Replacing the Text that Matched, elisp, The Emacs Lisp Reference Manual}.) @@ -24197,7 +24197,7 @@ You must read this section to understand how the Spam package works. Do not skip, speed-read, or glance through this section. Make sure you read the section on the @code{spam.el} sequence of -events. See @xref{Extending the Spam package}. +events. @xref{Extending the Spam package}. @cindex spam-initialize @vindex spam-use-stat diff --git a/doc/misc/org.texi b/doc/misc/org.texi index 2be2707d95e8..b3c0d52db1b3 100644 --- a/doc/misc/org.texi +++ b/doc/misc/org.texi @@ -10292,7 +10292,7 @@ Org mode can contain @LaTeX{} math fragments, and it supports ways to process these for several export back-ends. When exporting to @LaTeX{}, the code is left as it is. When exporting to HTML, Org can use either @uref{http://www.mathjax.org, MathJax} (@pxref{Math formatting in HTML -export}) or transcode the math into images (see @pxref{Previewing @LaTeX{} +export}) or transcode the math into images (@pxref{Previewing @LaTeX{} fragments}). @LaTeX{} fragments don't need any special marking at all. The following @@ -10358,7 +10358,7 @@ or @file{convert} installed@footnote{These are respectively available at and from the @file{imagemagick} suite. Choose the converter by setting the variable @code{org-preview-latex-default-process} accordingly.}, @LaTeX{} fragments can be processed to produce images of the typeset expressions to be -used for inclusion while exporting to HTML (see @pxref{@LaTeX{} fragments}), +used for inclusion while exporting to HTML (@pxref{@LaTeX{} fragments}), or for inline previewing within Org mode. @vindex org-format-latex-options diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi index baa8de4b4dc4..8221abdbbaad 100644 --- a/doc/misc/reftex.texi +++ b/doc/misc/reftex.texi @@ -3697,7 +3697,7 @@ MicroEmacs at the time). Here is a summary of @RefTeX{}'s commands which can be executed from @LaTeX{} files. Command which are executed from the special buffers are not described here. All commands are available from the @code{Ref} -menu. See @xref{Key Bindings}. +menu. @xref{Key Bindings}. @deffn Command reftex-toc Show the table of contents for the current document. When called with From 8f18d121210aa27dc05555140ab21a8489f0de50 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 25 May 2019 22:10:00 +0300 Subject: [PATCH 427/567] Improve documentation of decoding into a unibyte buffer * doc/lispref/nonascii.texi (Explicit Encoding): Document what happens when DESTINATION of decoding is a unibyte buffer. * src/coding.c (Fdecode_coding_region) (Fdecode_coding_string): Document what happens if DESTINATION is a unibyte buffer. --- doc/lispref/nonascii.texi | 9 +++++++-- src/coding.c | 7 +++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index df4f2932c6e1..4e6bf12db92f 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi @@ -1912,7 +1912,10 @@ the command returns the decoded text as a multibyte string without inserting it. If decoded text is inserted in some buffer, this command returns the -length of the decoded text. +length of the decoded text. If that buffer is a unibyte buffer +(@pxref{Selecting a Representations}), the internal representation of +the decoded text (@pxref{Text Representations}) is inserted into the +buffer as individual bytes. This command puts a @code{charset} text property on the decoded text. The value of the property states the character set used to decode the @@ -1931,7 +1934,9 @@ contains 8-bit bytes in their multibyte form). If optional argument @var{buffer} specifies a buffer, the decoded text is inserted in that buffer after point (point does not move). In this -case, the return value is the length of the decoded text. +case, the return value is the length of the decoded text. If that +buffer is a unibyte buffer, the internal representation of the decoded +text is inserted into it as individual bytes. @cindex @code{charset}, text property This function puts a @code{charset} text property on the decoded text. diff --git a/src/coding.c b/src/coding.c index 3a463b9905df..078c1c4e6a7d 100644 --- a/src/coding.c +++ b/src/coding.c @@ -9398,7 +9398,8 @@ START and END are buffer positions. Optional 4th arguments DESTINATION specifies where the decoded text goes. If nil, the region between START and END is replaced by the decoded text. If buffer, the decoded text is inserted in that buffer after point (point -does not move). +does not move). If that buffer is unibyte, it receives the individual +bytes of the internal representation of the decoded text. In those cases, the length of the decoded text is returned. If DESTINATION is t, the decoded text is returned. @@ -9556,7 +9557,9 @@ if the decoding operation is trivial. Optional fourth arg BUFFER non-nil means that the decoded text is inserted in that buffer after point (point does not move). In this -case, the return value is the length of the decoded text. +case, the return value is the length of the decoded text. If that +buffer is unibyte, it receives the individual bytes of the internal +representation of the decoded text. This function sets `last-coding-system-used' to the precise coding system used (which may be different from CODING-SYSTEM if CODING-SYSTEM is From 2168165ec05aa663d41998adb518e778899a8edd Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sun, 26 May 2019 08:46:15 -0400 Subject: [PATCH 428/567] ; * doc/lispref/nonascii.texi (Explicit Encoding): Fix typo. --- doc/lispref/nonascii.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index 4e6bf12db92f..d2eb2cb07289 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi @@ -1913,7 +1913,7 @@ inserting it. If decoded text is inserted in some buffer, this command returns the length of the decoded text. If that buffer is a unibyte buffer -(@pxref{Selecting a Representations}), the internal representation of +(@pxref{Selecting a Representation}), the internal representation of the decoded text (@pxref{Text Representations}) is inserted into the buffer as individual bytes. From c4d4dcf17e407a3c68e150f22b9756ef6c943070 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 21 May 2019 20:33:09 -0400 Subject: [PATCH 429/567] Avoid infloop in read-multiple-choice (Bug#32257) * lisp/emacs-lisp/rmc.el (read-multiple-choice): When `read-char' signals an error "Non-character input-event", call `read-event' to take the non-character event out of the queue. Don't merge to master, we just use `read-event' directly there, rather than this solution which relies a particular error message. --- lisp/emacs-lisp/rmc.el | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/rmc.el b/lisp/emacs-lisp/rmc.el index 6d1adae97490..5411f2ba77b2 100644 --- a/lisp/emacs-lisp/rmc.el +++ b/lisp/emacs-lisp/rmc.el @@ -116,10 +116,15 @@ Usage example: (cons (capitalize (cadr elem)) (car elem))) choices))) - (condition-case nil + (condition-case err (let ((cursor-in-echo-area t)) (read-char)) - (error nil)))) + (error (when (equal (cadr err) "Non-character input-event") + ;; Use up the non-character input-event. + ;; Otherwise we'll just keep reading it + ;; again and again (Bug#32257). + (read-event)) + nil)))) (setq answer (lookup-key query-replace-map (vector tchar) t)) (setq tchar (cond From 1b2f83bb7984269b92eb0afb323e3e74baf87068 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Sun, 26 May 2019 12:04:56 +0200 Subject: [PATCH 430/567] Fix docstring of bookmark-get-bookmark * lisp/bookmark.el (bookmark-get-bookmark): Document optional argument NOERROR. (bug#20148) --- lisp/bookmark.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/bookmark.el b/lisp/bookmark.el index a2a712348de9..0bc2688537e9 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -333,8 +333,9 @@ one element from `bookmark-alist'." "Return the bookmark record corresponding to BOOKMARK-NAME-OR-RECORD. If BOOKMARK-NAME-OR-RECORD is a string, look for the corresponding bookmark record in `bookmark-alist'; return it if found, otherwise -error. Else if BOOKMARK-NAME-OR-RECORD is already a bookmark record, -just return it." +error. If optional argument NOERROR is non-nil, return nil +instead of signaling an error. Else if BOOKMARK-NAME-OR-RECORD +is already a bookmark record, just return it." (cond ((consp bookmark-name-or-record) bookmark-name-or-record) ((stringp bookmark-name-or-record) From fa9e575c1d2af5102a59b84f691839b35dac7f5c Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 30 May 2019 15:06:39 -0700 Subject: [PATCH 431/567] =?UTF-8?q?Suppress=20GCC=209=20=E2=80=9Cno=20long?= =?UTF-8?q?er=20supported=E2=80=9D=20messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Remove -Wchkp. This suppresses a boatload of warnings of the form “gcc: warning: switch ‘-Wchkp’ is no longer supported”. when using GCC 9. Do not merge to master. --- m4/manywarnings.m4 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4 index 72fdd418607b..c876caa16ae3 100644 --- a/m4/manywarnings.m4 +++ b/m4/manywarnings.m4 @@ -1,4 +1,4 @@ -# manywarnings.m4 serial 13 +# manywarnings.m4 serial 13-emacs dnl Copyright (C) 2008-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -126,7 +126,6 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)], -Wbuiltin-macro-redefined \ -Wcast-align \ -Wchar-subscripts \ - -Wchkp \ -Wclobbered \ -Wcomment \ -Wcomments \ From b2e44b42463bf80286063299dbb73d27a040372e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 30 May 2019 15:06:39 -0700 Subject: [PATCH 432/567] Pacify GCC when compiling unexelf.c on Fedora 30 * src/unexelf.c (unexec): Pacify GCC 9. --- src/unexelf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/unexelf.c b/src/unexelf.c index c63a8d03c221..6d19bf1fb9f9 100644 --- a/src/unexelf.c +++ b/src/unexelf.c @@ -304,6 +304,7 @@ unexec (const char *new_name, const char *old_name) || seg->p_vaddr > old_bss_seg->p_vaddr)) old_bss_seg = seg; } + eassume (old_bss_seg); /* Note that old_bss_addr may be lower than the first bss section address, since the section may need aligning. */ From d93f4bda7ab3a5230d9155a93e2a3759690e3101 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 30 May 2019 15:06:39 -0700 Subject: [PATCH 433/567] Simplify xd_signature to pacify GCC 9 * src/dbusbind.c (xd_signature): Use simpler way to set up the subsignature. This also pacifies GCC 9 on Fedora 30 x86-64. Backport from master. --- src/dbusbind.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/dbusbind.c b/src/dbusbind.c index 6ae9bc7f5386..fcb58f744895 100644 --- a/src/dbusbind.c +++ b/src/dbusbind.c @@ -346,7 +346,6 @@ xd_signature (char *signature, int dtype, int parent_type, Lisp_Object object) int subtype; Lisp_Object elt; char const *subsig; - int subsiglen; char x[DBUS_MAXIMUM_SIGNATURE_LENGTH]; elt = object; @@ -428,10 +427,9 @@ xd_signature (char *signature, int dtype, int parent_type, Lisp_Object object) elt = CDR_SAFE (XD_NEXT_VALUE (elt)); } - subsiglen = snprintf (signature, DBUS_MAXIMUM_SIGNATURE_LENGTH, - "%c%s", dtype, subsig); - if (! (0 <= subsiglen && subsiglen < DBUS_MAXIMUM_SIGNATURE_LENGTH)) - string_overflow (); + signature[0] = dtype; + signature[1] = '\0'; + xd_signature_cat (signature, subsig); break; case DBUS_TYPE_VARIANT: From 7871c3dc9f38a32e1658a3579069a988b0d99623 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 30 May 2019 15:06:39 -0700 Subject: [PATCH 434/567] Pacify librsvg 2.45.1 and later * src/image.c (svg_load_image): Pacify librsvg 2.45.1 and later, and add a FIXME comment about the deprecated librsvg functions. Backport from master. --- src/image.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/image.c b/src/image.c index 50515e1a4223..bda60c03a146 100644 --- a/src/image.c +++ b/src/image.c @@ -9306,6 +9306,17 @@ svg_load_image (struct frame *f, struct image *img, char *contents, if (filename) rsvg_handle_set_base_uri(rsvg_handle, filename); + /* Suppress GCC deprecation warnings starting in librsvg 2.45.1 for + rsvg_handle_write and rsvg_handle_close. FIXME: Use functions + like rsvg_handle_new_from_gfile_sync on newer librsvg versions, + and remove this hack. */ + #if GNUC_PREREQ (4, 6, 0) + #pragma GCC diagnostic push + #endif + #if LIBRSVG_CHECK_VERSION (2, 45, 1) && GNUC_PREREQ (4, 2, 0) + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" + #endif + /* Parse the contents argument and fill in the rsvg_handle. */ rsvg_handle_write (rsvg_handle, (unsigned char *) contents, size, &err); if (err) goto rsvg_error; @@ -9315,6 +9326,10 @@ svg_load_image (struct frame *f, struct image *img, char *contents, rsvg_handle_close (rsvg_handle, &err); if (err) goto rsvg_error; + #if GNUC_PREREQ (4, 6, 0) + #pragma GCC diagnostic pop + #endif + rsvg_handle_get_dimensions (rsvg_handle, &dimension_data); if (! check_image_size (f, dimension_data.width, dimension_data.height)) { From 4b24b0185d910d756e85ecdc30f49c414577050e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 30 May 2019 15:06:39 -0700 Subject: [PATCH 435/567] Pacify GCC 9 -Wredundant-decls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * src/gmalloc.c (_fraghead) [!HYBRID_MALLOC]: Make it static in this case, too. This avoids having both ‘extern struct list _fraghead[];’ and ‘static struct list _fraghead[BLOCKLOG];’, which GCC 9 complains about. --- src/gmalloc.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/gmalloc.c b/src/gmalloc.c index f3b3d77aac96..9284d9bd6064 100644 --- a/src/gmalloc.c +++ b/src/gmalloc.c @@ -182,7 +182,7 @@ struct list }; /* Free list headers for each fragment size. */ -extern struct list _fraghead[]; +static struct list _fraghead[BLOCKLOG]; /* List of blocks allocated with aligned_alloc and friends. */ struct alignlist @@ -339,9 +339,6 @@ size_t _heapindex; /* Limit of valid info table indices. */ size_t _heaplimit; -/* Free lists for each fragment size. */ -struct list _fraghead[BLOCKLOG]; - /* Instrumentation. */ size_t _chunks_used; size_t _bytes_used; @@ -351,10 +348,6 @@ size_t _bytes_free; /* Are you experienced? */ int __malloc_initialized; -#else - -static struct list _fraghead[BLOCKLOG]; - #endif /* HYBRID_MALLOC */ /* Number of extra blocks to get each time we ask for more core. From 5f01af6c8e0f7355f7a99a80ff32369071f65eda Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Mon, 27 May 2019 19:05:56 -0400 Subject: [PATCH 436/567] Use plain symbols for eieio type descriptors (Bug#29220) Since Emacs 26, eieio objects use a class record (with circular references) as the type descriptor of the object record. This causes problems when reading back an object from a string, because the class record is not `eq' to the canonical one (which means that read objects don't satisfy the foo-p predicate). * lisp/emacs-lisp/eieio.el (make-instance): As a (partial) fix, set the record's type descriptor to a plain symbol for the type descriptor when eieio-backward-compatibility is non-nil (the default). * lisp/emacs-lisp/eieio-core.el (eieio--object-class): Call eieio--class-object on the type tag when eieio-backward-compatibility is non-nil. (eieio-object-p): Use eieio--object-class instead of eieio--object-class-tag. * test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el (eieio-test-persist-hash-and-vector) (eieio-test-persist-interior-lists): Make into functions. (eieio-persist-hash-and-vector-backward-compatibility) (eieio-persist-hash-and-vector-no-backward-compatibility) (eieio-test-persist-interior-lists-backward-compatibility) (eieio-test-persist-interior-lists-no-backward-compatibility): New tests which call them, eieio-backward-compatibility let-bound. --- lisp/emacs-lisp/eieio-core.el | 11 +++++--- lisp/emacs-lisp/eieio.el | 3 ++ .../eieio-tests/eieio-test-persist.el | 28 +++++++++++++++---- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el index f879a3999fb2..4d55ed6e1d15 100644 --- a/lisp/emacs-lisp/eieio-core.el +++ b/lisp/emacs-lisp/eieio-core.el @@ -117,9 +117,6 @@ Currently under control of this var: (defsubst eieio--object-class-tag (obj) (aref obj 0)) -(defsubst eieio--object-class (obj) - (eieio--object-class-tag obj)) - ;;; Important macros used internally in eieio. @@ -132,6 +129,12 @@ Currently under control of this var: (or (cl--find-class class) class) class)) +(defsubst eieio--object-class (obj) + (let ((tag (eieio--object-class-tag obj))) + (if eieio-backward-compatibility + (eieio--class-object tag) + tag))) + (defun class-p (x) "Return non-nil if X is a valid class vector. X can also be is a symbol." @@ -163,7 +166,7 @@ Return nil if that option doesn't exist." (defun eieio-object-p (obj) "Return non-nil if OBJ is an EIEIO object." (and (recordp obj) - (eieio--class-p (eieio--object-class-tag obj)))) + (eieio--class-p (eieio--object-class obj)))) (define-obsolete-function-alias 'object-p 'eieio-object-p "25.1") diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el index 38436d1f944c..864ac2616b92 100644 --- a/lisp/emacs-lisp/eieio.el +++ b/lisp/emacs-lisp/eieio.el @@ -710,6 +710,9 @@ calls `initialize-instance' on that object." ;; Call the initialize method on the new object with the slots ;; that were passed down to us. (initialize-instance new-object slots) + (when eieio-backward-compatibility + ;; Use symbol as type descriptor, for backwards compatibility. + (aset new-object 0 class)) ;; Return the created object. new-object)) diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el b/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el index dfaa031844fe..b87914c75e7f 100644 --- a/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el +++ b/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el @@ -277,7 +277,7 @@ persistent class.") :type vector :initarg :random-vector))) -(ert-deftest eieio-test-persist-hash-and-vector () +(defun eieio-test-persist-hash-and-vector () (let* ((jane (make-instance 'person :name "Jane")) (bob (make-instance 'person :name "Bob")) (hans (make-instance 'person :name "Hans")) @@ -297,10 +297,18 @@ persistent class.") (aset (car (slot-value class 'janitors)) 1 hans) (aset (nth 1 (slot-value class 'janitors)) 1 dierdre) (unwind-protect - ;; FIXME: This should not error. - (should-error (persist-test-save-and-compare class)) + (persist-test-save-and-compare class) (delete-file (oref class file))))) +(ert-deftest eieio-persist-hash-and-vector-backward-compatibility () + (let ((eieio-backward-compatibility t)) ; The default. + (eieio-test-persist-hash-and-vector))) + +(ert-deftest eieio-persist-hash-and-vector-no-backward-compatibility () + :expected-result :failed ;; Bug#29220. + (let ((eieio-backward-compatibility nil)) + (eieio-test-persist-hash-and-vector))) + ;; Extra quotation of lists inside other objects (Gnus registry), also ;; bug#29220. @@ -315,7 +323,7 @@ persistent class.") :initarg :htab :type hash-table))) -(ert-deftest eieio-test-persist-interior-lists () +(defun eieio-test-persist-interior-lists () (let* ((thing (make-instance 'eieio-container :vec [nil] @@ -335,8 +343,16 @@ persistent class.") (setf (nth 2 (cadar alst)) john (nth 2 (cadadr alst)) alexie) (unwind-protect - ;; FIXME: Should not error. - (should-error (persist-test-save-and-compare thing)) + (persist-test-save-and-compare thing) (delete-file (slot-value thing 'file))))) +(ert-deftest eieio-test-persist-interior-lists-backward-compatibility () + (let ((eieio-backward-compatibility t)) ; The default. + (eieio-test-persist-interior-lists))) + +(ert-deftest eieio-test-persist-interior-lists-no-backward-compatibility () + :expected-result :failed ;; Bug#29220. + (let ((eieio-backward-compatibility nil)) + (eieio-test-persist-interior-lists))) + ;;; eieio-test-persist.el ends here From 134edc10367a8434167656e631865c85b5f10c42 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Mon, 27 May 2019 20:36:41 -0400 Subject: [PATCH 437/567] Warn about wrong number of args for subrs (Bug#35767) * lisp/emacs-lisp/bytecomp.el (byte-compile-callargs-warn): Don't assume byte-compile-fdefinition will return non-nil. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-warn-wrong-args) (bytecomp-warn-wrong-args-subr): New tests. --- lisp/emacs-lisp/bytecomp.el | 2 +- test/lisp/emacs-lisp/bytecomp-tests.el | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 9ea4179b68d6..72e81a653c70 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -1379,7 +1379,7 @@ when printing the error message." (defun byte-compile-callargs-warn (form) (let* ((def (or (byte-compile-fdefinition (car form) nil) (byte-compile-fdefinition (car form) t))) - (sig (byte-compile--function-signature def)) + (sig (byte-compile--function-signature (or def (car form)))) (ncall (length (cdr form)))) ;; Check many or unevalled from subr-arity. (if (and (cdr-safe sig) diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index bc28c5a6a00d..c399f65b4023 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el @@ -438,6 +438,20 @@ Subtests signal errors if something goes wrong." ;; Should not warn that mt--test2 is not known to be defined. (should-not (re-search-forward "my--test2" nil t)))) +(ert-deftest bytecomp-warn-wrong-args () + (with-current-buffer (get-buffer-create "*Compile-Log*") + (let ((inhibit-read-only t)) (erase-buffer)) + (byte-compile '(remq 1 2 3)) + (ert-info ((buffer-string) :prefix "buffer: ") + (should (re-search-forward "remq.*3.*2"))))) + +(ert-deftest bytecomp-warn-wrong-args-subr () + (with-current-buffer (get-buffer-create "*Compile-Log*") + (let ((inhibit-read-only t)) (erase-buffer)) + (byte-compile '(safe-length 1 2 3)) + (ert-info ((buffer-string) :prefix "buffer: ") + (should (re-search-forward "safe-length.*3.*1"))))) + (ert-deftest test-eager-load-macro-expansion () (test-byte-comp-compile-and-load nil '(progn (defmacro abc (arg) 1) (defun def () (abc 2)))) From b3df3729596332a39404c364798a61bfef2adcc2 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 31 May 2019 00:54:05 -0400 Subject: [PATCH 438/567] * lisp/emacs-lisp/package.el: Obey buffer-file-coding-system (bug#35739) `url-insert-file-contents` saves in buffer-file-coding-system the coding-system used to decode the contents. Preserve this as the contents is moved from buffer to string to buffer, and use it when saving the contents to file, so as to try and better preserve the original byte sequence. (package--buffer-string, package--cs): New functions. (package--check-signature): Encode `string` if a coding-system was specified in buffer-file-coding-system. (package--download-one-archive, package-install-from-archive): Obey and preserve the buffer-file-coding-system if specified. Do not merge. --- lisp/emacs-lisp/package.el | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 1a185de4a52c..46f7c912726a 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -1241,6 +1241,17 @@ errors." (signal 'bad-signature (list sig-file))) good-signatures))) +(defun package--buffer-string () + (let ((string (buffer-string))) + (when (and buffer-file-coding-system + (> (length string) 0)) + (put-text-property 0 1 'package--cs buffer-file-coding-system string)) + string)) + +(defun package--cs (string) + (and (> (length string) 0) + (get-text-property 0 'package--cs string))) + (defun package--check-signature (location file &optional string async callback unwind) "Check signature of the current buffer. Download the signature file from LOCATION by appending \".sig\" @@ -1260,8 +1271,12 @@ Otherwise, an error is signaled. UNWIND, if provided, is a function to be called after everything else, even if an error is signaled." - (let ((sig-file (concat file ".sig")) - (string (or string (buffer-string)))) + (let* ((sig-file (concat file ".sig")) + (string (or string (package--buffer-string))) + (cs (package--cs string))) + ;; Re-encode the downloaded file with the coding-system with which + ;; it was decoded, so we (hopefully) get the exact same bytes back. + (when cs (setq string (encode-coding-string string cs))) (package--with-response-buffer location :file sig-file :async async :noerror t ;; Connection error is assumed to mean "no sig-file". @@ -1529,7 +1544,7 @@ similar to an entry in `package-alist'. Save the cached copy to :error-form (package--update-downloads-in-progress archive) (let* ((location (cdr archive)) (name (car archive)) - (content (buffer-string)) + (content (package--buffer-string)) (dir (expand-file-name (format "archives/%s" name) package-user-dir)) (local-file (expand-file-name file dir))) (when (listp (read content)) @@ -1538,7 +1553,8 @@ similar to an entry in `package-alist'. Save the cached copy to (member name package-unsigned-archives)) ;; If we don't care about the signature, save the file and ;; we're done. - (progn (let ((coding-system-for-write 'utf-8)) + (progn (let ((coding-system-for-write + (or (package--cs content) 'utf-8))) (write-region content nil local-file nil 'silent)) (package--update-downloads-in-progress archive)) ;; If we care, check it (perhaps async) and *then* write the file. @@ -1546,7 +1562,7 @@ similar to an entry in `package-alist'. Save the cached copy to location file content async ;; This function will be called after signature checking. (lambda (&optional good-sigs) - (let ((coding-system-for-write 'utf-8)) + (let ((coding-system-for-write (or (package--cs content) 'utf-8))) (write-region content nil local-file nil 'silent)) ;; Write out good signatures into archive-contents.signed file. (when good-sigs @@ -1838,15 +1854,17 @@ if all the in-between dependencies are also in PACKAGE-LIST." (let ((save-silently t)) (package-unpack pkg-desc)) ;; If we care, check it and *then* write the file. - (let ((content (buffer-string))) + (let ((content (package--buffer-string))) (package--check-signature location file content nil ;; This function will be called after signature checking. (lambda (&optional good-sigs) ;; Signature checked, unpack now. - (with-temp-buffer (insert content) - (let ((save-silently t)) - (package-unpack pkg-desc))) + (with-temp-buffer + (insert content) + (setq buffer-file-coding-system (package--cs content)) + (let ((save-silently t)) + (package-unpack pkg-desc))) ;; Here the package has been installed successfully, mark it as ;; signed if appropriate. (when good-sigs From d8a6d82c4d34286b377fd7bddd4be0116e8dd4b9 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 1 Jun 2019 10:28:30 +0300 Subject: [PATCH 439/567] Improve documentation of 'safe-local-variable' property * doc/lispref/variables.texi (File Local Variables): Document how to define 'safe-local-variable' properties for built-in variables. --- doc/lispref/variables.texi | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 153a80a44434..1a1860df307e 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -1847,6 +1847,11 @@ variables have @code{safe-local-variable} properties; these include For boolean-valued variables that are safe, use @code{booleanp} as the property value. + If you want to define @code{safe-local-variable} properties for +variables defined in C source code, add the names and the properties +of those variables to the list in the ``Safe local variables'' section +of @file{files.el}. + @cindex autoload cookie, and safe values of variable When defining a user option using @code{defcustom}, you can set its @code{safe-local-variable} property by adding the arguments From daf32f1f87b3d71cddd9ab2e9e4c3f5b523ae409 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 1 Jun 2019 18:52:11 +0300 Subject: [PATCH 440/567] Speed up redisplay of HELLO * etc/HELLO: Set 'inhibit-compacting-font-caches' non-nil locally. (Bug#36032) * lisp/files.el: Add 'inhibit-compacting-font-caches' to the list of built-in variables for which we set up 'safe-local-variable' properties. --- etc/HELLO | 1 + lisp/files.el | 1 + 2 files changed, 2 insertions(+) diff --git a/etc/HELLO b/etc/HELLO index ae52e94b0653..f424a2ab8aa4 100644 --- a/etc/HELLO +++ b/etc/HELLO @@ -96,4 +96,5 @@ along with GNU Emacs. If not, see . ;;; tab-width: 32 ;;; bidi-display-reordering: t ;;; coding: iso-2022-7bit +;;; inhibit-compacting-font-caches: t ;;; End: diff --git a/lisp/files.el b/lisp/files.el index f3b502095dde..2187eba1a42d 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3233,6 +3233,7 @@ asking you for confirmation." (fill-column . integerp) ;; C source code (indent-tabs-mode . booleanp) ;; C source code (left-margin . integerp) ;; C source code + (inhibit-compacting-font-caches . booleanp) ;; C source code (no-update-autoloads . booleanp) (lexical-binding . booleanp) ;; C source code (tab-width . integerp) ;; C source code From 008b263feeba8951a95bec93ec0a9e263cf230f7 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 1 Jun 2019 11:33:25 -0700 Subject: [PATCH 441/567] * lisp/gnus/gnus.el: Mark autoloaded macros as such. This avoids a build failure. --- lisp/gnus/gnus.el | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el index c3a57800e393..4437ee972e21 100644 --- a/lisp/gnus/gnus.el +++ b/lisp/gnus/gnus.el @@ -2745,12 +2745,12 @@ gnus-registry.el will populate this if it's loaded.") (let ((interactive (nth 1 (memq ':interactive package)))) (mapcar (lambda (function) - (let (keymap) + (let (type) (when (consp function) - (setq keymap (car (memq 'keymap function))) + (setq type (cadr function)) (setq function (car function))) (unless (fboundp function) - (autoload function (car package) nil interactive keymap)))) + (autoload function (car package) nil interactive type)))) (if (eq (nth 1 package) ':interactive) (nthcdr 3 package) (cdr package))))) @@ -2863,8 +2863,8 @@ gnus-registry.el will populate this if it's loaded.") gnus-list-of-unread-articles gnus-list-of-read-articles gnus-offer-save-summaries gnus-make-thread-indent-array gnus-summary-exit gnus-update-read-articles gnus-summary-last-subject - gnus-summary-skip-intangible gnus-summary-article-number - gnus-data-header gnus-data-find) + (gnus-summary-skip-intangible macro) (gnus-summary-article-number macro) + (gnus-data-header macro) (gnus-data-find macro)) ("gnus-group" gnus-group-insert-group-line gnus-group-quit gnus-group-list-groups gnus-group-first-unread-group gnus-group-set-mode-line gnus-group-set-info gnus-group-save-newsrc From 2860285621eb890697ca122cd6ede8c3f03566d6 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Fri, 31 May 2019 08:24:56 -0400 Subject: [PATCH 442/567] Allow macros autoloaded as functions during bytecomp (Bug#36022) * lisp/emacs-lisp/bytecomp.el (byte-compile-callargs-warn): Don't pass symbols which don't have a known definition to byte-compile--function-signature, it fails to compile code which previously compiled successfully (for example, gnus.el until 2019-06-01 "* lisp/gnus/gnus.el: Mark autoloaded macros as such" which autoloads some macros as if they were functions). --- lisp/emacs-lisp/bytecomp.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 72e81a653c70..e3b34c189f6c 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -1379,7 +1379,9 @@ when printing the error message." (defun byte-compile-callargs-warn (form) (let* ((def (or (byte-compile-fdefinition (car form) nil) (byte-compile-fdefinition (car form) t))) - (sig (byte-compile--function-signature (or def (car form)))) + (sig (cond (def (byte-compile--function-signature def)) + ((subrp (symbol-function (car form))) + (subr-arity (symbol-function (car form)))))) (ncall (length (cdr form)))) ;; Check many or unevalled from subr-arity. (if (and (cdr-safe sig) From 04f13a5d9bc19cfe0382e4257f1a1d856aa354ed Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 1 Jun 2019 09:53:35 -0400 Subject: [PATCH 443/567] Disable byte-compile-cond-use-jump-table (Bug#35770) * lisp/emacs-lisp/bytecomp.el (byte-compile-cond-use-jump-table): Set to nil by default. Don't merge to master, the bug is already fixed there. --- lisp/emacs-lisp/bytecomp.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index e3b34c189f6c..9273626c805e 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -234,9 +234,9 @@ This includes variable references and calls to functions such as `car'." :group 'bytecomp :type 'boolean) -(defcustom byte-compile-cond-use-jump-table t +(defcustom byte-compile-cond-use-jump-table nil "Compile `cond' clauses to a jump table implementation (using a hash-table)." - :version "26.1" + :version "26.3" ;; Disabled due to Bug#35770. :group 'bytecomp :type 'boolean) From fb314ba3ad3619123b3d41b1dd65dcc569ad1e51 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 1 Jun 2019 12:40:11 -0400 Subject: [PATCH 444/567] Don't recommend insert-before-markers in process filters See and Bug#35334. * doc/lispref/processes.texi (Filter Functions): Go back to using plain insert in the example filter. Add note about updating window point. --- doc/lispref/processes.texi | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 38ad9076a0c3..a93f4db42827 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -1643,7 +1643,7 @@ how to do these things: (save-excursion ;; @r{Insert the text, advancing the process marker.} (goto-char (process-mark proc)) - (insert-before-markers string) + (insert string) (set-marker (process-mark proc) (point))) (if moving (goto-char (process-mark proc))))))) @end group @@ -1659,7 +1659,12 @@ text arrives, you could insert a line like the following just before the To force point to the end of the new output, no matter where it was previously, eliminate the variable @code{moving} from the example and -call @code{goto-char} unconditionally. +call @code{goto-char} unconditionally. Note that this doesn't +necessarily move the window point. The default filter actually uses +@code{insert-before-markers} which moves all markers, including the +window point. This may move unrelated markers, so it's generally +better to move the window point explicitly, or set its insertion type +to @code{t} (@pxref{Window Point}). @ignore In earlier Emacs versions, every filter function that did regular From c153250adb1c4881cd775623028e793abea7b5fa Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Mon, 3 Jun 2019 10:36:00 +0200 Subject: [PATCH 445/567] Try to improve text on atomic windows in Elisp manual * doc/lispref/windows.texi (Deleting Windows): Mention how 'delete-window' and 'delete-other-windows' handle atomic windows. Minor rewrite. (Quitting Windows): Mention how 'quit-restore-window' handles atomic windows and that it tries to avoid raising an error. (Atomic Windows): Tell how to dissolve atomic windows. --- doc/lispref/windows.texi | 83 ++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 34 deletions(-) diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index f4395c12d26d..b2dd3d995832 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -1307,8 +1307,10 @@ the selected window. If deleting the window would leave no more windows in the window tree (e.g., if it is the only live window in the frame) or all remaining -windows on @var{window}'s frame are side windows (@pxref{Side Windows}), -an error is signaled. +windows on @var{window}'s frame are side windows (@pxref{Side +Windows}), an error is signaled. If @var{window} is part of an atomic +window (@pxref{Atomic Windows}), this function tries to delete the +root of that atomic window instead. By default, the space taken up by @var{window} is given to one of its adjacent sibling windows, if any. However, if the variable @@ -1327,10 +1329,13 @@ Parameters}. @end deffn @deffn Command delete-other-windows &optional window -This function makes @var{window} fill its frame, deleting other windows -as necessary. If @var{window} is omitted or @code{nil}, it defaults to -the selected window. An error is signaled if @var{window} is a side -window (@pxref{Side Windows}). The return value is @code{nil}. +This function makes @var{window} fill its frame, deleting other +windows as necessary. If @var{window} is omitted or @code{nil}, it +defaults to the selected window. An error is signaled if @var{window} +is a side window (@pxref{Side Windows}). If @var{window} is part of +an atomic window (@pxref{Atomic Windows}), this function tries to make +the root of that atomic window fill its frame. The return +value is @code{nil}. The behavior of this function may be altered by the window parameters of @var{window}, so long as the variable @code{ignore-window-parameters} is @@ -3909,9 +3914,8 @@ described next to deal with the window and its buffer. This function handles @var{window} and its buffer after quitting. The optional argument @var{window} must be a live window and defaults to the selected one. The function's behavior is determined by the four -elements of the list specified by the @code{quit-restore} window -parameter (@pxref{Window Parameters}), which is set to @code{nil} -afterwards. +elements of the list specified by @var{window}'s @code{quit-restore} +parameter (@pxref{Window Parameters}). The first element of the @code{quit-restore} parameter is one of the symbols @code{window}, meaning that the window has been specially @@ -3920,35 +3924,40 @@ been created; @code{same}, the window has only ever displayed this buffer; or @code{other}, the window showed another buffer before. @code{frame} and @code{window} affect how the window is quit, while @code{same} and @code{other} affect the redisplay of buffers -previously shown in this window. +previously shown in @var{window}. -The second element is either one of the symbols @code{window} or -@code{frame}, or a list whose elements are the buffer shown in the -window before, that buffer's window start and window point positions, -and the window's height at that time. If that buffer is still live -when the window is quit, then the function @code{quit-restore-window} -reuses the window to display the buffer. +The parameter's second element is either one of the symbols +@code{window} or @code{frame}, or a list whose elements are the buffer +shown in @var{window} before, that buffer's window start and window +point positions, and @var{window}'s height at that time. If that +buffer is still live when @var{window} is quit, then this function may +reuse @var{window} to display it. The third element is the window selected at the time the parameter was -created. If @code{quit-restore-window} deletes the window passed to -it as argument, it then tries to reselect this window. +created. If this function deletes @var{window}, it subsequently tries +to reselect the window named by that element. The fourth element is the buffer whose display caused the creation of -this parameter. @code{quit-restore-window} deletes the specified window -only if it still shows that buffer. - -The window is deleted entirely if: 1) the first element of the -@code{quit-restore} parameter is one of 'window or 'frame, 2) the -window has no history of previously-displayed buffers, and 3) the -displayed buffer matches the one in the fourth element of the -@code{quit-restore} parameter. If @var{window} is the -only window on its frame and there are other frames on the frame's -terminal, the value of the optional argument @var{bury-or-kill} -determines how to proceed with the window. If @var{bury-or-kill} -equals @code{kill}, the frame is deleted unconditionally. Otherwise, -the fate of the frame is determined by calling -@code{frame-auto-hide-function} (see below) with that frame as sole -argument. +this parameter. This function may delete @var{window} if and only if +it still shows that buffer. + +This function will try to delete @var{window} if and only if (1) the +first element of its @code{quit-restore} parameter is either +@code{window} or @code{frame}, (2) the window has no history of +previously-displayed buffers and (3) the fourth element of the +@code{quit-restore} parameter specifies the buffer currently displayed +in @var{window}. If @var{window} is part of an atomic window +(@pxref{Atomic Windows}), it will try to delete the root of that +atomic window instead. In either case, it tries to avoid signaling an +error when @var{window} cannot be deleted. + +If @var{window} shall be deleted, is the only window on its frame and +there are other frames on that frame's terminal, the value of the +optional argument @var{bury-or-kill} determines how to proceed with +the window. If @var{bury-or-kill} equals @code{kill}, the frame is +deleted unconditionally. Otherwise, the fate of the frame is +determined by calling @code{frame-auto-hide-function} (see below) with +that frame as sole argument. If the third element of the @code{quit-restore} parameter is a list of buffer, window start (@pxref{Window Start and End}), and point @@ -3959,7 +3968,8 @@ try to restore the original height of @var{window}. Otherwise, if @var{window} was previously used for displaying other buffers (@pxref{Window History}), the most recent buffer in that -history will be displayed. +history will be displayed. In either case, if @var{window} is not +deleted, its @code{quit-restore} parameter is reset to @code{nil}. The optional argument @var{bury-or-kill} specifies how to deal with @var{window}'s buffer. The following values are handled: @@ -4440,6 +4450,11 @@ parameter assigned by @code{display-buffer-in-atom-window}. Further parameters have to be set by the application explicitly via a @code{window-parameters} entry in @var{alist}. + Atomic windows automatically cease to exist when one of their +constituents gets deleted. To dissolve an atomic window manually, +reset the @code{window-atom} parameter of its constituents---the root +of the atomic window and all its descendants. + The following code snippet, when applied to a single-window frame, first splits the selected window and makes the selected and the new window constituents of an atomic window with their parent as root. It From 9734b5c5b2902d4e036c0a5b8f146c1107518bb0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 3 Jun 2019 19:11:42 +0300 Subject: [PATCH 446/567] Fix minor issues in the Emacs manual * doc/emacs/search.texi (Regexp Replace, Regexps): * doc/emacs/kmacro.texi (Keyboard Macro Query) (Save Keyboard Macro): Fix inaccuracies and typos. (Bug#35885) --- doc/emacs/kmacro.texi | 4 ++-- doc/emacs/search.texi | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/emacs/kmacro.texi b/doc/emacs/kmacro.texi index 65387ae783c0..3710611c7633 100644 --- a/doc/emacs/kmacro.texi +++ b/doc/emacs/kmacro.texi @@ -391,7 +391,7 @@ macro definition is executed. It is up to you to leave point and the text in a state such that the rest of the macro will do what you want. @end table - @kbd{C-u C-x q}, which is @kbd{C-x q} with a numeric argument, + @kbd{C-u C-x q}, which is @kbd{C-x q} with a prefix argument, performs a completely different function. It enters a recursive edit reading input from the keyboard, both when you type it during the definition of the macro, and when it is executed from the macro. During @@ -472,7 +472,7 @@ later with @code{load-file} (@pxref{Lisp Libraries}). If the file you save in is your init file @file{~/.emacs} (@pxref{Init File}) then the macro will be defined each time you run Emacs. - If you give @code{insert-kbd-macro} a numeric argument, it makes + If you give @code{insert-kbd-macro} a prefix argument, it makes additional Lisp code to record the keys (if any) that you have bound to @var{macroname}, so that the macro will be reassigned the same keys when you load the file. diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 9611d3418600..004280cc64bd 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -828,7 +828,7 @@ Expressions,,, elisp, The Emacs Lisp Reference Manual}, for additional features used mainly in Lisp programs. Regular expressions have a syntax in which a few characters are -special constructs and the rest are @dfn{ordinary}. An ordinary +@dfn{special constructs} and the rest are @dfn{ordinary}. An ordinary character matches that same character and nothing else. The special characters are @samp{$^.*+?[\}. The character @samp{]} is special if it ends a character alternative (see below). The character @samp{-} @@ -1465,8 +1465,7 @@ multiple digits, and the value of @samp{\@var{d}} is @code{nil} if the @samp{\#} here too stands for the number of already-completed replacements. - Repeating our example to exchange @samp{x} and @samp{y}, we can thus -do it also this way: + For example, we can exchange @samp{x} and @samp{y} this way: @example M-x replace-regexp @key{RET} \(x\)\|y @key{RET} From b67042be5d39aaff2d48a2eb3306ef422d27d52f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 3 Jun 2019 19:30:47 +0300 Subject: [PATCH 447/567] More minor copyedits in the Emacs manual * doc/emacs/basic.texi (Arguments): * doc/emacs/display.texi (Recentering, Text Display): * doc/emacs/regs.texi (Text Registers, Rectangle Registers): * doc/emacs/mark.texi (Disabled Transient Mark): Fix inaccuracies and typos. (Bug#35885) --- doc/emacs/basic.texi | 6 +++--- doc/emacs/display.texi | 19 ++++++++++--------- doc/emacs/mark.texi | 6 +++--- doc/emacs/regs.texi | 4 ++-- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index 86403b7a23de..3728144b7974 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -816,9 +816,9 @@ more convenient, and they are documented in that command's documentation string. We use the term @dfn{prefix argument} to emphasize that you type -such arguments before the command, and to distinguish them from -minibuffer arguments (@pxref{Minibuffer}), which are entered after -invoking the command. +such arguments @emph{before} the command, and to distinguish them from +minibuffer arguments (@pxref{Minibuffer}), which are entered +@emph{after} invoking the command. On graphical displays, @kbd{C-0}, @kbd{C-1}, etc.@ act the same as @kbd{M-0}, @kbd{M-1}, etc. diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 9cf6baa7e913..f8c620115d3a 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -199,12 +199,13 @@ screen lines between point and the top or bottom of the window (@pxref{Auto Scrolling}). You can also give @kbd{C-l} a prefix argument. A plain prefix -argument, @kbd{C-u C-l}, simply recenters point. A positive argument -@var{n} puts point @var{n} lines down from the top of the window. An -argument of zero puts point on the topmost line. A negative argument -@var{-n} puts point @var{n} lines from the bottom of the window. When -given an argument, @kbd{C-l} does not clear the screen or cycle -through different screen positions. +argument, @kbd{C-u C-l}, simply recenters the line showing point. A +positive argument @var{n} moves line showing point @var{n} lines down +from the top of the window. An argument of zero moves point's line to +the top of the window. A negative argument @var{-n} moves point's +line @var{n} lines from the bottom of the window. When given an +argument, @kbd{C-l} does not clear the screen or cycle through +different screen positions. @vindex recenter-redisplay If the variable @code{recenter-redisplay} has a non-@code{nil} @@ -1484,9 +1485,9 @@ a new line, while the tab character (@code{U+0009}) is displayed as a space that extends to the next tab stop column (normally every 8 columns). The number of spaces per tab is controlled by the buffer-local variable @code{tab-width}, which must have an integer -value between 1 and 1000, inclusive. Note that how the tab character -in the buffer is displayed has nothing to do with the definition of -@key{TAB} as a command. +value between 1 and 1000, inclusive. Note that the way the tab +character in the buffer is displayed has nothing to do with the +definition of @key{TAB} as a command. Other @acronym{ASCII} control characters, whose codes are below @code{U+0020} (octal 40, decimal 32), are displayed as a caret diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 5ffe7264a35f..8ad5fc7c9e4b 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi @@ -420,9 +420,9 @@ commands. The default behavior of the mark and region, in which setting the mark activates it and highlights the region, is called Transient Mark mode. This is a minor mode that is enabled by default. It can be -toggled with @kbd{M-x transient-mark-mode}, or with the @samp{Active -Region Highlighting} menu item in the @samp{Options} menu. Turning it -off switches Emacs to an alternative mode of operation: +toggled with @kbd{M-x transient-mark-mode}, or with the +@samp{Highlight Active Region} menu item in the @samp{Options} menu. +Turning it off switches Emacs to an alternative mode of operation: @itemize @bullet @item diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi index b9d0afe42ee3..b47e5d30b2d4 100644 --- a/doc/emacs/regs.texi +++ b/doc/emacs/regs.texi @@ -152,7 +152,7 @@ during the collection process, you can use the following setting. @findex insert-register @kbd{C-x r i @var{r}} inserts in the buffer the text from register @var{r}. Normally it leaves point after the text and sets the mark -before, without activating it. With a numeric argument, it instead +before, without activating it. With a prefix argument, it instead puts point before the text and the mark after. @node Rectangle Registers @@ -168,7 +168,7 @@ in the buffer. @kindex C-x r r @item C-x r r @var{r} Copy the region-rectangle into register @var{r} -(@code{copy-rectangle-to-register}). With numeric argument, delete it as +(@code{copy-rectangle-to-register}). With prefix argument, delete it as well. @item C-x r i @var{r} Insert the rectangle stored in register @var{r} (if it contains a From ff7ec6ff3322ed38e35342e960b6af5a36c9e51d Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 4 Jun 2019 18:11:37 +0300 Subject: [PATCH 448/567] Fix a few uses of quotes in user manual * doc/emacs/text.texi (Quotation Marks): * doc/emacs/display.texi (Text Display): * doc/emacs/basic.texi (Inserting Text): Fix some more quotes. (Bug#35885) --- doc/emacs/basic.texi | 8 ++++---- doc/emacs/display.texi | 4 ++-- doc/emacs/text.texi | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index 3728144b7974..7144490cda7c 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -118,8 +118,8 @@ sometimes called a left single ``curved quote'' or ``curly quote''. Similarly, @kbd{C-x 8 ]}, @kbd{C-x 8 @{} and @kbd{C-x 8 @}} insert the curved quotes @t{’}, @t{“} and @t{”}, respectively. Also, a working Alt key acts like @kbd{C-x 8}; e.g., @kbd{A-[} acts like @kbd{C-x 8 [} -and inserts `. To see which characters have @kbd{C-x 8} shorthands, -type @kbd{C-x 8 C-h}. +and inserts @t{‘}. To see which characters have @kbd{C-x 8} +shorthands, type @kbd{C-x 8 C-h}. Alternatively, you can use the command @kbd{C-x 8 @key{RET}} (@code{insert-char}). This prompts for the Unicode name or code-point @@ -146,9 +146,9 @@ the buffer. how many copies of the character to insert (@pxref{Arguments}). In addition, in some contexts, if you type a quotation using grave -accent and apostrophe @t{`like this'}, it is converted to a form +accent and apostrophe @kbd{`like this'}, it is converted to a form @t{‘like this’} using single quotation marks, even without @kbd{C-x 8} -commands. Similarly, typing a quotation @t{``like this''} using +commands. Similarly, typing a quotation @kbd{``like this''} using double grave accent and apostrophe converts it to a form @t{“like this”} using double quotation marks. @xref{Quotation Marks}. diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index f8c620115d3a..70b88dc92d02 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -1557,11 +1557,11 @@ curved quotes. You can influence or inhibit this translation by customizing the user option @code{text-quoting-style} (@pxref{Keys in Documentation,,, elisp, The Emacs Lisp Reference Manual}). - If the curved quotes @samp{‘}, @samp{’}, @samp{“}, and @samp{”} are + If the curved quotes @t{‘}, @t{’}, @t{“}, and @t{”} are known to look just like @acronym{ASCII} characters, they are shown with the @code{homoglyph} face. Curved quotes that are known not to be displayable are shown as their @acronym{ASCII} approximations -@samp{`}, @samp{'}, and @samp{"} with the @code{homoglyph} face. +@t{`}, @t{'}, and @t{"} with the @code{homoglyph} face. @node Cursor Display @section Displaying the Cursor diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index e9b17dbb651c..db55feeb6652 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -439,8 +439,8 @@ portable; curved quotes are less ambiguous and typically look nicer. @vindex electric-quote-chars Electric Quote mode makes it easier to type curved quotes. As you -type characters it optionally converts @t{`} to ‘, @t{'} to ', -@t{``} to ``, and @t{''} to ''. It's possible to change the +type characters it optionally converts @kbd{`} to @t{‘}, @kbd{'} to @t{’}, +@kbd{``} to @t{“}, and @kbd{''} to @t{”}. It's possible to change the default quotes listed above, by customizing the variable @code{electric-quote-chars}, a list of four characters, where the items correspond to the left single quote, the right single quote, the From f68b33f50299339a36da29cd1913d19fd5f288e0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 5 Jun 2019 19:52:00 +0300 Subject: [PATCH 449/567] Fix styling of Unicode codepoints in manuals * doc/lispref/nonascii.texi (Character Properties): * doc/lispref/display.texi (Glyphless Chars) (Bidirectional Display): * doc/emacs/search.texi (Lax Search): * doc/emacs/text.texi (Quotation Marks): * doc/emacs/basic.texi (Inserting Text): Canonicalize the style of "U+NNNN CHARACTER NAME". (Bug#35885) --- doc/emacs/basic.texi | 2 +- doc/emacs/search.texi | 13 +++++++------ doc/emacs/text.texi | 8 ++++---- doc/lispref/display.texi | 10 +++++----- doc/lispref/nonascii.texi | 23 ++++++++++++----------- 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index 7144490cda7c..d0bd46c35fc9 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -113,7 +113,7 @@ just like digits. Case is ignored. @cindex curved quotes, inserting A few common Unicode characters can be inserted via a command starting with @kbd{C-x 8}. For example, @kbd{C-x 8 [} inserts @t{‘} -which is Unicode code-point @code{U+2018} LEFT SINGLE QUOTATION MARK, +which is Unicode code-point U+2018 @sc{left single quotation mark}, sometimes called a left single ``curved quote'' or ``curly quote''. Similarly, @kbd{C-x 8 ]}, @kbd{C-x 8 @{} and @kbd{C-x 8 @}} insert the curved quotes @t{’}, @t{“} and @t{”}, respectively. Also, a working diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 004280cc64bd..0da037330d41 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1310,14 +1310,14 @@ of its accented cousins like @code{@"a} and @code{@'a}, i.e., the match disregards the diacritics that distinguish these variants. In addition, @code{a} matches other characters that resemble it, or have it as part of their graphical representation, -such as @sc{u+249c parenthesized latin small letter a} and @sc{u+2100 -account of} (which looks like a small @code{a} over @code{c}). +such as U+249C @sc{parenthesized latin small letter a} and U+2100 +@sc{account of} (which looks like a small @code{a} over @code{c}). Similarly, the @acronym{ASCII} double-quote character @code{"} matches all the other variants of double quotes defined by the Unicode standard. Finally, character folding can make a sequence of one or more characters match another sequence of a different length: for -example, the sequence of two characters @code{ff} matches @sc{u+fb00 -latin small ligature ff}. Character sequences that are not identical, +example, the sequence of two characters @code{ff} matches U+FB00 +@sc{latin small ligature ff}. Character sequences that are not identical, but match under character folding are known as @dfn{equivalent character sequences}. @@ -1642,8 +1642,9 @@ replacement has already been made, @key{DEL} and @key{SPC} are equivalent in this situation; both move to the next occurrence. You can type @kbd{C-r} at this point (see below) to alter the replaced -text. You can also type @kbd{C-x u} to undo the replacement; this exits -the @code{query-replace}, so if you want to do further replacement you +text. You can also undo the replacement with the @code{undo} command +(e.g., type @kbd{C-x u}; @pxref{Undo}); this exits the +@code{query-replace}, so if you want to do further replacement you must use @kbd{C-x @key{ESC} @key{ESC} @key{RET}} to restart (@pxref{Repetition}). diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index db55feeb6652..bd8a1f59acc9 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -428,10 +428,10 @@ using straight apostrophes @t{'like this'} or double-quotes @t{"like this"}. Another common way is the curved quote convention, which uses left and right single or double quotation marks `@t{like this}' or ``@t{like this}''@footnote{ -The curved single quote characters are U+2018 LEFT SINGLE QUOTATION -MARK and U+2018 RIGHT SINGLE QUOTATION MARK; the curved double quotes -are U+201C LEFT DOUBLE QUOTATION MARK and U+201D RIGHT DOUBLE -QUOTATION MARK. On text terminals which cannot display these +The curved single quote characters are U+2018 @sc{left single quotation +mark} and U+2018 @sc{right single quotation mark}; the curved double quotes +are U+201C @sc{left double quotation mark} and U+201D @sc{right double +quotation mark}. On text terminals which cannot display these characters, the Info reader might show them as the typewriter ASCII quote characters. }. In text files, typewriter quotes are simple and diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index b07999432cec..2ff73b08bdb1 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -7269,9 +7269,9 @@ Non-@acronym{ASCII}, non-printing characters @code{U+0080} to @samp{\230}). @item format-control -Characters of Unicode General Category [Cf], such as @samp{U+200E} -(Left-to-Right Mark), but excluding characters that have graphic -images, such as @samp{U+00AD} (Soft Hyphen). +Characters of Unicode General Category [Cf], such as U+200E +@sc{left-to-right mark}, but excluding characters that have graphic +images, such as U+00AD @sc{soft hyphen}. @item no-font Characters for which there is no suitable font, or which cannot be @@ -7654,12 +7654,12 @@ problem: @itemize @minus @item -Append the special character @code{U+200E}, LEFT-TO-RIGHT MARK, or +Append the special character U+200E @sc{left-to-right mark}, or @acronym{LRM}, to the end of each field that may have bidirectional content, or prepend it to the beginning of the following field. The function @code{bidi-string-mark-left-to-right}, described below, comes in handy for this purpose. (In a right-to-left paragraph, use -@code{U+200F}, RIGHT-TO-LEFT MARK, or @acronym{RLM}, instead.) This +U+200F @sc{right-to-left mark}, or @acronym{RLM}, instead.) This is one of the solutions recommended by the UBA. @item diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index d2eb2cb07289..ca99cbfcde3d 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi @@ -550,8 +550,8 @@ characters whose @code{Numeric_Type} is @samp{Numeric}. The value of this property is a number. Examples of characters that have this property include fractions, subscripts, superscripts, Roman numerals, currency numerators, and encircled numbers. For example, the value of -this property for the character @code{U+2155} (@sc{vulgar fraction one -fifth}) is @code{0.2}. For characters that don't have any numeric +this property for the character U+2155 @sc{vulgar fraction one +fifth} is @code{0.2}. For characters that don't have any numeric value, and for unassigned codepoints, the value is @code{nil}, which means @acronym{NaN}. @@ -622,23 +622,24 @@ is @code{nil}, which means the character itself. @item special-uppercase Corresponds to Unicode language- and context-independent special upper-casing rules. The value of this property is a string (which may be empty). For -example mapping for @code{U+00DF} (@sc{latin small letter sharp s}) is +example mapping for U+00DF @sc{latin small letter sharp s} is @code{"SS"}. For characters with no special mapping, the value is @code{nil} which means @code{uppercase} property needs to be consulted instead. @item special-lowercase -Corresponds to Unicode language- and context-independent special lower-casing -rules. The value of this property is a string (which may be empty). For -example mapping for @code{U+0130} (@sc{latin capital letter i with dot above}) -the value is @code{"i\u0307"} (i.e. 2-character string consisting of @sc{latin -small letter i} followed by @sc{combining dot above}). For characters with no -special mapping, the value is @code{nil} which means @code{lowercase} property -needs to be consulted instead. +Corresponds to Unicode language- and context-independent special +lower-casing rules. The value of this property is a string (which may +be empty). For example mapping for U+0130 @sc{latin capital letter i +with dot above} the value is @code{"i\u0307"} (i.e. 2-character string +consisting of @sc{latin small letter i} followed by U+0307 +@sc{combining dot above}). For characters with no special mapping, +the value is @code{nil} which means @code{lowercase} property needs to +be consulted instead. @item special-titlecase Corresponds to Unicode unconditional special title-casing rules. The value of this property is a string (which may be empty). For example mapping for -@code{U+FB01} (@sc{latin small ligature fi}) the value is @code{"Fi"}. For +U+FB01 @sc{latin small ligature fi} the value is @code{"Fi"}. For characters with no special mapping, the value is @code{nil} which means @code{titlecase} property needs to be consulted instead. @end table From ee21b402d75c1fb0d6c09dc9f8a02f2bff0325f6 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 6 Jun 2019 16:28:04 +0300 Subject: [PATCH 450/567] * lisp/term/w32-win.el ([noname]): Bind to 'ignore'. (Bug#36083) --- lisp/term/w32-win.el | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el index 39f393fcf985..12c3e97e411a 100644 --- a/lisp/term/w32-win.el +++ b/lisp/term/w32-win.el @@ -170,6 +170,15 @@ the last file dropped is selected." ;; new layout/language selected by the user. (global-set-key [language-change] 'ignore) +;; Some Windows applications send the 'noname' (VK_NONAME) pseudo-key +;; to prevent Windows from sleeping. We want to ignore these key +;; events, to avoid annoying users by ringing the bell and announcing +;; that the key is not bound. +(global-set-key [noname] 'ignore) +(global-set-key [C-noname] 'ignore) +(global-set-key [M-noname] 'ignore) + + (defvar x-resource-name) From 8e5fc38a2f0331c00704e4cc34602a2d58c32c6a Mon Sep 17 00:00:00 2001 From: Phillip Lord Date: Fri, 7 Jun 2019 11:37:56 +0100 Subject: [PATCH 451/567] Fix typo * nt/README.W32: --- nt/README.W32 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nt/README.W32 b/nt/README.W32 index 58d1adf6e137..79f574186239 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -153,7 +153,7 @@ See the end of the file for license conditions. instance, or you want the smallest possible Emacs), then you may use the files emacs-VER-x86_64-no-deps.zip or emacs-VER-i686-no-deps.zip. The dependency files are also available - as emacs-MVER-x86_64-no-deps.zip and emacs-MVER-i686-deps.zip. Source + as emacs-MVER-x86_64-deps.zip and emacs-MVER-i686-deps.zip. Source code for these dependencies is available as emacs-26-deps-mingw-w64-src.zip. From aecbbd57c1929116cf4898336e43d81479535ca0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 7 Jun 2019 15:59:50 +0300 Subject: [PATCH 452/567] * src/fns.c (Fmapconcat): Doc fix. (Bug#35710) --- src/fns.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/fns.c b/src/fns.c index 8db2a86a7252..2276a9971b21 100644 --- a/src/fns.c +++ b/src/fns.c @@ -2494,8 +2494,12 @@ mapcar1 (EMACS_INT leni, Lisp_Object *vals, Lisp_Object fn, Lisp_Object seq) DEFUN ("mapconcat", Fmapconcat, Smapconcat, 3, 3, 0, doc: /* Apply FUNCTION to each element of SEQUENCE, and concat the results as strings. In between each pair of results, stick in SEPARATOR. Thus, " " as -SEPARATOR results in spaces between the values returned by FUNCTION. -SEQUENCE may be a list, a vector, a bool-vector, or a string. */) + SEPARATOR results in spaces between the values returned by FUNCTION. +SEQUENCE may be a list, a vector, a bool-vector, or a string. +SEPARATOR must be a string. +FUNCTION must be a function of one argument, and must return a value + that is a sequence of characters: either a string, or a vector or + list of numbers that are valid character codepoints. */) (Lisp_Object function, Lisp_Object sequence, Lisp_Object separator) { USE_SAFE_ALLOCA; From 9254885a9571162920889f47adb41eaf1e555c21 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 7 Jun 2019 17:32:17 +0300 Subject: [PATCH 453/567] Resurrect display-line-number-mode in client frames * lisp/linum.el (linum-on): Mention bug#35726 in a comment. * lisp/display-line-numbers.el (display-line-numbers--turn-on): Don't check for daemon. (Bug#35726) --- lisp/display-line-numbers.el | 4 +--- lisp/linum.el | 4 ++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lisp/display-line-numbers.el b/lisp/display-line-numbers.el index d38f2e69635e..f17f8e5ca189 100644 --- a/lisp/display-line-numbers.el +++ b/lisp/display-line-numbers.el @@ -92,9 +92,7 @@ the mode is on, set `display-line-numbers' directly." (defun display-line-numbers--turn-on () "Turn on `display-line-numbers-mode'." - (unless (or (minibufferp) - ;; taken from linum.el - (and (daemonp) (null (frame-parameter nil 'client)))) + (unless (minibufferp) (display-line-numbers-mode))) ;;;###autoload diff --git a/lisp/linum.el b/lisp/linum.el index 789b5aadd073..cdbc55dc8b89 100644 --- a/lisp/linum.el +++ b/lisp/linum.el @@ -121,6 +121,10 @@ Linum mode is a buffer-local minor mode." ;; if some large buffer was under linum-mode when ;; desktop was saved. So we disable linum-mode for ;; non-client frames in a daemon session. + + ;; Note that nowadays, this actually doesn't show line + ;; numbers in client frames at all, because we visit the + ;; file before creating the client frame. See bug#35726. (and (daemonp) (null (frame-parameter nil 'client)))) (linum-mode 1))) From 25d44d27dad78d55adfd5905bb9344a8521a18dd Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Sat, 8 Jun 2019 09:02:45 +0200 Subject: [PATCH 454/567] * nt/addpm.c (main): Fix buffer overflow --- nt/addpm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nt/addpm.c b/nt/addpm.c index f71ce5f2385f..a8bcd4a5c73e 100644 --- a/nt/addpm.c +++ b/nt/addpm.c @@ -219,8 +219,9 @@ main (int argc, char *argv[]) { int result; - char msg[ MAX_PATH ]; - sprintf (msg, "Install Emacs at %s?\n", emacs_path); + const char install_msg[] = "Install Emacs at %s?\n"; + char msg[ MAX_PATH + sizeof (install_msg) ]; + sprintf (msg, install_msg, emacs_path); result = MessageBox (NULL, msg, "Install Emacs", MB_OKCANCEL | MB_ICONQUESTION); if (result != IDOK) From 48422af0f327f3df45b6dc518708f36b4ed5f9d8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 8 Jun 2019 11:24:47 +0300 Subject: [PATCH 455/567] Tiny improvement of documentation of major mode conventions * doc/lispref/modes.texi (Major Mode Conventions): More accurate advice regarding customization of 'C-M-a' by major modes. --- doc/lispref/modes.texi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index e8a8eb35e97f..b6b9b58c71c2 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -363,7 +363,9 @@ it provides a command that does the same job in a way better suited to the text this mode is used for. For example, a major mode for editing a programming language might redefine @kbd{C-M-a} to move to the beginning of a function in a way that works better for -that language. +that language. The recommended way of tailoring @kbd{C-M-a} to the +needs of a major mode is to set @code{beginning-of-defun-function} +(@pxref{List Motion}) to invoke the function specific to the mode. It is also legitimate for a major mode to rebind a standard key sequence whose standard meaning is rarely useful in that mode. For From b58ecafcdc8e13537b21860a222d13c73c851e7c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 8 Jun 2019 18:48:33 +0300 Subject: [PATCH 456/567] Minor copyedits in efaq-w32 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * doc/misc/efaq-w32.texi (Grep, Recursive grep): More accurate description of using 'findstr' as a poor-man's replacement for 'grep'. Reported by 范凯 --- doc/misc/efaq-w32.texi | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi index 8e067a7a2693..cdd01e47f003 100644 --- a/doc/misc/efaq-w32.texi +++ b/doc/misc/efaq-w32.texi @@ -1820,7 +1820,8 @@ If you want a quick solution without installing extra tools, a poor substitute that works for simple text searches is to specify the built in Windows command @command{findstr} as the command to run at the @kbd{M-x grep} prompt. Normally you will want to use the @option{/n} -argument to @command{findstr}. +argument to @command{findstr}, to have it print the line numbers for +each hit. @menu * Recursive grep:: @@ -1860,7 +1861,8 @@ path to the findutils @command{find} command. An alternative if you have a recent version of grep is to customize @code{grep-find-command} to use @samp{grep -r} instead of both find and grep. Another alternative if you don't need the full capabilities -of grep is to use @samp{findstr /n /r}. +of grep is to use @samp{findstr /n /r}; add the @samp{/s} option if +you want a recursive search. @c ------------------------------------------------------------ @node Developing with Emacs From 4cc4b5d6d7b4990f9a51b14126a7f7aa30ad6101 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Sun, 9 Jun 2019 05:02:39 +0200 Subject: [PATCH 457/567] ; * src/keyboard.c (tool_bar_items): Fix a typo. (Bug#36143) --- src/keyboard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/keyboard.c b/src/keyboard.c index 282eac72b922..aa3448439b42 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -8035,7 +8035,7 @@ tool_bar_items (Lisp_Object reuse, int *nitems) { /* No, so use major and minor mode keymaps and keymap property. Note that tool-bar bindings in the local-map and keymap - properties may not work reliable, as they are only + properties may not work reliably, as they are only recognized when the tool-bar (or mode-line) is updated, which does not normally happen after every command. */ ptrdiff_t nminor = current_minor_maps (NULL, &tmaps); From 4904fb352c14539e1c6927e8c893abb037bca8a0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 9 Jun 2019 11:28:36 +0300 Subject: [PATCH 458/567] More quotation fixes (Bug#35885) * doc/emacs/text.texi (Quotation Marks): Fix a typo. * doc/emacs/modes.texi (Minor Modes): Fix another case of showing quotations. --- doc/emacs/modes.texi | 2 +- doc/emacs/text.texi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi index 4505bb5dc2d7..e01dfa2677b5 100644 --- a/doc/emacs/modes.texi +++ b/doc/emacs/modes.texi @@ -207,7 +207,7 @@ amount of work you can lose in case of a crash. @xref{Auto Save}. @item Electric Quote mode automatically converts quotation marks. For -example, it requotes text typed @t{`like this'} to text @t{‘like +example, it requotes text typed @kbd{`like this'} to text @t{‘like this’}. You can control what kind of text it operates in, and you can disable it entirely in individual buffers. @xref{Quotation Marks}. diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index bd8a1f59acc9..900f743ea9ef 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -429,7 +429,7 @@ this"}. Another common way is the curved quote convention, which uses left and right single or double quotation marks `@t{like this}' or ``@t{like this}''@footnote{ The curved single quote characters are U+2018 @sc{left single quotation -mark} and U+2018 @sc{right single quotation mark}; the curved double quotes +mark} and U+2019 @sc{right single quotation mark}; the curved double quotes are U+201C @sc{left double quotation mark} and U+201D @sc{right double quotation mark}. On text terminals which cannot display these characters, the Info reader might show them as the typewriter ASCII From 1877b7b4d79b3434379fd5a4abd85906c25df00c Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Mon, 10 Jun 2019 12:34:38 +0200 Subject: [PATCH 459/567] Don't mark main_thread (Bug#36155) * thread.c (mark_threads_callback): Don't mark main_thread. --- src/thread.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/thread.c b/src/thread.c index 0cd1ae33dc2e..e21580198390 100644 --- a/src/thread.c +++ b/src/thread.c @@ -645,7 +645,10 @@ mark_threads_callback (void *ignore) Lisp_Object thread_obj; XSETTHREAD (thread_obj, iter); - mark_object (thread_obj); + /* Don't mark main_thread, since it is not allocated + dynamically, thus nothing would unmark it. */ + if (iter != &main_thread) + mark_object (thread_obj); mark_one_thread (iter); } } From 758e9a8ed49c15f7069a67cf0c2ce3c6f9a3f7e1 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Mon, 10 Jun 2019 12:52:21 +0200 Subject: [PATCH 460/567] Revert "Don't mark main_thread (Bug#36155)" This reverts commit 1877b7b4d79b3434379fd5a4abd85906c25df00c. --- src/thread.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/thread.c b/src/thread.c index e21580198390..0cd1ae33dc2e 100644 --- a/src/thread.c +++ b/src/thread.c @@ -645,10 +645,7 @@ mark_threads_callback (void *ignore) Lisp_Object thread_obj; XSETTHREAD (thread_obj, iter); - /* Don't mark main_thread, since it is not allocated - dynamically, thus nothing would unmark it. */ - if (iter != &main_thread) - mark_object (thread_obj); + mark_object (thread_obj); mark_one_thread (iter); } } From fdd1b3e02097966e7ffe8065f6e3d27f5f540d0a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 17 Oct 2018 18:19:47 +0300 Subject: [PATCH 461/567] Avoid assertion violation when comparing with main-thread * src/thread.c (unmark_main_thread): New function. * src/lisp.h (unmark_main_thread): Prototype it. * src/alloc.c (garbage_collect_1): Call it after sweeping. (Bug#33073) * test/src/thread-tests.el (threads-test-bug33073): New test. --- src/alloc.c | 2 ++ src/lisp.h | 1 + src/thread.c | 6 ++++++ test/src/thread-tests.el | 4 ++++ 4 files changed, 13 insertions(+) diff --git a/src/alloc.c b/src/alloc.c index 6aeac140ca07..1a72941cc92e 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -6003,6 +6003,8 @@ garbage_collect_1 (void *end) VECTOR_UNMARK (&buffer_defaults); VECTOR_UNMARK (&buffer_local_symbols); + unmark_main_thread (); + check_cons_list (); gc_in_progress = 0; diff --git a/src/lisp.h b/src/lisp.h index 782c396dbb4e..24551699328e 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3975,6 +3975,7 @@ extern void syms_of_module (void); /* Defined in thread.c. */ extern void mark_threads (void); +extern void unmark_main_thread (void); /* Defined in editfns.c. */ extern void insert1 (Lisp_Object); diff --git a/src/thread.c b/src/thread.c index 0cd1ae33dc2e..47f55e7f67ca 100644 --- a/src/thread.c +++ b/src/thread.c @@ -656,6 +656,12 @@ mark_threads (void) flush_stack_call_func (mark_threads_callback, NULL); } +void +unmark_main_thread (void) +{ + main_thread.header.size &= ~ARRAY_MARK_FLAG; +} + static void diff --git a/test/src/thread-tests.el b/test/src/thread-tests.el index e8d66b87db3b..b57b4f9412d9 100644 --- a/test/src/thread-tests.el +++ b/test/src/thread-tests.el @@ -347,4 +347,8 @@ (should (= (length (all-threads)) 1)) (should (equal (thread-last-error) '(error "Die, die, die!"))))) +(ert-deftest threads-test-bug33073 () + (let ((th (make-thread 'ignore))) + (should-not (equal th main-thread)))) + ;;; threads.el ends here From add2cac586d29c574ae4ba12a2252dce0694f1d4 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Mon, 10 Jun 2019 23:47:01 +0200 Subject: [PATCH 462/567] lisp/*.el: Minor docstring fixes * lisp/subr.el (definition-prefixes): Reflow docstring. * lisp/svg.el (svg-create): Doc fix to allow arg higlighting. (svg-gradient, svg-rectangle): Improve docstring formatting. --- lisp/subr.el | 12 ++++++------ lisp/svg.el | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lisp/subr.el b/lisp/subr.el index 54bee8a809f3..5a08cebf5560 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -5223,15 +5223,15 @@ This is the simplest safe way to acquire and release a mutex." (defvar definition-prefixes (make-hash-table :test 'equal) "Hash table mapping prefixes to the files in which they're used. This can be used to automatically fetch not-yet-loaded definitions. -More specifically, if there is a value of the form (FILES...) for a string PREFIX -it means that the FILES define variables or functions with names that start -with PREFIX. +More specifically, if there is a value of the form (FILES...) for +a string PREFIX it means that the FILES define variables or functions +with names that start with PREFIX. Note that it does not imply that all definitions starting with PREFIX can be found in those files. E.g. if prefix is \"gnus-article-\" there might -still be definitions of the form \"gnus-article-toto-titi\" in other files, which would -presumably appear in this table under another prefix such as \"gnus-\" -or \"gnus-article-toto-\".") +still be definitions of the form \"gnus-article-toto-titi\" in other files, +which would presumably appear in this table under another prefix such as +\"gnus-\" or \"gnus-article-toto-\".") (defun register-definition-prefixes (file prefixes) "Register that FILE uses PREFIXES." diff --git a/lisp/svg.el b/lisp/svg.el index 3384f1dbc023..0399c424c85a 100644 --- a/lisp/svg.el +++ b/lisp/svg.el @@ -30,7 +30,7 @@ (eval-when-compile (require 'subr-x)) (defun svg-create (width height &rest args) - "Create a new, empty SVG image with dimensions WIDTHxHEIGHT. + "Create a new, empty SVG image with dimensions WIDTH x HEIGHT. ARGS can be used to provide `stroke' and `stroke-width' parameters to any further elements added." (dom-node 'svg @@ -42,8 +42,8 @@ any further elements added." (defun svg-gradient (svg id type stops) "Add a gradient with ID to SVG. -TYPE is `linear' or `radial'. STOPS is a list of percentage/color -pairs." +TYPE is `linear' or `radial'. +STOPS is a list of percentage/color pairs." (svg--def svg (apply @@ -66,9 +66,9 @@ pairs." "Create a rectangle on SVG, starting at position X/Y, of WIDTH/HEIGHT. ARGS is a plist of modifiers. Possible values are -:stroke-width PIXELS. The line width. -:stroke-color COLOR. The line color. -:gradient ID. The gradient ID to use." +:stroke-width PIXELS The line width. +:stroke-color COLOR The line color. +:gradient ID The gradient ID to use." (svg--append svg (dom-node 'rect From 5ca093d2814fe5574c720338fc64cba44357f9b3 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Tue, 11 Jun 2019 09:28:29 +0200 Subject: [PATCH 463/567] Fix doc of 'display-buffer-in-previous-window' (Bug#36161) * doc/lispref/windows.texi (Buffer Display Action Functions): * lisp/window.el (display-buffer-in-previous-window): Tell that 'display-buffer-in-previous-window' prefers non-selected windows (Bug#36161). --- doc/lispref/windows.texi | 3 +++ lisp/window.el | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index b2dd3d995832..3116659cd038 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -2597,6 +2597,9 @@ If @var{alist} has a @code{previous-window} entry and the window specified by that entry is live and not dedicated to another buffer, that window will be preferred, even if it never showed @var{buffer} before. + +This function will not choose the selected window if it finds another +eligible window that has shown @var{buffer} previously. @end defun @defun display-buffer-use-some-window buffer alist diff --git a/lisp/window.el b/lisp/window.el index 58e22a2306af..c2d5b02be059 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -7473,8 +7473,11 @@ selected frame if `display-buffer-reuse-frames' and terminal if either of those variables is non-nil. If ALIST has a `previous-window' entry, the window specified by -that entry will override any other window found by the methods -above, even if that window never showed BUFFER before." +that entry may override any other window found by the methods +above, even if that window never showed BUFFER before. + +Avoid using the selected window if another eligible window has +shown BUFFER before." (let* ((alist-entry (assq 'reusable-frames alist)) (inhibit-same-window (cdr (assq 'inhibit-same-window alist))) From 7be50cda56ae0d2a31b8e2ae918409feeddaf6ca Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 11 Jun 2019 19:55:14 +0300 Subject: [PATCH 464/567] Consistently use @minus{} for negative arguments * doc/emacs/mark.texi (Marking Objects): * doc/misc/gnus.texi (Selecting a Group): * doc/emacs/programs.texi (Comment Commands): * doc/emacs/killing.texi (Deletion): * doc/emacs/display.texi (Recentering): * doc/lispref/display.texi (Face Attributes): * doc/lispref/searching.texi (String Search, Regexp Search): Make the markup of "-N" use @minus{} uniformly. (Bug#35885) --- doc/emacs/display.texi | 2 +- doc/emacs/killing.texi | 2 +- doc/emacs/mark.texi | 4 ++-- doc/emacs/programs.texi | 11 ++++++----- doc/lispref/display.texi | 2 +- doc/lispref/searching.texi | 4 ++-- doc/misc/gnus.texi | 2 +- 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 70b88dc92d02..435c21fe7383 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -202,7 +202,7 @@ screen lines between point and the top or bottom of the window argument, @kbd{C-u C-l}, simply recenters the line showing point. A positive argument @var{n} moves line showing point @var{n} lines down from the top of the window. An argument of zero moves point's line to -the top of the window. A negative argument @var{-n} moves point's +the top of the window. A negative argument @minus{}@var{n} moves point's line @var{n} lines from the bottom of the window. When given an argument, @kbd{C-l} does not clear the screen or cycle through different screen positions. diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 2d56f1d26e12..9b9c890331ef 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -124,7 +124,7 @@ point, regardless of the number of spaces that existed previously (even if there were none before). With a numeric argument @var{n}, it leaves @var{n} spaces before point if @var{n} is positive; if @var{n} is negative, it deletes newlines in addition to spaces and tabs, -leaving @var{-n} spaces before point. The command @code{cycle-spacing} +leaving @minus{}@var{n} spaces before point. The command @code{cycle-spacing} acts like a more flexible version of @code{just-one-space}. It does different things if you call it repeatedly in succession. The first call acts like @code{just-one-space}, the next removes diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 8ad5fc7c9e4b..bbeb4cb039ee 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi @@ -193,8 +193,8 @@ located before point, @kbd{M-@@} moves the mark backwards from its current position one word at a time. This command also accepts a numeric argument @var{n}, which tells it -to advance the mark by @var{n} words. A negative argument moves the -mark back by @var{n} words. +to advance the mark by @var{n} words. A negative argument +@minus{}@var{n} moves the mark back by @var{n} words. @kindex C-M-@@ @findex mark-sexp diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index df14fd8a05a1..1d6f3e0459a1 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -1003,7 +1003,7 @@ delimiters to enclose the text in the region. If you supply a prefix argument to @kbd{M-;} when a region is active, that specifies the number of comment delimiters to add or delete. A positive argument @var{n} adds @var{n} delimiters, while a -negative argument @var{-n} removes @var{n} delimiters. +negative argument @minus{}@var{n} removes @var{n} delimiters. If the region is not active, and there is no existing comment on the current line, @kbd{M-;} adds a new comment to the current line. If @@ -1034,10 +1034,11 @@ lines. When a region is active (@pxref{Mark}), @kbd{C-x C-;} either comments or uncomments the lines in the region. If the region is not active, this command comments or uncomments the line point is on. With a positive prefix argument @var{n}, it operates on @var{n} lines -starting with the current one; with a negative @var{n}, it affects -@var{n} preceding lines. After invoking this command with a negative -argument, successive invocations with a positive argument will operate -on preceding lines as if the argument were negated. +starting with the current one; with a negative argument +@minus{}@var{n}, it affects @var{n} preceding lines. After invoking +this command with a negative argument, successive invocations with a +positive argument will operate on preceding lines as if the argument +were negated. @findex comment-kill @kindex C-u M-; diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 2ff73b08bdb1..b6fda1cd8072 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -2369,7 +2369,7 @@ Draw a box with lines of width 1, in color @var{color}. @item @code{(:line-width @var{width} :color @var{color} :style @var{style})} This way you can explicitly specify all aspects of the box. The value @var{width} specifies the width of the lines to draw; it defaults to -1. A negative width @var{-n} means to draw a line of width @var{n} +1. A negative width @minus{}@var{n} means to draw a line of width @var{n} whose top and bottom parts occupy the space of the underlying text, thus avoiding any increase in the character height. diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index 0cf527b6ac7c..2e951d0d5d77 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -101,7 +101,7 @@ previous match. If all these successive searches succeed, the function call succeeds, moving point and returning its new value. Otherwise the function call fails, with results depending on the value of @var{noerror}, as described above. If @var{count} is a negative -number -@var{n}, the search is done @var{n} times in the opposite +number @minus{}@var{n}, the search is done @var{n} times in the opposite (backward) direction. @end deffn @@ -1091,7 +1091,7 @@ previous match. If all these successive searches succeed, the function call succeeds, moving point and returning its new value. Otherwise the function call fails, with results depending on the value of @var{noerror}, as described above. If @var{count} is a negative -number -@var{n}, the search is done @var{n} times in the opposite +number @minus{}@var{n}, the search is done @var{n} times in the opposite (backward) direction. In the following example, point is initially before the @samp{T}. diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index 0d4cf9708488..ee504f5d3516 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -2128,7 +2128,7 @@ considered big. The default value is 200. If the group has more (unread and/or ticked) articles than this, Gnus will query the user before entering the group. The user can then specify how many articles should be fetched from the server. If the user specifies a -negative number (@var{-n}), the @var{n} oldest articles will be +negative number (@minus{}@var{n}), the @var{n} oldest articles will be fetched. If it is positive, the @var{n} articles that have arrived most recently will be fetched. From eca2677b1db94a126b6d2871526a1d6fce98353d Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Wed, 12 Jun 2019 11:02:02 +0200 Subject: [PATCH 465/567] Fix description of 'display-buffer-in-previous-window' again (Bug#36161) * lisp/window.el (display-buffer-in-previous-window): Make doc-string more explicit (Bug#36161). * doc/lispref/windows.texi (Buffer Display Action Functions): Make description of 'display-buffer-in-previous-window' more explicit. (Buffer Display Action Alists): Mention 'display-buffer-in-previous-window' in description of 'reusable-frames' entry. --- doc/lispref/windows.texi | 50 +++++++++++++++++++++++++++++----------- lisp/window.el | 22 ++++++++++++------ 2 files changed, 52 insertions(+), 20 deletions(-) diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 3116659cd038..ea9329e05174 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -2581,25 +2581,47 @@ operations (@pxref{Preserving Window Sizes}). This function fails if no window can be split. More often than not, this happens because no window is large enough to allow splitting. Setting @code{split-height-threshold} or @code{split-width-threshold} -to lower values may help in this regard. Spliting also fails when the -selected frame has an @code{unsplittable} frame parameter; +to lower values may help in this regard. Splitting also fails when +the selected frame has an @code{unsplittable} frame parameter; @pxref{Buffer Parameters}. @end defun @defun display-buffer-in-previous-window buffer alist This function tries to display @var{buffer} in a window where it was -previously displayed. If @var{alist} has a non-@code{nil} -@code{inhibit-same-window} entry, the selected window is not eligible -for reuse. If @var{alist} contains a @code{reusable-frames} entry, -its value determines which frames to search for a suitable window. - -If @var{alist} has a @code{previous-window} entry and the window -specified by that entry is live and not dedicated to another buffer, -that window will be preferred, even if it never showed @var{buffer} +displayed previously. + +If @var{alist} contains a non-@code{nil} @code{inhibit-same-window} +entry, the selected window is not eligible for use. A dedicated +window is usable only if it already shows @var{buffer}. If +@var{alist} contains a @code{previous-window} entry, the window +specified by that entry is usable even if it never showed @var{buffer} before. -This function will not choose the selected window if it finds another -eligible window that has shown @var{buffer} previously. +If @var{alist} contains a @code{reusable-frames} entry (@pxref{Buffer +Display Action Alists}), its value determines which frames to search +for a suitable window. If @var{alist} contains no +@code{reusable-frames} entry, this function searches just the selected +frame if @code{display-buffer-reuse-frames} and @code{pop-up-frames} +are both @code{nil}; it searches all frames on the current terminal if +either of those variables is non-@code{nil}. + +If more than one window qualifies as usable according to these rules, +this function makes a choice in the following order of preference: + +@itemize @bullet +@item +The window specified by any @code{previous-window} @var{alist} entry, +provided it is not the selected window. + +@item +A window that showed @var{buffer} before, provided it is not the +selected window. + +@item +The selected window if it is either specified by a +@code{previous-window} @var{alist} entry or showed @var{buffer} +before. +@end itemize @end defun @defun display-buffer-use-some-window buffer alist @@ -2786,7 +2808,9 @@ Ordering}). A major client of this is @code{display-buffer-reuse-window}, but all other action functions that try to reuse a window are affected as -well. +well. @code{display-buffer-in-previous-window} consults it when +searching for a window that previosuly displayed the buffer on another +frame. @vindex inhibit-switch-frame@r{, a buffer display action alist entry} @item inhibit-switch-frame diff --git a/lisp/window.el b/lisp/window.el index c2d5b02be059..de110111b5ad 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -7457,10 +7457,13 @@ selected frame." (defun display-buffer-in-previous-window (buffer alist) "Display BUFFER in a window previously showing it. If ALIST has a non-nil `inhibit-same-window' entry, the selected -window is not eligible for reuse. +window is not usable. A dedicated window is usable only if it +already shows BUFFER. If ALIST contains a `previous-window' +entry, the window specified by that entry is usable even if it +never showed BUFFER before. If ALIST contains a `reusable-frames' entry, its value determines -which frames to search for a reusable window: +which frames to search for a usable window: nil -- the selected frame (actually the last non-minibuffer frame) A frame -- just that frame `visible' -- all visible frames @@ -7472,12 +7475,17 @@ selected frame if `display-buffer-reuse-frames' and `pop-up-frames' are both nil; search all frames on the current terminal if either of those variables is non-nil. -If ALIST has a `previous-window' entry, the window specified by -that entry may override any other window found by the methods -above, even if that window never showed BUFFER before. +If more than one window is usable according to these rules, +apply the following order of preference: + +- Use the window specified by any 'previous-window' ALIST entry, + provided it is not the selected window. + +- Use a window that showed BUFFER before, provided it is not the + selected window. -Avoid using the selected window if another eligible window has -shown BUFFER before." +- Use the selected window if it is either specified by a + 'previous-window' ALIST entry or showed BUFFER before." (let* ((alist-entry (assq 'reusable-frames alist)) (inhibit-same-window (cdr (assq 'inhibit-same-window alist))) From f53ce87b07cf845b14774ca24aef1e4285e54f78 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Wed, 12 Jun 2019 12:58:53 +0200 Subject: [PATCH 466/567] ; ChangeLog.3 update --- ChangeLog.3 | 878 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 877 insertions(+), 1 deletion(-) diff --git a/ChangeLog.3 b/ChangeLog.3 index e49a3762643a..d994fcb870df 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,3 +1,879 @@ +2019-06-12 Martin Rudalics + + Fix description of 'display-buffer-in-previous-window' again (Bug#36161) + + * lisp/window.el (display-buffer-in-previous-window): Make + doc-string more explicit (Bug#36161). + * doc/lispref/windows.texi (Buffer Display Action Functions): + Make description of 'display-buffer-in-previous-window' more + explicit. + (Buffer Display Action Alists): Mention + 'display-buffer-in-previous-window' in description of + 'reusable-frames' entry. + +2019-06-11 Eli Zaretskii + + Consistently use @minus{} for negative arguments + + * doc/emacs/mark.texi (Marking Objects): + * doc/misc/gnus.texi (Selecting a Group): + * doc/emacs/programs.texi (Comment Commands): + * doc/emacs/killing.texi (Deletion): + * doc/emacs/display.texi (Recentering): + * doc/lispref/display.texi (Face Attributes): + * doc/lispref/searching.texi (String Search, Regexp Search): + Make the markup of "-N" use @minus{} uniformly. (Bug#35885) + +2019-06-11 Martin Rudalics + + Fix doc of 'display-buffer-in-previous-window' (Bug#36161) + + * doc/lispref/windows.texi (Buffer Display Action Functions): + * lisp/window.el (display-buffer-in-previous-window): Tell + that 'display-buffer-in-previous-window' prefers + non-selected windows (Bug#36161). + +2019-06-10 Juanma Barranquero + + lisp/*.el: Minor docstring fixes + + * lisp/subr.el (definition-prefixes): Reflow docstring. + + * lisp/svg.el (svg-create): Doc fix to allow arg higlighting. + (svg-gradient, svg-rectangle): Improve docstring formatting. + +2019-06-10 Eli Zaretskii + + Avoid assertion violation when comparing with main-thread + + * src/thread.c (unmark_main_thread): New function. + * src/lisp.h (unmark_main_thread): Prototype it. + * src/alloc.c (garbage_collect_1): Call it after sweeping. + (Bug#33073) + + * test/src/thread-tests.el (threads-test-bug33073): New test. + +2019-06-10 Andreas Schwab + + Revert "Don't mark main_thread (Bug#36155)" + + This reverts commit 1877b7b4d79b3434379fd5a4abd85906c25df00c. + +2019-06-10 Andreas Schwab + + Don't mark main_thread (Bug#36155) + + * src/thread.c (mark_threads_callback): Don't mark main_thread. + +2019-06-09 Eli Zaretskii + + More quotation fixes (Bug#35885) + + * doc/emacs/text.texi (Quotation Marks): Fix a typo. + * doc/emacs/modes.texi (Minor Modes): Fix another case of + showing quotations. + +2019-06-08 Eli Zaretskii + + Minor copyedits in efaq-w32 + + * doc/misc/efaq-w32.texi (Grep, Recursive grep): More accurate + description of using 'findstr' as a poor-man's replacement for + 'grep'. Reported by 范凯 + +2019-06-08 Eli Zaretskii + + Tiny improvement of documentation of major mode conventions + + * doc/lispref/modes.texi (Major Mode Conventions): More + accurate advice regarding customization of 'C-M-a' by major + modes. + +2019-06-08 Juanma Barranquero + + * nt/addpm.c (main): Fix buffer overflow + +2019-06-07 Eli Zaretskii + + Resurrect display-line-number-mode in client frames + + * lisp/linum.el (linum-on): Mention bug#35726 in a comment. + * lisp/display-line-numbers.el + (display-line-numbers--turn-on): Don't check for daemon. + (Bug#35726) + +2019-06-07 Eli Zaretskii + + * src/fns.c (Fmapconcat): Doc fix. (Bug#35710) + +2019-06-07 Phillip Lord + + Fix typo + + * nt/README.W32: + +2019-06-06 Eli Zaretskii + + * lisp/term/w32-win.el ([noname]): Bind to 'ignore'. (Bug#36083) + +2019-06-05 Eli Zaretskii + + Fix styling of Unicode codepoints in manuals + + * doc/lispref/nonascii.texi (Character Properties): + * doc/lispref/display.texi (Glyphless Chars) + (Bidirectional Display): + * doc/emacs/search.texi (Lax Search): + * doc/emacs/text.texi (Quotation Marks): + * doc/emacs/basic.texi (Inserting Text): Canonicalize the + style of "U+NNNN CHARACTER NAME". (Bug#35885) + +2019-06-04 Eli Zaretskii + + Fix a few uses of quotes in user manual + + * doc/emacs/text.texi (Quotation Marks): + * doc/emacs/display.texi (Text Display): + * doc/emacs/basic.texi (Inserting Text): Fix some more + quotes. (Bug#35885) + +2019-06-03 Eli Zaretskii + + More minor copyedits in the Emacs manual + + * doc/emacs/basic.texi (Arguments): + * doc/emacs/display.texi (Recentering, Text Display): + * doc/emacs/regs.texi (Text Registers, Rectangle Registers): + * doc/emacs/mark.texi (Disabled Transient Mark): Fix + inaccuracies and typos. (Bug#35885) + +2019-06-03 Eli Zaretskii + + Fix minor issues in the Emacs manual + + * doc/emacs/search.texi (Regexp Replace, Regexps): + * doc/emacs/kmacro.texi (Keyboard Macro Query) + (Save Keyboard Macro): Fix inaccuracies and typos. + (Bug#35885) + +2019-06-03 Martin Rudalics + + Try to improve text on atomic windows in Elisp manual + + * doc/lispref/windows.texi (Deleting Windows): Mention how + 'delete-window' and 'delete-other-windows' handle atomic + windows. Minor rewrite. + (Quitting Windows): Mention how 'quit-restore-window' handles + atomic windows and that it tries to avoid raising an error. + (Atomic Windows): Tell how to dissolve atomic windows. + +2019-06-01 Noam Postavsky + + Don't recommend insert-before-markers in process filters + + See and + Bug#35334. + * doc/lispref/processes.texi (Filter Functions): Go back to using + plain insert in the example filter. Add note about updating window + point. + +2019-06-01 Noam Postavsky + + Disable byte-compile-cond-use-jump-table (Bug#35770) + + * lisp/emacs-lisp/bytecomp.el (byte-compile-cond-use-jump-table): Set + to nil by default. + + Don't merge to master, the bug is already fixed there. + +2019-06-01 Noam Postavsky + + Allow macros autoloaded as functions during bytecomp (Bug#36022) + + * lisp/emacs-lisp/bytecomp.el (byte-compile-callargs-warn): Don't pass + symbols which don't have a known definition to + byte-compile--function-signature, it fails to compile code which + previously compiled successfully (for example, gnus.el until + 2019-06-01 "* lisp/gnus/gnus.el: Mark autoloaded macros as such" which + autoloads some macros as if they were functions). + +2019-06-01 Glenn Morris + + * lisp/gnus/gnus.el: Mark autoloaded macros as such. + + This avoids a build failure. + +2019-06-01 Eli Zaretskii + + Speed up redisplay of HELLO + + * etc/HELLO: Set 'inhibit-compacting-font-caches' non-nil + locally. (Bug#36032) + + * lisp/files.el: Add 'inhibit-compacting-font-caches' to the + list of built-in variables for which we set up + 'safe-local-variable' properties. + +2019-06-01 Eli Zaretskii + + Improve documentation of 'safe-local-variable' property + + * doc/lispref/variables.texi (File Local Variables): Document + how to define 'safe-local-variable' properties for built-in + variables. + +2019-05-31 Stefan Monnier + + * lisp/emacs-lisp/package.el: Obey buffer-file-coding-system (bug#35739) + + `url-insert-file-contents` saves in buffer-file-coding-system + the coding-system used to decode the contents. Preserve this + as the contents is moved from buffer to string to buffer, and use + it when saving the contents to file, so as to try and better preserve + the original byte sequence. + + (package--buffer-string, package--cs): New functions. + (package--check-signature): Encode `string` if a coding-system + was specified in buffer-file-coding-system. + (package--download-one-archive, package-install-from-archive): + Obey and preserve the buffer-file-coding-system if specified. + + Do not merge. + +2019-05-31 Noam Postavsky + + Warn about wrong number of args for subrs (Bug#35767) + + * lisp/emacs-lisp/bytecomp.el (byte-compile-callargs-warn): Don't + assume byte-compile-fdefinition will return non-nil. + * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-warn-wrong-args) + (bytecomp-warn-wrong-args-subr): New tests. + +2019-05-31 Noam Postavsky + + Use plain symbols for eieio type descriptors (Bug#29220) + + Since Emacs 26, eieio objects use a class record (with circular + references) as the type descriptor of the object record. This causes + problems when reading back an object from a string, because the class + record is not `eq' to the canonical one (which means that read objects + don't satisfy the foo-p predicate). + * lisp/emacs-lisp/eieio.el (make-instance): As a (partial) fix, set + the record's type descriptor to a plain symbol for the type descriptor + when eieio-backward-compatibility is non-nil (the default). + * lisp/emacs-lisp/eieio-core.el (eieio--object-class): Call + eieio--class-object on the type tag when eieio-backward-compatibility + is non-nil. + (eieio-object-p): Use eieio--object-class instead of + eieio--object-class-tag. + * test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el + (eieio-test-persist-hash-and-vector) + (eieio-test-persist-interior-lists): Make into functions. + (eieio-persist-hash-and-vector-backward-compatibility) + (eieio-persist-hash-and-vector-no-backward-compatibility) + (eieio-test-persist-interior-lists-backward-compatibility) + (eieio-test-persist-interior-lists-no-backward-compatibility): New + tests which call them, eieio-backward-compatibility let-bound. + +2019-05-31 Paul Eggert + + Pacify GCC 9 -Wredundant-decls + + * src/gmalloc.c (_fraghead) [!HYBRID_MALLOC]: + Make it static in this case, too. This avoids having both + ‘extern struct list _fraghead[];’ and + ‘static struct list _fraghead[BLOCKLOG];’, which + GCC 9 complains about. + +2019-05-31 Paul Eggert + + Pacify librsvg 2.45.1 and later + + * src/image.c (svg_load_image): Pacify librsvg 2.45.1 and later, + and add a FIXME comment about the deprecated librsvg functions. + Backport from master. + +2019-05-31 Paul Eggert + + Simplify xd_signature to pacify GCC 9 + + * src/dbusbind.c (xd_signature): Use simpler way to set up + the subsignature. This also pacifies GCC 9 on Fedora 30 x86-64. + Backport from master. + +2019-05-31 Paul Eggert + + Pacify GCC when compiling unexelf.c on Fedora 30 + + * src/unexelf.c (unexec): Pacify GCC 9. + +2019-05-31 Paul Eggert + + Suppress GCC 9 “no longer supported” messages + + * m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Remove -Wchkp. + This suppresses a boatload of warnings of the form + “gcc: warning: switch ‘-Wchkp’ is no longer supported”. + when using GCC 9. Do not merge to master. + +2019-05-30 Stefan Kangas + + Fix docstring of bookmark-get-bookmark + + * lisp/bookmark.el (bookmark-get-bookmark): Document optional + argument NOERROR. (bug#20148) + +2019-05-26 Noam Postavsky + + Avoid infloop in read-multiple-choice (Bug#32257) + + * lisp/emacs-lisp/rmc.el (read-multiple-choice): When `read-char' + signals an error "Non-character input-event", call `read-event' to + take the non-character event out of the queue. Don't merge to master, + we just use `read-event' directly there, rather than this solution + which relies a particular error message. + +2019-05-25 Eli Zaretskii + + Improve documentation of decoding into a unibyte buffer + + * doc/lispref/nonascii.texi (Explicit Encoding): Document what + happens when DESTINATION of decoding is a unibyte buffer. + + * src/coding.c (Fdecode_coding_region) + (Fdecode_coding_string): Document what happens if DESTINATION + is a unibyte buffer. + +2019-05-25 Mauro Aranda + + Remove redundants "See" before @xref or @pxref (Bug#35793) + + * doc/lispref/control.texi (Control Structures): + * doc/lispref/modes.texi (Search-based Fontification): + * doc/misc/cc-mode.texi (Filling and Line Breaking Commands) + (Auto-newline Insertion, Other Special Indentations): + * doc/misc/dbus.texi (Errors and Events): + * doc/misc/dired-x.texi (Find File At Point): + * doc/misc/eudc.texi (Display of Query Results, Inline Query Expansion): + * doc/misc/gnus-faq.texi (FAQ 3-11): + * doc/misc/gnus.texi (Group Parameters, Posting Styles) + (Spam Package Introduction): + * doc/misc/org.texi (LaTeX fragments, Previewing LaTeX fragments): + * doc/misc/reftex.texi (Commands): + Remove redundant "See" before cross references. + * doc/lispref/functions.texi (Function Safety): Redundant "see" is in + ignored text, but remove it anyway. + * doc/lispref/positions.texi (Skipping Characters): Remove redundant + "See" before cross references. Change @xref to @pxref, which is + more suitable when at the end of a sentence. + + Most of the redundants "See" found by Noam Postavsky. + +2019-05-23 Dario Gjorgjevski + + Fix customization type of recentf-max-saved-items + + Change the customization type of recentf-max-saved-items to include + nil, as it is an allowed value (Bug#35771). + * lisp/recentf.el (recentf-max-saved-items): Change the customization + type in the defcustom. + +2019-05-22 Tom Levy (tiny change) + + Fix a typo in ELisp manual + + * doc/lispref/sequences.texi (Sequence Functions): Fix a typo. + (Bug#35817) + +2019-05-21 Noam Postavsky + + Add option to disable help completion autoloading (Bug#28607) + + * lisp/help-fns.el (help-enable-completion-auto-load): New option. + (help--symbol-completion-table): Consult it. + * doc/emacs/building.texi (Lisp Libraries): Document it. + * etc/NEWS: Announce it. + * doc/lispref/loading.texi (Autoload by Prefix): New section. + (Autoload): Reference it. + +2019-05-20 Noam Postavsky + + Don't segfault on force-window-update of deleted window + + * src/window.c (Fforce_window_update): Do nothing for deleted + windows (Bug#35784). + +2019-05-20 Mauro Aranda + + Fix typo in ELisp manual + + * doc/lispref/variables.texi (Directory Local Variables): Fix typo in + dir-locals-set-class-variables description. (Bug#35799) + +2019-05-20 Mauro Aranda + + Remove repeated function call in picture.el + + * lisp/textmodes/picture.el (picture-mode-map): Remove repeated + define-key call. (Bug#35772) + +2019-05-19 Basil L. Contovounesios + + Fix Hideshow key binding typo in Emacs manual + + * doc/emacs/programs.texi (Hideshow): Add missing function and key + index entries. Fix hs-toggle-hiding binding typo. (bug#35798) + +2019-05-17 Eric Abrahamsen + + Backport: Fix name of gnus-summary-sort-by-mark(s) + + * lisp/gnus/gnus-sum.el (gnus-summary-sort-by-marks): Needs the + "s", according to docs and keymap both. (bug#35765) + + (cherry picked from commit 13248f7444630508cfc3b78a07e8d96613af11c8) + +2019-05-17 Eli Zaretskii + + Remove from docs references to obsolete MULE variables + + * src/search.c (search_buffer): Remove obsolete text from a + comment. + * src/fns.c (Fstring_make_unibyte): Remove obsolete text from + a doc string. + +2019-05-17 Konstantin Kharlamov + + Do potentially destructive operations in prepare-commit-msg + + * build-aux/git-hooks/prepare-commit-msg: If someone occasionally puts + Signed-off line, it will likely get there through -s option of git. + Exploit this fact to abort before a user got a chance to type commit + message. (Bug#35368) + +2019-05-14 Paul Eggert + + Backport: fix broken build on m68k + + The GCC + valgrind fix caused the m68k build to fail (Bug#35711). + Simplify string allocation a bit to make similar problems less + likely in the future. + * src/alloc.c (sdata, SDATA_NBYTES, SDATA_DATA) [GC_CHECK_STRING_BYTES]: + Use the same implementation as with !GC_CHECK_STRING_BYTES, + as the special case is no longer needed. + (SDATA_ALIGN): New constant. + (SDATA_SIZE): Remove this macro, replacing with ... + (sdata_size): ... this new function. All uses changed. + Properly account for sizes and alignments even in the m68k case, + and even if GC_CHECK_STRING_BYTES is not defined. + +2019-05-14 Noam Postavsky + + Handle GNUTLS_E_AGAIN in emacs_gnutls_read (Bug#34341) + + Don't merge to master, this has already been fixed there by 2019-01-15 + "Fix unlikely races with GnuTLS, datagrams". + * src/gnutls.c (emacs_gnutls_read): Similar to emacs_gnutls_write, + when gnutls_record_recv returns GNUTLS_E_AGAIN set errno to EGAIN. + +2019-05-12 Neil Roberts + + Let dir locals for more specific modes override those from less + + The list of dir local variables to apply is now sorted by the number + of parent modes of the mode used as the key in the association list. + That way when the variables are applied in order the variables from + more specific modes will override those from less specific modes. + + If there are directory entries in the list then they are sorted in + order of name length. The list of modes for that dir is then + recursively sorted with the same mechanism. That way variables tied + to a particular subdirectory override those in in a parent directory. + + Previously the behaviour didn’t seem to be well defined anyway and was + dependent on the order they appeared in the file. However this order + was changed in version 26.1 and it probably also depended on the + number of dir-local files that are merged. + + Bug#33400 + + * lisp/files.el (dir-locals-get-sort-score, dir-locals-sort-variables) + (dir-locals-read-from-dir): Sort the dir locals so that more precise + modes and directory-specific entries have override lesser ones. + * doc/emacs/custom.texi (Directory Variables): Document the priority. + +2019-05-11 Eli Zaretskii + + Improve documentation of Hexl mode + + * doc/emacs/misc.texi (Editing Binary Files): Clarify + "insertion". Improve wording. Add a few Hexl commands. + (Bug#35580) + +2019-05-09 Alan Mackenzie + + Fix description of (move-to-column t) when column is inside a tab + + This fixes bug #35647. State that when indent-tabs-mode is non-nil, spaces + are inserted before the tab rather than the tab being replaced by spaces. + + * doc/lispref/text.texi (columns) + * src/indent.c (move-to-column): Make the above documentation amendment. + +2019-05-09 Noam Postavsky + + Recognize single quote attribute values in nxml and sgml (Bug#35381) + + * lisp/textmodes/sgml-mode.el (sgml-specials): Add single quote. + (sgml-syntax-propertize-rules): Handle single quote. + * test/lisp/nxml/nxml-mode-tests.el (nxml-mode-font-lock-quotes): New + test. + * test/lisp/textmodes/sgml-mode-tests.el + (sgml-delete-tag-bug-8203-should-not-delete-apostrophe): Now passes. + +2019-05-09 Noam Postavsky + + Disable extra display of in nxml-mode (Bug#32897) + + * lisp/nxml/nxml-mode.el (nxml-char-ref-display-extra): Don't put + display for the newline, it makes the indentation look wrong. + +2019-05-09 Noam Postavsky + + Fix nxml-get-inside (Bug#32003) + + The change from 2016-01-16 "lisp/nxml: Use syntax-tables for comments" + made nxml-get-inside return non-nil for any string or comment, + including attribute strings. This caused incorrect and therefore + indentation. + * lisp/nxml/nxml-rap.el: Update commentary to reflect changes to + nxml-mode parsing. + (nxml-get-inside): Only return non-nil when inside comments and + generic strings, not normal quote-delimited strings. + * test/lisp/nxml/nxml-mode-tests.el: New tests. + +2019-05-08 Eli Zaretskii + + Fix positioning client buffer as instructed by emacsclient + + * lisp/server.el (server-switch-buffer): Let-bind + switch-to-buffer-preserve-window-point to nil when switching + to the client buffer, when the client requested a specific + position. (Bug#35602) + +2019-05-08 Stefan Monnier + + * etc/package-keyring.gpg: Add the 2019 key (backport) + +2019-05-08 Vitalie Spinu + + Fix incorrect cloning of eieio-instance-inheritor objects (Bug#34840) + + * lisp/emacs-lisp/eieio-base.el (clone): Unbound slots of + eieio-instance-inheritor objects as documented in the docs string + and implemented in the original eieio implementation. + +2019-05-07 Vitalie Spinu + + Fix cloning of eieio-named objects (Bug#22840) + + * lisp/emacs-lisp/eieio-base.el (clone): Correctly set the name of the + cloned objects from eieio-named instances. + +2019-05-07 Basil L. Contovounesios + + Fix ibuffer-unmark-backward synopsis (bug#35572) + + * lisp/ibuffer.el (ibuffer-mode): Fix synopsis of + ibuffer-unmark-backward along with other minor copy-edits. + +2019-05-05 Noam Postavsky + + Clarify handling of long options (Bug#24949) + + * doc/emacs/cmdargs.texi (Emacs Invocation): Note that space can be + used instead of "=" only if an option requires an argument. + +2019-05-04 Eli Zaretskii + + Improve documentation of the daemon and emacsclient + + * doc/emacs/misc.texi (emacsclient Options): + * doc/emacs/cmdargs.texi (Initial Options): Document that + using --daemon=NAME will need to specify the same NAME when + invoking 'emacscilent'. (Bug#35547) + +2019-05-02 Noam Postavsky + + * etc/NEWS.24: Belatedly announce delete-consecutive-dups. + +2019-05-01 Glenn Morris + + * admin/update_autogen: Handle git worktree. + +2019-05-01 Noam Postavsky + + Update process filter example (Bug#35044) + + * doc/lispref/processes.texi (Filter Functions): Use + insert-before-markers in the "ordinary" filter example, like + internal-default-process-filter does. + +2019-04-29 YAMAMOTO Mitsuharu + + * src/macfont.m (macfont_shape): Use convenient LGLYPH_NEW. + +2019-04-28 Noam Postavsky + + Recommend using font-lock-face over face (Bug#35044) + + * doc/lispref/modes.texi (Precalculated Fontification): Explain + advantages of using font-lock-face over face. + +2019-04-28 Noam Postavsky + + Check if mouse_face_overlay was deleted (Bug#35273) + + * src/xdisp.c (note_mouse_highlight): Check if the mouse_face_overlay + actually points to a buffer, before calling + mouse_face_overlay_overlaps on it. + +2019-04-27 Paul Eggert + + Port to platforms where tputs is in libtinfow + + * configure.ac (tputs_library): Also try tinfow, ncursesw (Bug#33977). + + (cherry picked from commit a3d52b3057c98bce581bc94912ef3ced6fad6f14) + +2019-04-23 Glenn Morris + + * admin/admin.el (set-version): Check for increase in version length, + rather than a .50 version. + +2019-04-22 Noam Postavsky + + Be more careful about indent-sexp going over eol (Bug#35286) + + * lisp/emacs-lisp/lisp-mode.el (indent-sexp): Only go over multiple + sexps if the end of line is within a sexp. + * test/lisp/emacs-lisp/lisp-mode-tests.el + (indent-sexp-stop-before-eol-comment) + (indent-sexp-stop-before-eol-non-lisp): New tests. + +2019-04-22 Basil L. Contovounesios + + Backport: Improve pure and side-effect-free docs + + For discussion, see thread starting at: + https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg00316.html + * doc/lispref/customize.texi (Composite Types): Do not overspecify + :match-alternatives predicates. + * doc/lispref/eval.texi (Intro Eval): Anchor definition of "side + effect" for cross-referencing... + * doc/lispref/functions.texi (What Is a Function): ...from here. + Define what a pure function is. + * doc/lispref/internals.texi (Writing Emacs Primitives): Describe + currently preferred approach to marking primitives as pure and + side-effect-free. + * doc/lispref/symbols.texi (Standard Properties): Expand description + of pure and side-effect-free properties. + + (cherry picked from commit 4430a9b54fca266e48d0eb8b72d83706910f10b8) + +2019-04-22 Basil L. Contovounesios + + Backport: Avoid using obsolete indent-relative-maybe + + * lisp/electric.el (electric-indent-functions-without-reindent): + * lisp/indent.el (indent-according-to-mode): Check for + indent-relative-first-indent-point in addition to its obsolete alias + indent-relative-maybe. + * lisp/obsolete/vi.el (vi-com-map): Use + indent-relative-first-indent-point in place of its obsolete alias + indent-relative-maybe. + + (cherry picked from commit 0e468a620458fecd003c396050aa6deb722982c1) + +2019-04-21 Mauro Aranda + + Avoid false positives and false negatives of Info-quoted face + + * lisp/info.el (Info-mode-font-lock-keywords): Modify the regexp, for + matching single quotes of opening single quote and closing single + quote, and avoid matching text followed by a curly quote when it is + not quoting. (Bug#35202) + +2019-04-21 Eli Zaretskii + + Fix markup related to quoting in Info + + * doc/misc/sc.texi (Citations): Fix markup of '>'. + * doc/misc/mh-e.texi (Speedbar): Fix markup in a @table. + * doc/misc/calc.texi (Yacas Language Mode): Fix a typo. + * doc/emacs/mark.texi (Setting Mark): Remove duplicate + quoting. (Bug#35202) + +2019-04-21 Noam Postavsky + + Use pkg-config to find lcms2 CFLAGS and LIBS (Bug#30346) + + * configure.ac: Use EMACS_CHECK_MODULES fors LCMS2 rather than + AC_SEARCH_LIBS. + * src/Makefile.in: Get LCMS2_LIBS and LCMS2_CFLAGS from configure, + instead of just LIBLCMS2. + + (cherry picked from commit cb3863370cbe574810f796726faa39ba0de0a429) + +2019-04-20 Glenn Morris + + Add a package: line to c-submit-bug-report. + + * lisp/progmodes/cc-mode.el (c-submit-bug-report): + Add a Package: line for mail clients that do not support X- headers. + +2019-04-20 Glenn Morris + + * admin/admin.el (set-version): Add NEWS headers for a .50 version. + +2019-04-20 Eli Zaretskii + + Backport doc improvement in ELisp manual + + * doc/lispref/processes.texi (Accepting Output): Backport: + document how do avoid race conditions while waiting for all of + the process's output to arrive. + +2019-04-19 Noam Postavsky + + Document insert-image-file's return value (Bug#32978) + + * lisp/image-file.el (insert-image-file): Document return value. + +2019-04-19 Braun Gábor (tiny change) + + Autoload cua-toggle-rectangle-mark (Bug#34947) + + * lisp/emulation/cua-base.el (cua-toggle-rectangle-mark): Autoload it. + Library cua-base.el binds cua-toggle-rectangle-mark to a key in the + :set function in (defcustom cua-rectangle-mark-key ...), so it should + ensure that the command is defined. + +2019-04-19 Noam Postavsky + + Tell xclip not to expect job-control under eshell (Bug#35257) + + * lisp/eshell/esh-proc.el (eshell-needs-pipe): Add "xclip" and other + programs that xclip.el (in GNU ELPA) calls with + `process-connection-type' bound to nil. + +2019-04-18 Basil L. Contovounesios + + Fix off-by-one-link error in image--set-property + + * lisp/image.el (image--set-property): Ensure new value is set even + in the unlikely case that the plist is empty. Fix off-by-one-link + error when deleting a property. (bug#35285) + * test/lisp/image-tests.el: New file. + (image--set-property): New test. + +2019-04-16 Glenn Morris + + * admin/admin.el (make-manuals-dist--1): + Update for incompatible copy-file change re "directories". + +2019-04-16 Robert Pluim + + Document some compilation-mode faces + + * doc/emacs/building.texi (Compilation Mode): Describe faces + available to affect appearance of compilation-mode buffers. + +2019-04-16 Eli Zaretskii + + Mention the assignment form in "Copyright Assignment" + + * doc/emacs/trouble.texi (Copyright Assignment): Mention the + copyright assignment form explicitly. Suggested by Konstantin + Kharlamov . + +2019-04-16 Eli Zaretskii + + Fix confusing wording in the user manual + + * doc/emacs/maintaining.texi (VC Undo): Remove a potentially + inaccurate, outdated, and/or confusing sentence. (Bug#35290) + +2019-04-15 Eli Zaretskii + + Fix the MSDOS build when running under CWSDPMI + + * src/msdos.c (the_only_tty_output): Define. + * src/msdos.h (the_only_tty_output): Declare. + * src/frame.c (make_terminal_frame) [MSDOS]: + * src/dispnew.c (init_display) [MSDOS]: Set up + f->output_data.tty pointer using the_only_tty_output, before + dereferencing the pointer. This prevents crashes with DPMI + servers that provide NULL pointer protection. + +2019-04-15 Stefan Monnier + + * lisp/progmodes/python.el: Be more careful about temp file removal + + (python-shell-prompt-detect): Use unwind-protect to try and not leave + file behind in case of error. + +2019-04-14 Alexander Gramiak + + Backport: Plug memory leak in GTK x-display-monitor-attributes-list + + * src/frame.c (free_monitors) [USE_GTK]: Define in the GTK case as + well. + + * src/xfns.c (x-display-monitor-attributes-list) [USE_GTK]: Plug + memory leak. Use dupstring over xstrdup as gdk_monitor_get_model may + return NULL. + +2019-04-14 Alexander Gramiak + + Backport: * lisp/frame.el (frame--size-history): Fix infloop. (Bug#35272) + +2019-04-14 Robert Pluim + + Downcase charset + + RFC 2046 specifies that the charset parameter is case-insensitive. + + * lisp/gnus/gnus-icalendar.el (gnus-icalendar-with-decoded-handle): + Downcase charset. Suggested by Christophe TROESTLER + . (Bug#35265). + +2019-04-14 Phillip Lord + + Update for Emacs-26 + + * nt/README.W32: Update details about packaging which changed for + Emacs-26. + +2019-04-12 Eli Zaretskii + + * doc/lispref/display.texi (Showing Images): Fix a typo. (Bug#35240 + +2019-04-11 Nicolas Petton + + Bump Emacs version to 26.2 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version to 26.2. + +2019-04-11 Nicolas Petton + + * etc/HISTORY: Update for Emacs 26.2 release. + + * etc/AUTHORS: Update. + 2019-04-11 Eli Zaretskii Improve documentation of 'read-command' @@ -65091,7 +65967,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit 85829363f728c410e33ffdc3839202977b2115cc (inclusive). +commit eca2677b1db94a126b6d2871526a1d6fce98353d (inclusive). See ChangeLog.1 for earlier changes. ;; Local Variables: From 2b705cd1193eb09be6e993de04936baa45200349 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Wed, 12 Jun 2019 13:00:06 +0200 Subject: [PATCH 467/567] * etc/AUTHORS: Update. --- etc/AUTHORS | 77 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 30 deletions(-) diff --git a/etc/AUTHORS b/etc/AUTHORS index 2f7e01575bd9..3f60303a459a 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -128,7 +128,7 @@ Alexander Gramiak: changed faces.el display-line-numbers.el xt-mouse.el CTAGS.good ETAGS.good_1 ETAGS.good_2 ETAGS.good_3 ETAGS.good_4 ETAGS.good_5 ETAGS.good_6 Makefile TAGTEST.EL cl-lib-tests.el cl-macs-tests.el cus-start.el custom.texi display.texi erc-list.el - ert-tests.el ert.el etags.c and 16 other files + ert-tests.el ert.el etags.c and 18 other files Alexander Haeckel: changed getset.el @@ -269,7 +269,7 @@ Andreas Rottmann: changed emacsclient.1 emacsclient.c misc.texi server.el Andreas Schwab: changed configure.ac lisp.h process.c xdisp.c alloc.c coding.c Makefile.in files.el fileio.c keyboard.c lread.c xterm.c fns.c editfns.c emacs.c src/Makefile.in print.c eval.c font.c xfns.c sysdep.c - and 639 other files + and 640 other files Andreas Seltenreich: changed nnweb.el gnus.texi message.el gnus-sum.el gnus.el nnslashdot.el gnus-srvr.el gnus-util.el mm-url.el mm-uu.el @@ -440,10 +440,11 @@ Bartosz Duszel: changed allout.el bib-mode.el cc-cmds.el hexl.el icon.el sendmail.el ses.el simple.el verilog-mode.el vi.el vip.el viper-cmd.el xscheme.el -Basil L. Contovounesios: changed simple.el message.el sequences.texi - bibtex.el css-mode-tests.el css-mode.el customize.texi display.texi - gnus-art.el json-tests.el json.el lists.texi man.el modes.texi - newcomment.el rcirc.el shr-color.el text.texi url-handlers.el +Basil L. Contovounesios: changed simple.el message.el customize.texi + sequences.texi bibtex.el css-mode-tests.el css-mode.el display.texi + electric.el eval.texi functions.texi gnus-art.el ibuffer.el + image-tests.el image.el indent.el internals.texi json-tests.el json.el + lists.texi man.el and 10 other files Bastian Beischer: changed include.el mru-bookmark.el refs.el semantic/complete.el senator.el @@ -577,6 +578,8 @@ Brad Howes: changed gnus-demon.el Brandon Craig Rhodes: changed flyspell.el +Braun Gábor: changed cua-base.el + Brendan Kehoe: changed hpux9.h Brent Goodrick: changed abbrev.el @@ -990,6 +993,8 @@ Danny Siu: changed gnus-sum.el gnus-picon.el nndoc.el nnimap.el smiley.el Dan Rosenberg: changed movemail.c +Dario Gjorgjevski: changed recentf.el + Darren Hoo: changed db-find.el db.el gnus-art.el isearch.el man.el nsmenu.m startup.el @@ -1354,8 +1359,8 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c] tty-colors.el and changed xdisp.c msdos.c w32.c display.texi w32fns.c simple.el files.el fileio.c keyboard.c w32proc.c files.texi w32term.c text.texi - dispnew.c emacs.c frames.texi dispextern.h lisp.h window.c process.c - term.c and 1125 other files + dispnew.c emacs.c frames.texi lisp.h dispextern.h window.c process.c + term.c and 1126 other files Emanuele Giaquinta: changed configure.ac rxvt.el charset.c etags.c fontset.c frame.el gnus-faq.texi loadup.el lread.c sh-script.el @@ -1377,10 +1382,10 @@ Era Eriksson: changed bibtex.el dired.el json.el ses.el ses.texi shell.el tramp.el tramp.texi Eric Abrahamsen: changed eieio-base.el registry.el nnimap.el - gnus-registry.el files.el files.texi windows.texi eieio-test-persist.el - eieio.el gnus-start.el gnus-sum.el gnus.texi nnir.el buffers.texi - checkdoc.el files-tests.el gnus-bcklg.el gnus-group.el nnmairix.el - org.el org.texi and 4 other files + gnus-registry.el files.el files.texi gnus-sum.el windows.texi + eieio-test-persist.el eieio.el gnus-start.el gnus.texi nnir.el + buffers.texi checkdoc.el files-tests.el gnus-bcklg.el gnus-group.el + nnmairix.el org.el org.texi and 4 other files Eric Bélanger: changed image.c @@ -2508,7 +2513,7 @@ Juanma Barranquero: wrote emacs-lock.el frameset.el keymap-tests.el and changed subr.el desktop.el w32fns.c server.el emacsclient.c simple.el faces.el files.el bs.el help-fns.el w32term.c org.el xdisp.c keyboard.c w32.c buffer.c ido.el image.c window.c allout.el process.c - and 1134 other files + and 1135 other files Juan Pechiar: wrote ob-mscgen.el and changed ob-octave.el @@ -2804,6 +2809,8 @@ Koichi Arakawa: changed w32proc.c Konrad Hinsen: wrote org-eshell.el and changed ob-python.el +Konstantin Kharlamov: changed prepare-commit-msg + Konstantin Kliakhandler: changed org-agenda.el Konstantin Novitsky: changed progmodes/python.el @@ -3272,7 +3279,10 @@ Matt Simmons: changed message.el Matt Swift: changed dired.el editfns.c lisp-mode.el mm-decode.el outline.el progmodes/compile.el rx.el simple.el startup.el -Mauro Aranda: changed autorevert.el files.texi os.texi +Mauro Aranda: changed autorevert.el cc-mode.texi control.texi dbus.texi + dired-x.texi eudc.texi files.texi functions.texi gnus-faq.texi + gnus.texi info.el modes.texi org.texi os.texi picture.el positions.texi + reftex.texi variables.texi Maxime Edouard Robert Froumentin: changed gnus-art.el mml.el @@ -3539,6 +3549,8 @@ Neal Ziring: co-wrote vi.el (public domain) Neil Mager: wrote appt.el +Neil Roberts: changed custom.texi files.el + Neil W. Van Dyke: wrote webjump.el Nelson H. F. Beebe: changed configure.ac @@ -3601,8 +3613,8 @@ Nicolas Petton: wrote map-tests.el map.el seq-tests.el seq.el thunk-tests.el thunk.el and co-wrote auth-source-pass.el auth-source-tests.el subr-tests.el and changed README configure.ac sed2v2.inp sequences.texi authors.el - README.W32 emacs.png emacs23.png arc-mode.el cl-extra.el emacs.svg - manoj-dark-theme.el Emacs.icns HISTORY Makefile.in auth-source.el + README.W32 emacs.png emacs23.png HISTORY arc-mode.el cl-extra.el + emacs.svg manoj-dark-theme.el Emacs.icns Makefile.in auth-source.el emacs.ico fns.c make-tarball.txt obarray-tests.el obarray.el and 35 other files @@ -3648,10 +3660,10 @@ and changed rsz-mini.el emacs-buffer.gdb comint.el files.el Makefile Noah Lavine: changed tramp.el Noam Postavsky: changed lisp-mode.el progmodes/python.el xdisp.c - cl-macs.el lisp-mode-tests.el emacs-lisp/debug.el data.c simple.el - term.el ert.el subr.el help-fns.el bytecomp.el cl-print.el - elisp-mode.el eval.c ffap.el modes.texi search.c sh-script.el - cl-preloaded.el and 249 other files + lisp-mode-tests.el cl-macs.el emacs-lisp/debug.el bytecomp.el data.c + simple.el term.el ert.el help-fns.el subr.el modes.texi processes.texi + cl-print.el elisp-mode.el eval.c ffap.el search.c sh-script.el + and 259 other files Nobuyoshi Nakada: co-wrote ruby-mode.el @@ -3753,7 +3765,7 @@ and changed imenu.el make-mode.el Paul Eggert: wrote rcs2log and co-wrote cal-dst.el and changed lisp.h configure.ac alloc.c process.c fileio.c editfns.c - xdisp.c sysdep.c keyboard.c image.c emacs.c xterm.c data.c lread.c + xdisp.c sysdep.c image.c keyboard.c emacs.c xterm.c data.c lread.c fns.c callproc.c Makefile.in gnulib.mk eval.c buffer.c frame.c and 1608 other files @@ -3939,10 +3951,10 @@ and changed emacs-module.c eval.c bytecomp.el nsterm.m Phillip Lord: wrote ps-print-tests.el and changed lisp/Makefile.in undo.c simple.el test/Makefile.in Makefile - Makefile.in viper-cmd.el elisp-mode-tests.el keyboard.c ldefs-clean.el - loadup.el autoload.el automated/Makefile.in build-zips.sh cmds.c - dired.el eieio-tests.el fileio.c htmlfontify.el - make-test-deps.emacs-lisp reftex-tests.el and 168 other files + Makefile.in viper-cmd.el README.W32 elisp-mode-tests.el keyboard.c + ldefs-clean.el loadup.el autoload.el automated/Makefile.in + build-zips.sh cmds.c dired.el eieio-tests.el fileio.c htmlfontify.el + make-test-deps.emacs-lisp and 168 other files Phil Sainty: changed term.el derived.el easy-mmode.el lisp.el package.el progmodes/grep.el simple.el subword.el @@ -4162,8 +4174,9 @@ Robert P. Goldman: changed org.texi ob-exp.el org.el ox-latex.el Robert Pluim: changed gtkutil.c configure.ac files.texi dired-x.texi ftfont.c misc.texi process.c vc-git.el xfns.c xterm.c bindings.el - desktop.el efaq.texi epa.texi filelock.c font.c ftcrfont.c - gnus-agent.el gnus-demon.el gnus.texi gtkutil.h and 19 other files + building.texi desktop.el efaq.texi epa.texi filelock.c font.c + ftcrfont.c gnus-agent.el gnus-demon.el gnus-icalendar.el + and 21 other files Robert Thorpe: changed cus-start.el indent.el @@ -4499,6 +4512,8 @@ Stefan Bruda: co-wrote prolog.el Stefan Guath: changed find-dired.el +Stefan Kangas: changed bookmark.el + Stefan Merten: co-wrote rst.el Stefan Monnier: wrote bibtex-style.el bytecomp-tests.el bzrmerge.el @@ -4877,6 +4892,8 @@ Tom Hageman: changed etags.c Tom Houlder: wrote mantemp.el +Tom Levy: changed sequences.texi + Tommi Vainikainen: changed gnus-sum.el message.el mml-sec.el Tomohiko Morioka: co-wrote mm-bodies.el mm-decode.el mm-encode.el @@ -5045,8 +5062,8 @@ and changed ps-prin1.ps ps-bdf.el ps-prin0.ps blank-mode.el ps-prin3.ps easymenu.el loading.texi menu-bar.el misc.texi progmodes/compile.el ps-print-def.el ps-vars.el -Vitalie Spinu: changed comint.el message.el ob-R.el ob-core.el - ob-tangle.el subr.el +Vitalie Spinu: changed comint.el eieio-base.el message.el ob-R.el + ob-core.el ob-tangle.el subr.el Vitaly Takmazov: changed emacs-x64.manifest emacs-x86.manifest @@ -5190,7 +5207,7 @@ Yair F: changed hebrew.el Yamamoto Mitsuharu: wrote uvs.el and changed macterm.c macfns.c mac-win.el mac.c macterm.h macmenu.c xterm.c macgui.h image.c xdisp.c keyboard.c macselect.c w32term.c - src/Makefile.in unexmacosx.c xfns.c configure.ac emacs.c macfont.m + macfont.m src/Makefile.in unexmacosx.c xfns.c configure.ac emacs.c darwin.h dispnew.c and 97 other files Yann Dirson: changed imenu.el From fb1c96661874bcdee064b05ac586666f46ea9c35 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Wed, 12 Jun 2019 13:02:08 +0200 Subject: [PATCH 468/567] Bump Emacs version to 26.2.90 * README: * configure.ac: * msdos/sed2v2.inp: * nt/README.W32: Bump Emacs version. --- README | 2 +- configure.ac | 2 +- msdos/sed2v2.inp | 2 +- nt/README.W32 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README b/README index 2f03170418f0..b1e0111028d7 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 26.2.50 of GNU Emacs, the extensible, +This directory tree holds version 26.2.90 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU diff --git a/configure.ac b/configure.ac index 58a3ea109130..aead404b5fd4 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ(2.65) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT(GNU Emacs, 26.2.50, bug-gnu-emacs@gnu.org) +AC_INIT(GNU Emacs, 26.2.90, bug-gnu-emacs@gnu.org) dnl Set emacs_config_options to the options of 'configure', quoted for the shell, dnl and then quoted again for a C string. Separate options with spaces. diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 26d0a77b0589..886fcb1747a7 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -66,7 +66,7 @@ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ -/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "26.2.50"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "26.2.90"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/README.W32 b/nt/README.W32 index 79f574186239..501ad45f739d 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 26.2.50 for MS-Windows + Emacs version 26.2.90 for MS-Windows This README file describes how to set up and run a precompiled distribution of the latest version of GNU Emacs for MS-Windows. You From 9473231e0f0e96752447e76217ce8938ddeb00c7 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Wed, 12 Jun 2019 13:56:27 +0200 Subject: [PATCH 469/567] ; * lisp/ldefs-boot.el: Update. --- lisp/ldefs-boot.el | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 405fe362f152..12c7d473f6e8 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -38763,10 +38763,20 @@ Zone out, completely. ;;;;;; "eshell/em-term.el" "eshell/em-tramp.el" "eshell/em-unix.el" ;;;;;; "eshell/em-xtra.el" "facemenu.el" "faces.el" "files.el" "font-core.el" ;;;;;; "font-lock.el" "format.el" "frame.el" "help.el" "hfy-cmap.el" -;;;;;; "ibuf-ext.el" "indent.el" "international/characters.el" "international/charscript.el" -;;;;;; "international/cp51932.el" "international/eucjp-ms.el" "international/mule-cmds.el" -;;;;;; "international/mule-conf.el" "international/mule.el" "isearch.el" -;;;;;; "jit-lock.el" "jka-cmpr-hook.el" "language/burmese.el" "language/cham.el" +;;;;;; "ibuf-ext.el" "indent.el" "international/characters.el" "international/charprop.el" +;;;;;; "international/charscript.el" "international/cp51932.el" +;;;;;; "international/eucjp-ms.el" "international/mule-cmds.el" +;;;;;; "international/mule-conf.el" "international/mule.el" "international/uni-bidi.el" +;;;;;; "international/uni-brackets.el" "international/uni-category.el" +;;;;;; "international/uni-combining.el" "international/uni-comment.el" +;;;;;; "international/uni-decimal.el" "international/uni-decomposition.el" +;;;;;; "international/uni-digit.el" "international/uni-lowercase.el" +;;;;;; "international/uni-mirrored.el" "international/uni-name.el" +;;;;;; "international/uni-numeric.el" "international/uni-old-name.el" +;;;;;; "international/uni-special-lowercase.el" "international/uni-special-titlecase.el" +;;;;;; "international/uni-special-uppercase.el" "international/uni-titlecase.el" +;;;;;; "international/uni-uppercase.el" "isearch.el" "jit-lock.el" +;;;;;; "jka-cmpr-hook.el" "language/burmese.el" "language/cham.el" ;;;;;; "language/chinese.el" "language/cyrillic.el" "language/czech.el" ;;;;;; "language/english.el" "language/ethiopic.el" "language/european.el" ;;;;;; "language/georgian.el" "language/greek.el" "language/hebrew.el" From 62423246497760a5a58b986344c004131d5aea38 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Fri, 14 Jun 2019 02:24:52 +0200 Subject: [PATCH 470/567] * lisp/net/sieve-manage.el (sieve-manage-parse-capability): Doc fix. --- lisp/net/sieve-manage.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/net/sieve-manage.el b/lisp/net/sieve-manage.el index 18a3dcc4c09f..2530d3a0bab6 100644 --- a/lisp/net/sieve-manage.el +++ b/lisp/net/sieve-manage.el @@ -512,7 +512,8 @@ If NAME is nil, return the full server list of capabilities." (defun sieve-manage-parse-capability (str) "Parse managesieve capability string `STR'. -Set variable `sieve-manage-capability' to " +Return alist of capabilities, suitable for assignment +to local variable `sieve-manage-capability'." (let ((capas (delq nil (mapcar #'split-string-and-unquote (split-string str "\n"))))) From 746d42f52bde883dff3225ab7b8a3101943dbb6f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 14 Jun 2019 09:40:40 +0300 Subject: [PATCH 471/567] Remove failing test erroneously added in backport * test/src/thread-tests.el (threads-test-bug33073): Remove test which cannot work on the emacs-26 branch. Do not merge to master. Reported by Juanma Barranquero . --- test/src/thread-tests.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/src/thread-tests.el b/test/src/thread-tests.el index b57b4f9412d9..e8d66b87db3b 100644 --- a/test/src/thread-tests.el +++ b/test/src/thread-tests.el @@ -347,8 +347,4 @@ (should (= (length (all-threads)) 1)) (should (equal (thread-last-error) '(error "Die, die, die!"))))) -(ert-deftest threads-test-bug33073 () - (let ((th (make-thread 'ignore))) - (should-not (equal th main-thread)))) - ;;; threads.el ends here From e5873389e13fd6f1bc0448abfd1fdf1af5e85f1a Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Thu, 13 Jun 2019 15:09:24 -0700 Subject: [PATCH 472/567] Make sure Gnus imap group names are decoded before searching do not merge (fix unnecessary in Emacs 27) * lisp/gnus/nnir.el (nnir-run-imap): Ensure that non-ascii group names have been fully decoded before passing them to imap search. --- lisp/gnus/nnir.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el index 05b2f0aa8a73..0062cd858930 100644 --- a/lisp/gnus/nnir.el +++ b/lisp/gnus/nnir.el @@ -969,6 +969,7 @@ details on the language and supported extensions." (mapcar #'(lambda (group) (let (artlist) + (setq group (nnimap-decode-gnus-group group)) (condition-case () (when (nnimap-change-group (gnus-group-short-name group) server) From 0c5f6c6c6383c7be7fe08ae76c546d4b95146c69 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Sat, 15 Jun 2019 01:37:27 +0200 Subject: [PATCH 473/567] Fix doc of srecompile-compile-split-code (Bug#36200) * lisp/cedet/srecode/compile.el (srecode-compile-split-code): Remove leftover text from docstring. --- lisp/cedet/srecode/compile.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/cedet/srecode/compile.el b/lisp/cedet/srecode/compile.el index a19df179013e..d2e2807b2486 100644 --- a/lisp/cedet/srecode/compile.el +++ b/lisp/cedet/srecode/compile.el @@ -398,8 +398,7 @@ ESCAPE_START and ESCAPE_END are regexps that indicate the beginning escape character, and end escape character pattern for expandable macro names. Optional argument END-NAME specifies the name of a token upon which -parsing should stop. -If END-NAME is specified, and the input string" +parsing should stop." (let* ((what str) (end-token nil) (comp nil) From 7a8f22b00484e2c1a28b48767b8562c6b6e89e06 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Sat, 15 Jun 2019 05:29:03 +0200 Subject: [PATCH 474/567] * test/lisp/url/url-file-tests.el (url-file): Use file:///, not file://. --- test/lisp/url/url-file-tests.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/lisp/url/url-file-tests.el b/test/lisp/url/url-file-tests.el index 45af1bba95d8..84b7c3a70b0f 100644 --- a/test/lisp/url/url-file-tests.el +++ b/test/lisp/url/url-file-tests.el @@ -33,11 +33,11 @@ "Directory for url-file test files.") (ert-deftest url-file () - "Test reading file via file:// URL." + "Test reading file via file:/// URL." (let ((file (expand-file-name "file.txt" url-file-tests-data-directory))) (should (equal (with-current-buffer - (url-file (url-generic-parse-url (concat "file://" file)) + (url-file (url-generic-parse-url (concat "file:///" file)) #'ignore nil) (prog1 (buffer-substring (point) (point-max)) (kill-buffer))) From 200f63cfa5904462cdcb440d4da63dfa92c666a6 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Sat, 15 Jun 2019 07:23:25 +0200 Subject: [PATCH 475/567] tramp-test42-auto-load: Add expected-result. * test/lisp/net/tramp-tests.el (tramp-test42-auto-load): Expect a failed result if remote file access is not enabled, as it happens while doing the test on Windows. --- test/lisp/net/tramp-tests.el | 1 + 1 file changed, 1 insertion(+) diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 70b2646cc893..03b0018298b2 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -4682,6 +4682,7 @@ process sentinels. They shall not disturb each other." ;; This test is inspired by Bug#29163. (ert-deftest tramp-test42-auto-load () "Check that Tramp autoloads properly." + :expected-result (if (tramp--test-enabled) :passed :failed) (let ((default-directory (expand-file-name temporary-file-directory)) (code (format From f87a9e359e94587b301cb65d8a255381fee687bf Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 15 Jun 2019 21:38:11 +0200 Subject: [PATCH 476/567] Fix accidential change in tramp-tests; do not merge with master * lisp/net/trampver.el: Change version to "2.3.5.26.3". (customize-package-emacs-version-alist): Add Tramp version integrated in Emacs 26.3. * test/lisp/net/tramp-tests.el (tramp-test42-auto-load): Add skip for w32. --- lisp/net/trampver.el | 9 +++++---- test/lisp/net/tramp-tests.el | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 5f10cd30ba66..81d80d0a5a7d 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -7,7 +7,7 @@ ;; Maintainer: Michael Albinus ;; Keywords: comm, processes ;; Package: tramp -;; Version: 2.3.5.26.2 +;; Version: 2.3.5.26.3 ;; This file is part of GNU Emacs. @@ -33,7 +33,7 @@ ;; should be changed only there. ;;;###tramp-autoload -(defconst tramp-version "2.3.5.26.2" +(defconst tramp-version "2.3.5.26.3" "This version of Tramp.") ;;;###tramp-autoload @@ -55,7 +55,7 @@ ;; Check for Emacs version. (let ((x (if (>= emacs-major-version 24) "ok" - (format "Tramp 2.3.5.26.2 is not fit for %s" + (format "Tramp 2.3.5.26.3 is not fit for %s" (when (string-match "^.*$" (emacs-version)) (match-string 0 (emacs-version))))))) (unless (string-match "\\`ok\\'" x) (error "%s" x))) @@ -74,7 +74,8 @@ ("2.2.9-24.4" . "24.4") ("2.2.11-24.5" . "24.5") ("2.2.13.25.1" . "25.1") ("2.2.13.25.2" . "25.2") ("2.2.13.25.2" . "25.3") - ("2.3.3" . "26.1") ("2.3.3.26.1" . "26.1") ("2.3.5.26.2" . "26.2"))) + ("2.3.3" . "26.1") ("2.3.3.26.1" . "26.1") ("2.3.5.26.2" . "26.2") + ("2.3.5.26.3" . "26.3"))) (add-hook 'tramp-unload-hook (lambda () diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 03b0018298b2..203bcfb65113 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -4682,7 +4682,8 @@ process sentinels. They shall not disturb each other." ;; This test is inspired by Bug#29163. (ert-deftest tramp-test42-auto-load () "Check that Tramp autoloads properly." - :expected-result (if (tramp--test-enabled) :passed :failed) + (skip-unless (tramp--test-enabled)) + (let ((default-directory (expand-file-name temporary-file-directory)) (code (format From 2b765c650a80329a11158f8fe570b396ad3d7b19 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Wed, 12 Jun 2019 19:58:28 +0200 Subject: [PATCH 477/567] Remove outdated comment in winner.el (Bug#36185) * lisp/winner.el: Remove outdated comment. --- lisp/winner.el | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lisp/winner.el b/lisp/winner.el index bdec60cb3018..1070e26df51e 100644 --- a/lisp/winner.el +++ b/lisp/winner.el @@ -28,13 +28,7 @@ ;; windows) so that the changes can be "undone" using the command ;; `winner-undo'. By default this one is bound to the key sequence ;; ctrl-c left. If you change your mind (while undoing), you can -;; press ctrl-c right (calling `winner-redo'). Even though it uses -;; some features of Emacs20.3, winner.el should also work with -;; Emacs19.34 and XEmacs20, provided that the installed version of -;; custom is not obsolete. - -;; Winner mode was improved August 1998. -;; Further improvements February 2002. +;; press ctrl-c right (calling `winner-redo'). ;;; Code: From bea31a379407891929ca941b1b015a91a26ad0f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Sun, 31 Mar 2019 15:53:52 +0200 Subject: [PATCH 478/567] Backport: Fix typo in regexp-opt example code * doc/lispref/searching.texi (Regexp Functions): Fix typo in example code (Bug#34596). --- doc/lispref/searching.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index 2e951d0d5d77..b182fae5955a 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1013,9 +1013,9 @@ more efficient than that of a simplified version: ((eq paren 'symbols) '("\\_<\\(" . "\\)\\_>")) ((null paren) '("\\(?:" . "\\)")) (t '("\\(" . "\\)"))))) - (concat (car paren) + (concat (car parens) (mapconcat 'regexp-quote strings "\\|") - (cdr paren)))) + (cdr parens)))) @end example @end defun From 4701e0663ee53f1c4b1e1e4c5fee9e597671800b Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 16 Jun 2019 18:29:21 +0300 Subject: [PATCH 479/567] Improve wording of documentation of click events * doc/lispref/commands.texi (Click Events, Accessing Mouse): Improve and clarify wording. (Bug#36232) --- doc/lispref/commands.texi | 70 +++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index 1eb580e1e0fd..ad31240beff1 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@ -1395,9 +1395,9 @@ The time at which the event occurred, as an integer number of milliseconds since a system-dependent initial time. @item @var{object} -Either @code{nil} if there is no string-type text property at the -click position, or a cons cell of the form (@var{string} -. @var{string-pos}) if there is one: +Either @code{nil}, which means the click occurred on buffer text, or a +cons cell of the form @w{(@var{string} . @var{string-pos})} if there +is a string from a text property or an overlay at the click position. @table @asis @item @var{string} @@ -1428,15 +1428,15 @@ clicks on margins, @var{col} is measured from the left edge of the margin area and @var{row} is measured from the top of the margin area. @item @var{image} -This is the image object on which the click occurred. It is either -@code{nil} if there is no image at the position clicked on, or it is -an image object as returned by @code{find-image} if click was in an image. +If there is an image at the click location, this is the image object +as returned by @code{find-image} (@pxref{Defining Images}); otherwise +this is @code{nil}. @item @var{dx}, @var{dy} -These are the pixel coordinates of the click, relative to -the top left corner of @var{object}, which is @code{(0 . 0)}. If -@var{object} is @code{nil}, the coordinates are relative to the top -left corner of the character glyph clicked on. +These are the pixel coordinates of the click, relative to the top left +corner of @var{object}, which is @code{(0 . 0)}. If @var{object} is +@code{nil}, which stands for a buffer, the coordinates are relative to +the top left corner of the character glyph clicked on. @item @var{width}, @var{height} These are the pixel width and height of @var{object} or, if this is @@ -2038,8 +2038,8 @@ position such events have. @defun posnp object This function returns non-@code{nil} if @var{object} is a mouse -position list, in either of the formats documented in @ref{Click -Events}); and @code{nil} otherwise. +position list, in the format documented in @ref{Click Events}); and +@code{nil} otherwise. @end defun @cindex mouse position list, accessing @@ -2067,8 +2067,8 @@ is undefined. @defun posn-x-y position Return the pixel-based x and y coordinates in @var{position}, as a -cons cell @code{(@var{x} . @var{y})}. These coordinates are relative -to the window given by @code{posn-window}. +cons cell @w{@code{(@var{x} . @var{y})}}. These coordinates are +relative to the window given by @code{posn-window}. This example shows how to convert the window-relative coordinates in the text area of a window into frame-relative coordinates: @@ -2086,11 +2086,11 @@ POSITION is assumed to lie in a window text area." @end defun @defun posn-col-row position -This function returns a cons cell @code{(@var{col} . @var{row})}, +This function returns a cons cell @w{@code{(@var{col} . @var{row})}}, containing the estimated column and row corresponding to buffer -position in @var{position}. The return value is given in units of the -frame's default character width and default line height (including -spacing), as computed from the @var{x} and @var{y} values +position described by @var{position}. The return value is given in +units of the frame's default character width and default line height +(including spacing), as computed from the @var{x} and @var{y} values corresponding to @var{position}. (So, if the actual characters have non-default sizes, the actual row and column may differ from these computed values.) @@ -2102,7 +2102,7 @@ Lines}), it is @emph{not} included in the @var{row} count. @defun posn-actual-col-row position Return the actual row and column in @var{position}, as a cons cell -@code{(@var{col} . @var{row})}. The values are the actual row and +@w{@code{(@var{col} . @var{row})}}. The values are the actual row and column numbers in the window given by @var{position}. @xref{Click Events}, for details. The function returns @code{nil} if @var{position} does not include actual position values; in that case @@ -2115,33 +2115,37 @@ character units, use @code{posn-col-row} instead. @end defun @defun posn-string position -Return the string object in @var{position}, either @code{nil}, or a -cons cell @code{(@var{string} . @var{string-pos})}. +Return the string object described by @var{position}, either +@code{nil} (which means @var{position} describes buffer text), or a +cons cell @w{@code{(@var{string} . @var{string-pos})}}. @end defun @defun posn-image position -Return the image object in @var{position}, either @code{nil}, or an -image @code{(image ...)}. +Return the image object in @var{position}, either @code{nil} (if +there's no image at @var{position}), or an image spec @w{@code{(image +@dots{})}}. @end defun @defun posn-object position -Return the image or string object in @var{position}, either -@code{nil}, an image @code{(image ...)}, or a cons cell -@code{(@var{string} . @var{string-pos})}. +Return the image or string object described by @var{position}, either +@code{nil} (which means @var{position} describes buffer text), an +image @w{@code{(image @dots{})}}, or a cons cell +@w{@code{(@var{string} . @var{string-pos})}}. @end defun @defun posn-object-x-y position Return the pixel-based x and y coordinates relative to the upper left -corner of the object in @var{position} as a cons cell @code{(@var{dx} -. @var{dy})}. If the @var{position} is on buffer text, return the -relative position of the buffer-text character closest to that -position. +corner of the object described by @var{position}, as a cons cell +@w{@code{(@var{dx} . @var{dy})}}. If the @var{position} describes +buffer text, return the relative coordinates of the buffer-text character +closest to that position. @end defun @defun posn-object-width-height position -Return the pixel width and height of the object in @var{position} as a -cons cell @code{(@var{width} . @var{height})}. If the @var{position} -is a buffer position, return the size of the character at that position. +Return the pixel width and height of the object described by +@var{position}, as a cons cell @code{(@var{width} . @var{height})}. +If the @var{position} describes a buffer position, return the size of +the character at that position. @end defun @cindex timestamp of a mouse event From fcf6cc3177a2404eea82a5e3f4b7118e22ca5094 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Sun, 16 Jun 2019 21:57:44 +0200 Subject: [PATCH 480/567] Fix problem with wdired test when symlinks cannot be created. * test/lisp/wdired-tests.el (wdired-test-symlink-name): Skip test if 'make-symbolic-link' fails for whatever reason; that's not what's being tested. --- test/lisp/wdired-tests.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/lisp/wdired-tests.el b/test/lisp/wdired-tests.el index dc67796cdedc..b0beb3c040c2 100644 --- a/test/lisp/wdired-tests.el +++ b/test/lisp/wdired-tests.el @@ -86,7 +86,11 @@ only the name before the link arrow." (let ((buf (find-file-noselect test-dir))) (unwind-protect (with-current-buffer buf - (make-symbolic-link "./bar/baz" link-name) + (skip-unless + ;; This check is for wdired, not symbolic links, so skip + ;; it when make-symbolic-link fails for any reason (like + ;; insufficient privileges). + (ignore-errors (make-symbolic-link "./bar/baz" link-name) t)) (revert-buffer) (let* ((file-name (dired-get-filename)) (dir-part (file-name-directory file-name)) From 9d48979ca8000f4d29fdfcdfec63d3ee53024ac4 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Mon, 17 Jun 2019 02:48:21 +0200 Subject: [PATCH 481/567] Fix Python tests depending on system-type * test/lisp/progmodes/python-tests.el (python-virt-bin): New function. (python-shell-calculate-exec-path-2) (python-shell-calculate-exec-path-3) (python-shell-calculate-exec-path-4) (python-shell-with-environment-1, python-shell-with-environment-2): Use it. --- test/lisp/progmodes/python-tests.el | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el index 3ce27a687da2..bea44bede9e4 100644 --- a/test/lisp/progmodes/python-tests.el +++ b/test/lisp/progmodes/python-tests.el @@ -134,6 +134,16 @@ default to `point-min' and `point-max' respectively." (overlay-end overlay)))) (buffer-substring-no-properties (point-min) (point-max))))) +(defun python-virt-bin (&optional virt-root) + "Return the virtualenv bin dir, starting from VIRT-ROOT. +If nil, VIRT-ROOT defaults to `python-shell-virtualenv-root'. +POSIX and Windows systems have different defauls." + (expand-file-name + (concat + (file-name-as-directory (or virt-root + python-shell-virtualenv-root)) + (if (eq system-type 'windows-nt) "Scripts" "bin")))) + ;;; Tests for your tests, so you can test while you test. @@ -2664,7 +2674,7 @@ if x: (python-shell-virtualenv-root "/env") (new-exec-path (python-shell-calculate-exec-path))) (should (equal new-exec-path - (list (expand-file-name "/env/bin") "/path0"))))) + (list (python-virt-bin) "/path0"))))) (ert-deftest python-shell-calculate-exec-path-3 () "Test complete `python-shell-virtualenv-root' modification." @@ -2673,7 +2683,7 @@ if x: (python-shell-virtualenv-root "/env") (new-exec-path (python-shell-calculate-exec-path))) (should (equal new-exec-path - (list (expand-file-name "/env/bin") + (list (python-virt-bin) "/path1" "/path2" "/path0"))))) (ert-deftest python-shell-calculate-exec-path-4 () @@ -2684,7 +2694,7 @@ if x: (python-shell-virtualenv-root "/env") (new-exec-path (python-shell-calculate-exec-path))) (should (equal new-exec-path - (list (expand-file-name "/env/bin") + (list (python-virt-bin) "/path1" "/path2" "/path0"))))) (ert-deftest python-shell-calculate-exec-path-5 () @@ -2714,7 +2724,7 @@ if x: (python-shell-virtualenv-root "/env")) (python-shell-with-environment (should (equal exec-path - (list (expand-file-name "/env/bin") + (list (python-virt-bin) "/path1" "/path2" "/path0"))) (should (not (getenv "PYTHONHOME"))) (should (string= (getenv "VIRTUAL_ENV") "/env"))) @@ -2730,7 +2740,7 @@ if x: (python-shell-virtualenv-root "/env")) (python-shell-with-environment (should (equal (python-shell-calculate-exec-path) - (list (expand-file-name "/env/bin") + (list (python-virt-bin) "/path1" "/path2" "/remote1" "/remote2"))) (let ((process-environment (python-shell-calculate-process-environment))) (should (not (getenv "PYTHONHOME"))) From 81535eeadb5b9b964dd195b2720de2b1fc432c6e Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Mon, 17 Jun 2019 03:12:45 +0200 Subject: [PATCH 482/567] * test/lisp/progmodes/python-tests.el (python-virt-bin): Doc fix. --- test/lisp/progmodes/python-tests.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el index bea44bede9e4..a44724f1dcae 100644 --- a/test/lisp/progmodes/python-tests.el +++ b/test/lisp/progmodes/python-tests.el @@ -137,7 +137,7 @@ default to `point-min' and `point-max' respectively." (defun python-virt-bin (&optional virt-root) "Return the virtualenv bin dir, starting from VIRT-ROOT. If nil, VIRT-ROOT defaults to `python-shell-virtualenv-root'. -POSIX and Windows systems have different defauls." +The name of this directory depends on `system-type'." (expand-file-name (concat (file-name-as-directory (or virt-root From 04477adedcee0d023dabc46a652f1673a2e9bd95 Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Wed, 19 Jun 2019 08:52:50 +0200 Subject: [PATCH 483/567] Check that length of data returned by sysctl is non-zero The length of the data returned by sysctl can be zero, which was not checked for. This could cause crashes, e.g. when querying non-existent processes. (Bug#36279) * src/sysdep.c (list_system_processes) [DARWIN_OS || __FreeBSD__]: (system_process_attributes) [__FreeBSD__]: (system_process_attributes) [DARWIN_OS]: * src/filelock.c (get_boot_time) [CTL_KERN && KERN_BOOTTIME]: Check for zero length data returned by sysctl. --- src/filelock.c | 2 +- src/sysdep.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/filelock.c b/src/filelock.c index 81d98f36fa43..bcd5bff563d6 100644 --- a/src/filelock.c +++ b/src/filelock.c @@ -152,7 +152,7 @@ get_boot_time (void) mib[1] = KERN_BOOTTIME; size = sizeof (boottime_val); - if (sysctl (mib, 2, &boottime_val, &size, NULL, 0) >= 0) + if (sysctl (mib, 2, &boottime_val, &size, NULL, 0) >= 0 && size != 0) { boot_time = boottime_val.tv_sec; return boot_time; diff --git a/src/sysdep.c b/src/sysdep.c index 1e35e06b6337..b2aecc0ddac5 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -3014,11 +3014,11 @@ list_system_processes (void) Lisp_Object proclist = Qnil; - if (sysctl (mib, 3, NULL, &len, NULL, 0) != 0) + if (sysctl (mib, 3, NULL, &len, NULL, 0) != 0 || len == 0) return proclist; procs = xmalloc (len); - if (sysctl (mib, 3, procs, &len, NULL, 0) != 0) + if (sysctl (mib, 3, procs, &len, NULL, 0) != 0 || len == 0) { xfree (procs); return proclist; @@ -3618,7 +3618,7 @@ system_process_attributes (Lisp_Object pid) CONS_TO_INTEGER (pid, int, proc_id); mib[3] = proc_id; - if (sysctl (mib, 4, &proc, &proclen, NULL, 0) != 0) + if (sysctl (mib, 4, &proc, &proclen, NULL, 0) != 0 || proclen == 0) return attrs; attrs = Fcons (Fcons (Qeuid, make_fixnum_or_float (proc.ki_uid)), attrs); @@ -3740,7 +3740,7 @@ system_process_attributes (Lisp_Object pid) mib[2] = KERN_PROC_ARGS; len = MAXPATHLEN; - if (sysctl (mib, 4, args, &len, NULL, 0) == 0) + if (sysctl (mib, 4, args, &len, NULL, 0) == 0 && len != 0) { int i; for (i = 0; i < len; i++) @@ -3798,7 +3798,7 @@ system_process_attributes (Lisp_Object pid) CONS_TO_INTEGER (pid, int, proc_id); mib[3] = proc_id; - if (sysctl (mib, 4, &proc, &proclen, NULL, 0) != 0) + if (sysctl (mib, 4, &proc, &proclen, NULL, 0) != 0 || proclen == 0) return attrs; uid = proc.kp_eproc.e_ucred.cr_uid; From 572e34bb6fcbbbde2325b679fef64ee26e78ce8a Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Fri, 21 Jun 2019 21:41:47 +0200 Subject: [PATCH 484/567] Rename 'make-symbolic-link' argument NEWNAME to LINKNAME * src/fileio.c (Fmake_symbolic_link): Fix docstring. * doc/lispref/files.texi (Changing Files): Doc fix. --- doc/lispref/files.texi | 8 ++++---- src/fileio.c | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index 380e0543ddd9..ebe2fdd6a0c4 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi @@ -1759,12 +1759,12 @@ default file permissions (see @code{set-default-file-modes} below), if SELinux context are not copied over in either case. @end deffn -@deffn Command make-symbolic-link target newname &optional ok-if-already-exists +@deffn Command make-symbolic-link target linkname &optional ok-if-already-exists @pindex ln @kindex file-already-exists This command makes a symbolic link to @var{target}, named -@var{newname}. This is like the shell command @samp{ln -s -@var{target} @var{newname}}. The @var{target} argument +@var{linkname}. This is like the shell command @samp{ln -s +@var{target} @var{linkname}}. The @var{target} argument is treated only as a string; it need not name an existing file. If @var{ok-if-already-exists} is an integer, indicating interactive use, then leading @samp{~} is expanded and leading @samp{/:} is @@ -1774,7 +1774,7 @@ If @var{target} is a relative file name, the resulting symbolic link is interpreted relative to the directory containing the symbolic link. @xref{Relative File Names}. -If both @var{target} and @var{newname} have remote file name syntax, +If both @var{target} and @var{linkname} have remote file name syntax, and if both remote identifications are equal, the symbolic link points to the local file name part of @var{target}. diff --git a/src/fileio.c b/src/fileio.c index ba7caddc9782..47619c0b7cd3 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -2474,13 +2474,13 @@ This is what happens in interactive use with M-x. */) DEFUN ("make-symbolic-link", Fmake_symbolic_link, Smake_symbolic_link, 2, 3, "FMake symbolic link to file: \nGMake symbolic link to file %s: \np", - doc: /* Make a symbolic link to TARGET, named NEWNAME. -If NEWNAME is a directory name, make a like-named symbolic link under -NEWNAME. + doc: /* Make a symbolic link to TARGET, named LINKNAME. +If LINKNAME is a directory name, make a like-named symbolic link under +LINKNAME. -Signal a `file-already-exists' error if a file NEWNAME already exists +Signal a `file-already-exists' error if a file LINKNAME already exists unless optional third argument OK-IF-ALREADY-EXISTS is non-nil. -An integer third arg means request confirmation if NEWNAME already +An integer third arg means request confirmation if LINKNAME already exists, and expand leading "~" or strip leading "/:" in TARGET. This happens for interactive use with M-x. */) (Lisp_Object target, Lisp_Object linkname, Lisp_Object ok_if_already_exists) From 06b35b2f922150a11d6b4b5c68a40e9957a69e52 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 25 Jun 2019 18:57:30 -0400 Subject: [PATCH 485/567] ; * lisp/frame.el: Enhance add-variable-watcher commentary. --- lisp/frame.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/frame.el b/lisp/frame.el index 30f6ca91ba60..6dc726696850 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -2489,7 +2489,9 @@ See also `toggle-frame-maximized'." (mapc (lambda (var) ;; Using symbol-function here tells the watcher machinery to ;; call the C function set-buffer-redisplay directly, thus - ;; avoiding a potential GC. + ;; avoiding a potential GC. This isn't strictly necessary, + ;; but it's a nice way to exercise the direct subr-calling + ;; machinery. (add-variable-watcher var (symbol-function 'set-buffer-redisplay))) '(line-spacing overline-margin From e62ad04963982ea9cc7622b32484778845bc2ec1 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sun, 23 Jun 2019 21:27:43 -0400 Subject: [PATCH 486/567] Fix sgml-mode handling of quotes within parens (Bug#36347) * lisp/textmodes/sgml-mode.el (sgml-syntax-propertize): Use syntax-ppss-table if set. This is only needed on the release branch, on master the caller (syntax-propertize) already does this. (sgml-mode): Set syntax-ppss-table to sgml-tag-syntax-table. This correctly classifies parens as punctuation, so they won't confuse the parser. * test/lisp/textmodes/sgml-mode-tests.el (sgml-tests--quotes-syntax): New test copied from master, with two cases added for this bug. --- lisp/textmodes/sgml-mode.el | 10 ++++++---- test/lisp/textmodes/sgml-mode-tests.el | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 128e58810e51..c9724e0e3f7f 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -357,10 +357,11 @@ Any terminating `>' or `/' is not matched.") (defun sgml-syntax-propertize (start end) "Syntactic keywords for `sgml-mode'." (goto-char start) - (sgml-syntax-propertize-inside end) - (funcall - (syntax-propertize-rules sgml-syntax-propertize-rules) - start end)) + (with-syntax-table (or syntax-ppss-table (syntax-table)) + (sgml-syntax-propertize-inside end) + (funcall + (syntax-propertize-rules sgml-syntax-propertize-rules) + start end))) (defun sgml-syntax-propertize-inside (end) (let ((ppss (syntax-ppss))) @@ -568,6 +569,7 @@ Do \\[describe-key] on the following bindings to discover what they do. sgml-font-lock-keywords-2) nil t)) (setq-local syntax-propertize-function #'sgml-syntax-propertize) + (setq-local syntax-ppss-table sgml-tag-syntax-table) (setq-local facemenu-add-face-function 'sgml-mode-facemenu-add-face-function) (setq-local sgml-xml-mode (sgml-xml-guess)) (unless sgml-xml-mode diff --git a/test/lisp/textmodes/sgml-mode-tests.el b/test/lisp/textmodes/sgml-mode-tests.el index 7318a667b36f..0000b352ff00 100644 --- a/test/lisp/textmodes/sgml-mode-tests.el +++ b/test/lisp/textmodes/sgml-mode-tests.el @@ -130,5 +130,27 @@ The point is set to the beginning of the buffer." (sgml-delete-tag 1) (should (string= "Winter is comin'" (buffer-string))))) +(ert-deftest sgml-tests--quotes-syntax () + (dolist (str '("a\"b c'd" + "a'b c\"d" + "\"a'" + "'a\"" + "\"a'\"" + "'a\"'" + "a\"b c'd" + ;;"c>'d" Fixed in master. + "" + "" + "(')" + "(\")" + )) + (with-temp-buffer + (sgml-mode) + (insert str) + (ert-info ((format "%S" str) :prefix "Test case: ") + ;; Check that last tag is parsed as a tag. + (should (= 1 (car (syntax-ppss (1- (point-max)))))) + (should (= 0 (car (syntax-ppss (point-max))))))))) + (provide 'sgml-mode-tests) ;;; sgml-mode-tests.el ends here From 7648c125dfdd0232362c35c2898bbe355c874dc1 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 26 Jun 2019 18:02:26 +0300 Subject: [PATCH 487/567] Clarify a subtle issue in the Internals chapter of lispref * doc/lispref/internals.texi (Writing Emacs Primitives): Clarify the issue with relocation of buffer or string text as side effect of Lisp evaluation. (Bug#36392) --- doc/lispref/internals.texi | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index 62a102e38451..7cbd2966839a 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -825,10 +825,14 @@ the type explicitly using a suitable predicate (@pxref{Type Predicates}). @code{args} refers to objects controlled by Emacs's stack-marking garbage collector. Although the garbage collector does not reclaim objects reachable from C @code{Lisp_Object} stack variables, it may -move non-object components of an object, such as string contents; so -functions that access non-object components must take care to refetch -their addresses after performing Lisp evaluation. Lisp evaluation can -occur via calls to @code{eval_sub} or @code{Feval}, either directly or +move some of the components of an object, such as the contents of a +string or the text of a buffer. Therefore, functions that access +these components must take care to refetch their addresses after +performing Lisp evaluation. This means that instead of keeping C +pointers to string contents or buffer text, the code should keep the +buffer or string position, and recompute the C pointer from the +position after performing Lisp evaluation. Lisp evaluation can occur +via calls to @code{eval_sub} or @code{Feval}, either directly or indirectly. @cindex @code{maybe_quit}, use in Lisp primitives From 8b775c30adaad63a4838e911d6c02e55a4269c4e Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Wed, 26 Jun 2019 22:13:34 +0100 Subject: [PATCH 488/567] Clarify & update (elisp) Writing Emacs Primitives * doc/lispref/internals.texi (Writing Emacs Primitives): Update some of the sample code listings, fixing argument lists and parentheses. Replace ... with @dots{}. Describe UNEVALLED special forms as taking a single argument. (bug#36392) --- doc/lispref/internals.texi | 60 ++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index 7cbd2966839a..6a7ea1c6913a 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -654,8 +654,8 @@ appearance.) @smallexample @group DEFUN ("or", For, Sor, 0, UNEVALLED, 0, - doc: /* Eval args until one of them yields non-nil, then return -that value. + doc: /* Eval args until one of them yields non-nil, +then return that value. The remaining args are not evalled at all. If all args return nil, return nil. @end group @@ -729,7 +729,7 @@ less than 8. This is an interactive specification, a string such as might be used as the argument of @code{interactive} in a Lisp function (@pxref{Using Interactive}). In the case -of @code{or}, it is 0 (a null pointer), indicating that @code{or} +of @code{or}, it is @code{0} (a null pointer), indicating that @code{or} cannot be called interactively. A value of @code{""} indicates a function that should receive no arguments when called interactively. If the value begins with a @samp{"(}, the string is evaluated as a @@ -737,11 +737,11 @@ Lisp form. For example: @example @group -DEFUN ("foo", Ffoo, Sfoo, 0, UNEVALLED, 0 +DEFUN ("foo", Ffoo, Sfoo, 0, 3, "(list (read-char-by-name \"Insert character: \")\ (prefix-numeric-value current-prefix-arg)\ - t))", - doc: /* @dots{} */) + t)", + doc: /* @dots{} */) @end group @end example @@ -771,8 +771,8 @@ this: @example @group DEFUN ("bar", Fbar, Sbar, 0, UNEVALLED, 0 - doc: /* @dots{} */ - attributes: @var{attr1} @var{attr2} @dots{}) + doc: /* @dots{} */ + attributes: @var{attr1} @var{attr2} @dots{}) @end group @end example @@ -808,15 +808,18 @@ arguments. If the primitive accepts a fixed maximum number of Lisp arguments, there must be one C argument for each Lisp argument, and each argument must be of type @code{Lisp_Object}. (Various macros and functions for creating values of type @code{Lisp_Object} are declared -in the file @file{lisp.h}.) If the primitive has no upper limit on -the number of Lisp arguments, it must have exactly two C arguments: -the first is the number of Lisp arguments, and the second is the -address of a block containing their values. These have types -@code{int} and @w{@code{Lisp_Object *}} respectively. Since -@code{Lisp_Object} can hold any Lisp object of any data type, you -can determine the actual data type only at run time; so if you want -a primitive to accept only a certain type of argument, you must check -the type explicitly using a suitable predicate (@pxref{Type Predicates}). +in the file @file{lisp.h}.) If the primitive is a special form, it +must accept a Lisp list containing its unevaluated Lisp arguments as a +single argument of type @code{Lisp_Object}. If the primitive has no +upper limit on the number of evaluated Lisp arguments, it must have +exactly two C arguments: the first is the number of Lisp arguments, +and the second is the address of a block containing their values. +These have types @code{ptrdiff_t} and @w{@code{Lisp_Object *}}, +respectively. Since @code{Lisp_Object} can hold any Lisp object of +any data type, you can determine the actual data type only at run +time; so if you want a primitive to accept only a certain type of +argument, you must check the type explicitly using a suitable +predicate (@pxref{Type Predicates}). @cindex type checking internals @cindex garbage collection protection @@ -906,9 +909,9 @@ of macros and functions to manipulate Lisp objects. @smallexample @group DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p, - Scoordinates_in_window_p, 2, 2, 0, - doc: /* Return non-nil if COORDINATES are in WINDOW. - ... + Scoordinates_in_window_p, 2, 2, 0, + doc: /* Return non-nil if COORDINATES are in WINDOW. + @dots{} @end group @group or `right-margin' is returned. */) @@ -921,16 +924,15 @@ DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p, @end group @group - CHECK_LIVE_WINDOW (window); - w = XWINDOW (window); + w = decode_live_window (window); f = XFRAME (w->frame); CHECK_CONS (coordinates); lx = Fcar (coordinates); ly = Fcdr (coordinates); - CHECK_NUMBER_OR_FLOAT (lx); - CHECK_NUMBER_OR_FLOAT (ly); - x = FRAME_PIXEL_X_FROM_CANON_X (f, lx) + FRAME_INTERNAL_BORDER_WIDTH(f); - y = FRAME_PIXEL_Y_FROM_CANON_Y (f, ly) + FRAME_INTERNAL_BORDER_WIDTH(f); + CHECK_NUMBER (lx); + CHECK_NUMBER (ly); + x = FRAME_PIXEL_X_FROM_CANON_X (f, lx) + FRAME_INTERNAL_BORDER_WIDTH (f); + y = FRAME_PIXEL_Y_FROM_CANON_Y (f, ly) + FRAME_INTERNAL_BORDER_WIDTH (f); @end group @group @@ -940,14 +942,14 @@ DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p, return Qnil; @end group - ... + @dots{} @group case ON_MODE_LINE: /* In mode line of window. */ return Qmode_line; @end group - ... + @dots{} @group case ON_SCROLL_BAR: /* On scroll-bar of window. */ @@ -957,7 +959,7 @@ DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p, @group default: - abort (); + emacs_abort (); @} @} @end group From 13b95e1cc7d6b747adbe422e84543b0f2fff115a Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Fri, 28 Jun 2019 03:16:57 +0200 Subject: [PATCH 489/567] Fix typo in windows.texi * doc/lispref/windows.texi (Window History): Fix typo. (Bug#36412) --- doc/lispref/windows.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index ea9329e05174..51d288ba8e8b 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -3779,7 +3779,7 @@ should be a list of the same form as that returned by @code{window-prev-buffers}. @end defun -In addition, each buffer maintains a list of @dfn{next buffers}, which +In addition, each window maintains a list of @dfn{next buffers}, which is a list of buffers re-shown by @code{switch-to-prev-buffer} (see below). This list is mainly used by @code{switch-to-prev-buffer} and @code{switch-to-next-buffer} for choosing buffers to switch to. From bfc7c6e0d3d37e907936d519438413d4b6d01b98 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Fri, 28 Jun 2019 15:22:00 +0200 Subject: [PATCH 490/567] * test/lisp/url/url-file-tests.el (url-file): Fix for POSIX filenames. --- test/lisp/url/url-file-tests.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/lisp/url/url-file-tests.el b/test/lisp/url/url-file-tests.el index 84b7c3a70b0f..58e0250ba96c 100644 --- a/test/lisp/url/url-file-tests.el +++ b/test/lisp/url/url-file-tests.el @@ -34,10 +34,11 @@ (ert-deftest url-file () "Test reading file via file:/// URL." - (let ((file (expand-file-name "file.txt" url-file-tests-data-directory))) + (let* ((file (expand-file-name "file.txt" url-file-tests-data-directory)) + (uri-prefix (if (eq (aref file 0) ?/) "file://" "file:///"))) (should (equal (with-current-buffer - (url-file (url-generic-parse-url (concat "file:///" file)) + (url-file (url-generic-parse-url (concat uri-prefix file)) #'ignore nil) (prog1 (buffer-substring (point) (point-max)) (kill-buffer))) From 316f5a3b717d727d46c15da46471e196bfea9a36 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Fri, 28 Jun 2019 02:08:14 +0200 Subject: [PATCH 491/567] Fix typo in doc string of file-exists-p (bug#36408) * src/fileio.c (Ffile_exists_p): Fix typo in doc string. --- src/fileio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fileio.c b/src/fileio.c index 47619c0b7cd3..a648f50dcc17 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -2541,7 +2541,7 @@ On Unix, absolute file names start with `/'. */) } DEFUN ("file-exists-p", Ffile_exists_p, Sfile_exists_p, 1, 1, 0, - doc: /* Return t if file FILENAME exists (whether or not you can read it.) + doc: /* Return t if file FILENAME exists (whether or not you can read it). See also `file-readable-p' and `file-attributes'. This returns nil for a symlink to a nonexistent file. Use `file-symlink-p' to test for such links. */) From dc5ed2c838abe50df4befe74bf11038d387b6ba8 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 1 Jul 2019 06:08:24 -0700 Subject: [PATCH 492/567] ; Auto-commit of loaddefs files. --- lisp/ldefs-boot.el | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 12c7d473f6e8..bb9991873df9 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -34672,7 +34672,7 @@ Reenable Ange-FTP, when Tramp is unloaded. ;;;### (autoloads nil "trampver" "net/trampver.el" (0 0 0 0)) ;;; Generated autoloads from net/trampver.el -(push (purecopy '(tramp 2 3 5 26 2)) package--builtin-versions) +(push (purecopy '(tramp 2 3 5 26 3)) package--builtin-versions) (if (fboundp 'register-definition-prefixes) (register-definition-prefixes "trampver" '("tramp-"))) @@ -38763,20 +38763,10 @@ Zone out, completely. ;;;;;; "eshell/em-term.el" "eshell/em-tramp.el" "eshell/em-unix.el" ;;;;;; "eshell/em-xtra.el" "facemenu.el" "faces.el" "files.el" "font-core.el" ;;;;;; "font-lock.el" "format.el" "frame.el" "help.el" "hfy-cmap.el" -;;;;;; "ibuf-ext.el" "indent.el" "international/characters.el" "international/charprop.el" -;;;;;; "international/charscript.el" "international/cp51932.el" -;;;;;; "international/eucjp-ms.el" "international/mule-cmds.el" -;;;;;; "international/mule-conf.el" "international/mule.el" "international/uni-bidi.el" -;;;;;; "international/uni-brackets.el" "international/uni-category.el" -;;;;;; "international/uni-combining.el" "international/uni-comment.el" -;;;;;; "international/uni-decimal.el" "international/uni-decomposition.el" -;;;;;; "international/uni-digit.el" "international/uni-lowercase.el" -;;;;;; "international/uni-mirrored.el" "international/uni-name.el" -;;;;;; "international/uni-numeric.el" "international/uni-old-name.el" -;;;;;; "international/uni-special-lowercase.el" "international/uni-special-titlecase.el" -;;;;;; "international/uni-special-uppercase.el" "international/uni-titlecase.el" -;;;;;; "international/uni-uppercase.el" "isearch.el" "jit-lock.el" -;;;;;; "jka-cmpr-hook.el" "language/burmese.el" "language/cham.el" +;;;;;; "ibuf-ext.el" "indent.el" "international/characters.el" "international/charscript.el" +;;;;;; "international/cp51932.el" "international/eucjp-ms.el" "international/mule-cmds.el" +;;;;;; "international/mule-conf.el" "international/mule.el" "isearch.el" +;;;;;; "jit-lock.el" "jka-cmpr-hook.el" "language/burmese.el" "language/cham.el" ;;;;;; "language/chinese.el" "language/cyrillic.el" "language/czech.el" ;;;;;; "language/english.el" "language/ethiopic.el" "language/european.el" ;;;;;; "language/georgian.el" "language/greek.el" "language/hebrew.el" From cb8fb597e5bf4f14bf091aaa0c984117f4243605 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 3 Jul 2019 15:55:10 +0300 Subject: [PATCH 493/567] * lisp/hi-lock.el (hi-lock-line-face-buffer): Doc fix. (Bug36448) --- lisp/hi-lock.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el index b02fbc905b5b..ce16c9245245 100644 --- a/lisp/hi-lock.el +++ b/lisp/hi-lock.el @@ -409,7 +409,11 @@ versions before 22 use the following in your init file: (defalias 'highlight-lines-matching-regexp 'hi-lock-line-face-buffer) ;;;###autoload (defun hi-lock-line-face-buffer (regexp &optional face) - "Set face of all lines containing a match of REGEXP to FACE. + "Highlight all lines that match REGEXP using FACE. +The lines that match REGEXP will be displayed by merging +the attributes of FACE with any other face attributes +of text in those lines. + Interactively, prompt for REGEXP using `read-regexp', then FACE. Use the global history list for FACE. From f5b48469f18d568f788efe65a4754e73c3404bc9 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 30 May 2019 08:16:46 -0400 Subject: [PATCH 494/567] ; Fix typo, insure -> ensure in ChangeLogs --- lisp/ChangeLog.3 | 4 ++-- lisp/ChangeLog.5 | 2 +- lisp/mh-e/ChangeLog.2 | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog.3 b/lisp/ChangeLog.3 index 38e684480fb7..6265611b1040 100644 --- a/lisp/ChangeLog.3 +++ b/lisp/ChangeLog.3 @@ -7321,7 +7321,7 @@ (fortran-setup-tab-format-style): Set `fortran-comment-line-column' and `fortran-minimum-statement-indent' to (max tab-width 6) instead of 8. - The minimum 6 insures legal indenting for lines with line numbers. + The minimum 6 ensures legal indenting for lines with line numbers. 1991-07-13 Jim Blandy (jimb@churchy.gnu.ai.mit.edu) @@ -11436,7 +11436,7 @@ 1989-04-19 Richard Stallman (rms@mole.ai.mit.edu) - * replace.el (occur-mode-goto-occurrence): Insure arg to + * replace.el (occur-mode-goto-occurrence): Ensure arg to count-lines is@start of line. * replace.el (occur): Remove an extraneous save-excursion. diff --git a/lisp/ChangeLog.5 b/lisp/ChangeLog.5 index 5d0797563878..ef6caa970427 100644 --- a/lisp/ChangeLog.5 +++ b/lisp/ChangeLog.5 @@ -2676,7 +2676,7 @@ 1995-03-10 Karl Fogel * bookmark.el: - Insure that all entry points call `bookmark-maybe-load-default-file'. + Ensure that all entry points call `bookmark-maybe-load-default-file'. Changed format of bookmark-alist and therefore of bookmark files. Have version stamps in bookmark files. Automatically upgrade old bookmark files to new format. diff --git a/lisp/mh-e/ChangeLog.2 b/lisp/mh-e/ChangeLog.2 index 6d3b8e332b67..1e57969b9b15 100644 --- a/lisp/mh-e/ChangeLog.2 +++ b/lisp/mh-e/ChangeLog.2 @@ -73,10 +73,10 @@ * mh-folder.el (mh-inc-folder): Revert SF #2321115, SF #250 which processed pending deletes and refiles. Call to - mh-process-or-undo-commands to insure that pending changes are + mh-process-or-undo-commands to ensure that pending changes are properly tagged after including new mail (closes SF #271). - * mh-comp.el: Insure that mail-header-separator is set before + * mh-comp.el: Ensure that mail-header-separator is set before invoking any mml functions (closes SF #270). 2013-01-23 Dmitry Antipov @@ -140,7 +140,7 @@ (addresses SF #1916032). * mh-folder.el (mh-inc-folder): Call mh-process-or-undo-commands - before running to insure we do not lose any pending changes. + before running to ensure we do not lose any pending changes. (closes SF #2321115). 2012-11-25 Ted Phelps From e6608010d7187e7801a4b9e6119ffd641fd06986 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Mon, 13 May 2019 08:39:00 -0400 Subject: [PATCH 495/567] ; Add thing-at-point-looking-at test (Bug#35708) * test/lisp/thingatpt-tests.el (thing-at-point-looking-at): New test. --- test/lisp/thingatpt-tests.el | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/lisp/thingatpt-tests.el b/test/lisp/thingatpt-tests.el index 452fcc6895b9..f787aa69aadf 100644 --- a/test/lisp/thingatpt-tests.el +++ b/test/lisp/thingatpt-tests.el @@ -20,6 +20,7 @@ ;;; Code: (require 'ert) +(require 'thingatpt) (defvar thing-at-point-test-data '(("https://1.gnu.org" 1 url "https://1.gnu.org") @@ -131,4 +132,15 @@ position to retrieve THING.") (goto-char 23) (should (equal (thing-at-point 'url) "http://foo/bar(baz)")))) +(ert-deftest thing-at-point-looking-at () + (with-temp-buffer + (insert "1abcd 2abcd 3abcd") + (goto-char (point-min)) + (let ((m2 (progn (search-forward "2abcd") + (match-data)))) + (goto-char (point-min)) + (search-forward "2ab") + (should (thing-at-point-looking-at "2abcd")) + (should (equal (match-data) m2))))) + ;;; thingatpt.el ends here From e97c0437aa135f9580cd8cc1ec912758e3610ab1 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Fri, 5 Jul 2019 21:34:16 -0400 Subject: [PATCH 496/567] Fix python.el docstring (Bug#36458) * lisp/progmodes/python.el (python-shell--prompt-calculated-output-regexp): python-shell-set-prompt-regexp doesn't exist, presumably python-shell-prompt-set-calculated-regexps was meant. --- lisp/progmodes/python.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 38dcc823d063..8e7d9f23b0ef 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -2231,7 +2231,7 @@ Do not set this variable directly, instead use (defvar python-shell--prompt-calculated-output-regexp nil "Calculated output prompt regexp for inferior python shell. Do not set this variable directly, instead use -`python-shell-set-prompt-regexp'.") +`python-shell-prompt-set-calculated-regexps'.") (defun python-shell-prompt-detect () "Detect prompts for the current `python-shell-interpreter'. From f0db687a28546b85a70fea1ce3b1fd4186693e70 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 6 Jul 2019 14:24:34 +0900 Subject: [PATCH 497/567] Avoid crash inside CFCharacterSetIsLongCharacterMember (Bug#36507) * src/macfont.m (macfont_supports_charset_and_languages_p) (macfont_has_char): Don't pass integers outside the Unicode codespace to CFCharacterSetIsLongCharacterMember. Do not merge to master. --- src/macfont.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/macfont.m b/src/macfont.m index 7f153e130453..c9321a7d22ea 100644 --- a/src/macfont.m +++ b/src/macfont.m @@ -2070,7 +2070,7 @@ static int macfont_variation_glyphs (struct font *, int c, ptrdiff_t j; for (j = 0; j < ASIZE (chars); j++) - if (TYPE_RANGED_INTEGERP (UTF32Char, AREF (chars, j)) + if (RANGED_INTEGERP (0, AREF (chars, j), MAX_UNICODE_CHAR) && CFCharacterSetIsLongCharacterMember (desc_charset, XFASTINT (AREF (chars, j)))) break; @@ -2705,6 +2705,9 @@ So we use CTFontDescriptorCreateMatchingFontDescriptor (no int result; CFCharacterSetRef charset; + if (c < 0 || c > MAX_UNICODE_CHAR) + return false; + block_input (); if (FONT_ENTITY_P (font)) { From 8910fe1db06a8bf997930087025bbbabcc21741d Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 6 Jul 2019 10:31:06 +0300 Subject: [PATCH 498/567] * src/fns.c (Fmapconcat): Doc fix. (Bug#36418) --- src/fns.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fns.c b/src/fns.c index 2276a9971b21..97a505ecbefe 100644 --- a/src/fns.c +++ b/src/fns.c @@ -2496,7 +2496,7 @@ DEFUN ("mapconcat", Fmapconcat, Smapconcat, 3, 3, 0, In between each pair of results, stick in SEPARATOR. Thus, " " as SEPARATOR results in spaces between the values returned by FUNCTION. SEQUENCE may be a list, a vector, a bool-vector, or a string. -SEPARATOR must be a string. +SEPARATOR must be a string, a vector, or a list of characters. FUNCTION must be a function of one argument, and must return a value that is a sequence of characters: either a string, or a vector or list of numbers that are valid character codepoints. */) From d176090fc28ce3031213bc008919c1895f78d778 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 6 Jul 2019 11:30:35 +0300 Subject: [PATCH 499/567] Improve documentation of secondary selections * doc/emacs/killing.texi (Secondary Selection): Improve wording. Mention that 'M-mouse-1' can be used to cancel secondary selections. (Bug#36365) --- doc/emacs/killing.texi | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 9b9c890331ef..670decd67bd0 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -605,16 +605,20 @@ This command does not alter the kill ring. @kindex M-mouse-1 @item M-mouse-1 Set one endpoint for the @dfn{secondary selection} -(@code{mouse-start-secondary}). +(@code{mouse-start-secondary}). Use @kbd{M-mouse-3} to set the other +end and complete the selection. This command can also cancel any +existing secondary selection without starting a new one, if you click +@kbd{M-mouse-1} on the mode line or on the header line. @findex mouse-secondary-save-then-kill @kindex M-mouse-3 @item M-mouse-3 -Set the secondary selection, with one end at the position clicked and -the other at the position specified with @kbd{M-mouse-1} -(@code{mouse-secondary-save-then-kill}). This also puts the selected -text in the kill ring. A second @kbd{M-mouse-3} at the same place -kills the secondary selection just made. +Set the secondary selection (@code{mouse-secondary-save-then-kill}), +with one end at the position you click @kbd{M-mouse-3}, and the other +at the position specified previously with @kbd{M-mouse-1}. This also +puts the selected text in the kill ring. A second @kbd{M-mouse-3} at +the same place kills the text selected by the secondary selection just +made. @findex mouse-yank-secondary @kindex M-mouse-2 From 21351ccc0081167a6dc1b9e9327217c5efdb6827 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 6 Jul 2019 11:40:49 +0300 Subject: [PATCH 500/567] ; * src/lread.c (Fread): Make the comment wording more accurate. --- src/lread.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/lread.c b/src/lread.c index b0eb29a2a1fd..5c7bd3993d1c 100644 --- a/src/lread.c +++ b/src/lread.c @@ -2172,7 +2172,10 @@ STREAM or the value of `standard-input' may be: if (EQ (stream, Qt)) stream = Qread_char; if (EQ (stream, Qread_char)) - /* FIXME: ?! When is this used !? */ + /* FIXME: ?! This is used when the reader is called from the + minibuffer without a stream, as in (read). But is this feature + ever used, and if so, why? IOW, will anything break if this + feature is removed !? */ return call1 (intern ("read-minibuffer"), build_string ("Lisp expression: ")); From faf99dcb37bedf7ebceaf2b3015f20d05c391e16 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 6 Jul 2019 15:32:20 +0300 Subject: [PATCH 501/567] Improve description of image descriptors * doc/lispref/display.texi (Image Descriptors): More accurate description of where image files are looked up. (Bug#36523) --- doc/lispref/display.texi | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index b6fda1cd8072..276d60b21a71 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -5055,7 +5055,10 @@ Every image descriptor must include this property. @item :file @var{file} This says to load the image from file @var{file}. If @var{file} is -not an absolute file name, it is expanded in @code{data-directory}. +not an absolute file name, it is expanded relative to the +@file{images} subdirectory of @code{data-directory}, and failing that, +relative to the directories listed by @code{x-bitmap-file-path} +(@pxref{Face Attributes}). @item :data @var{data} This specifies the raw image data. Each image descriptor must have From ff738ab8b8e5588f568145ed5715b859c48219b8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 6 Jul 2019 17:25:46 +0300 Subject: [PATCH 502/567] Minor copyedit of "Font Lock" in user manual * doc/emacs/display.texi (Font Lock): Make the wording about "enabling Font Lock" crystal clear. (Bug#36529) --- doc/emacs/display.texi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 435c21fe7383..ac1ce3606b62 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -836,10 +836,10 @@ for instance, programming language modes fontify syntactically relevant constructs like comments, strings, and function names. @findex font-lock-mode - Font Lock mode is enabled by default. To toggle it in the current -buffer, type @kbd{M-x font-lock-mode}. A positive numeric argument -unconditionally enables Font Lock mode, and a negative or zero -argument disables it. + Font Lock mode is enabled by default in major modes that support it. +To toggle it in the current buffer, type @kbd{M-x font-lock-mode}. A +positive numeric argument unconditionally enables Font Lock mode, and +a negative or zero argument disables it. @findex global-font-lock-mode @vindex global-font-lock-mode From e2344a770ea55fbbe40800797dad002922a097b9 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sat, 6 Jul 2019 12:16:24 -0400 Subject: [PATCH 503/567] * lisp/svg.el, lisp/progmodes/ada-mode.el: Fix bug#36360. Tell package.el their version number, for better behavior w.r.t the versions available in GNU ELPA --- lisp/progmodes/ada-mode.el | 1 + lisp/svg.el | 1 + 2 files changed, 2 insertions(+) diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el index eb7efc3cf046..c9aba0a50d13 100644 --- a/lisp/progmodes/ada-mode.el +++ b/lisp/progmodes/ada-mode.el @@ -7,6 +7,7 @@ ;; Emmanuel Briot ;; Maintainer: Stephen Leake ;; Keywords: languages ada +;; Version: 4.0 ;; This file is part of GNU Emacs. diff --git a/lisp/svg.el b/lisp/svg.el index 0399c424c85a..1f717293358b 100644 --- a/lisp/svg.el +++ b/lisp/svg.el @@ -4,6 +4,7 @@ ;; Author: Lars Magne Ingebrigtsen ;; Keywords: image +;; Version: 0.5 ;; This file is part of GNU Emacs. From 1e6d8e003ce28f508e26eb7107ce5bd0e20bb4b8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 6 Jul 2019 21:33:45 +0300 Subject: [PATCH 504/567] ; * doc/emacs/killing.texi (Secondary Selection): Fix last change. --- doc/emacs/killing.texi | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 670decd67bd0..c554d2e28390 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -605,10 +605,9 @@ This command does not alter the kill ring. @kindex M-mouse-1 @item M-mouse-1 Set one endpoint for the @dfn{secondary selection} -(@code{mouse-start-secondary}). Use @kbd{M-mouse-3} to set the other -end and complete the selection. This command can also cancel any -existing secondary selection without starting a new one, if you click -@kbd{M-mouse-1} on the mode line or on the header line. +(@code{mouse-start-secondary}); use @kbd{M-mouse-3} to set the other +end and complete the selection. This command cancels any existing +secondary selection, when it starts a new one. @findex mouse-secondary-save-then-kill @kindex M-mouse-3 From 7d6eeef6825b04df3e4a29bcb48ee530fc11e163 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 9 Jul 2019 09:27:07 -0400 Subject: [PATCH 505/567] * lisp/progmodes/verilog-mode.el: One more ELPA Version: --- lisp/progmodes/verilog-mode.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el index e92647dbbacf..da2e99292f95 100644 --- a/lisp/progmodes/verilog-mode.el +++ b/lisp/progmodes/verilog-mode.el @@ -7,6 +7,9 @@ ;; X-URL: http://www.veripool.org ;; Created: 3 Jan 1996 ;; Keywords: languages +;; The "Version" is the date followed by the decimal rendition of the Git +;; commit hex. +;; Version: 2017.8.7.201875024 ;; Yoni Rabkin contacted the maintainer of this ;; file on 19/3/2008, and the maintainer agreed that when a bug is From c6775bc9ca9d321bda258e812198a37d29947aff Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Wed, 10 Jul 2019 10:34:02 +0200 Subject: [PATCH 506/567] * lisp/net/tramp-sh.el (tramp-inline-compress-start-size): Set nil on w32. --- lisp/net/tramp-sh.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 6e868aa1fc65..18ae2951084f 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -41,12 +41,14 @@ (defvar vc-hg-program) ;;;###tramp-autoload -(defcustom tramp-inline-compress-start-size 4096 +(defcustom tramp-inline-compress-start-size + (unless (memq system-type '(windows-nt)) 4096) "The minimum size of compressing where inline transfer. When inline transfer, compress transferred data of file whose size is this value or above (up to `tramp-copy-size-limit'). If it is nil, no compression at all will be applied." :group 'tramp + :version "26.3" :type '(choice (const nil) integer)) ;;;###tramp-autoload From 305abae50e8e10471125be6cdf3a7270befea0b0 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 12 Jul 2019 09:03:39 +0900 Subject: [PATCH 507/567] Raise required librsvg version so as to match the current use * configure.ac: Set RSVG_REQUIRED to 2.14.0 as rsvg_handle_get_dimensions needs it. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index aead404b5fd4..a79b322ecdd0 100644 --- a/configure.ac +++ b/configure.ac @@ -2500,7 +2500,7 @@ fi HAVE_RSVG=no if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = "mingw32"; then if test "${with_rsvg}" != "no"; then - RSVG_REQUIRED=2.11.0 + RSVG_REQUIRED=2.14.0 RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED" EMACS_CHECK_MODULES([RSVG], [$RSVG_MODULE]) From 34ee26dd93613849802bfe40cd7fae3df0b57fd1 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Sat, 13 Jul 2019 12:11:19 +0200 Subject: [PATCH 508/567] Add warning to bidi-display-reordering doc string This explanation was given by Eli Zaretskii on emacs-devel. For discussion, see: https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00294.html * src/buffer.c (syms_of_buffer): Add warning to doc string of bidi-display-reordering to explain that it should only be used for debugging. --- src/buffer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/buffer.c b/src/buffer.c index 12620f0d4aa3..ffd74d477bd0 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -5626,8 +5626,9 @@ This variable is never applied to a way of decoding a file while reading it. */ DEFVAR_PER_BUFFER ("bidi-display-reordering", &BVAR (current_buffer, bidi_display_reordering), Qnil, - doc: /* Non-nil means reorder bidirectional text for display in the visual order. */); - + doc: /* Non-nil means reorder bidirectional text for display in the visual order. +Setting this to nil is intended for use in debugging the display code. +Don't set to nil in normal sessions, as that is not supported. */); DEFVAR_PER_BUFFER ("bidi-paragraph-start-re", &BVAR (current_buffer, bidi_paragraph_start_re), Qnil, doc: /* If non-nil, a regexp matching a line that starts OR separates paragraphs. From 4455ddbe5645f34791e34e231b6145f08f0faa10 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 13 Jul 2019 14:21:41 +0300 Subject: [PATCH 509/567] Improve doc string of 'bidi-display-reordering' * src/buffer.c (syms_of_buffer) : Further doc fix. --- src/buffer.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/buffer.c b/src/buffer.c index ffd74d477bd0..e01f5861e27f 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -5628,7 +5628,10 @@ This variable is never applied to a way of decoding a file while reading it. */ &BVAR (current_buffer, bidi_display_reordering), Qnil, doc: /* Non-nil means reorder bidirectional text for display in the visual order. Setting this to nil is intended for use in debugging the display code. -Don't set to nil in normal sessions, as that is not supported. */); +Don't set to nil in normal sessions, as that is not supported. +See also `bidi-paragraph-direction'; setting that might speed up +redisplay. */); + DEFVAR_PER_BUFFER ("bidi-paragraph-start-re", &BVAR (current_buffer, bidi_paragraph_start_re), Qnil, doc: /* If non-nil, a regexp matching a line that starts OR separates paragraphs. From 7e62778548265202120ae32d90f82a064bcdf576 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 13 Jul 2019 14:24:15 +0300 Subject: [PATCH 510/567] ; Another minor change in 'bidi-display-reordering's doc string. --- src/buffer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/buffer.c b/src/buffer.c index e01f5861e27f..6a8da12471fe 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -5629,8 +5629,8 @@ This variable is never applied to a way of decoding a file while reading it. */ doc: /* Non-nil means reorder bidirectional text for display in the visual order. Setting this to nil is intended for use in debugging the display code. Don't set to nil in normal sessions, as that is not supported. -See also `bidi-paragraph-direction'; setting that might speed up -redisplay. */); +See also `bidi-paragraph-direction'; setting that non-nil might +speed up redisplay. */); DEFVAR_PER_BUFFER ("bidi-paragraph-start-re", &BVAR (current_buffer, bidi_paragraph_start_re), Qnil, From b2fde4b5e8e91aa57313af09465091303eeb7d39 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Sun, 14 Jul 2019 09:31:26 +0200 Subject: [PATCH 511/567] * doc/lispref/text.texi (Mode-Specific Indent): Fix a typo (bug#36646). --- doc/lispref/text.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index f3d222b70830..f44659c622d1 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -2332,7 +2332,7 @@ Here is what it does: @itemize @item First, it checks whether Transient Mark mode is enabled and the region -is active. If so, it called @code{indent-region} to indent all the +is active. If so, it calls @code{indent-region} to indent all the text in the region (@pxref{Region Indent}). @item From 76538d09b711c9f0fb2a48be70f12e776c4ecbb5 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Wed, 17 Jul 2019 15:02:21 +0100 Subject: [PATCH 512/567] Fix typo in package-alist docstring Pointed out by Michael Heerdegen . * lisp/emacs-lisp/package.el (package-alist): Fix docstring grammar (bug#17403). --- lisp/emacs-lisp/package.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 46f7c912726a..ab02134bbd8b 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -534,8 +534,8 @@ name (a symbol) and DESC is a `package--bi-desc' structure.") (defvar package-alist nil "Alist of all packages available for activation. Each element has the form (PKG . DESCS), where PKG is a package -name (a symbol) and DESCS is a non-empty list of `package-desc' structure, -sorted by decreasing versions. +name (a symbol) and DESCS is a non-empty list of `package-desc' +structures, sorted by decreasing versions. This variable is set automatically by `package-load-descriptor', called via `package-initialize'. To change which packages are From 021f32cca1b9082e7219b06aee28c00c4323a72a Mon Sep 17 00:00:00 2001 From: "N. Jackson" Date: Mon, 15 Jul 2019 18:22:44 -0400 Subject: [PATCH 513/567] * doc/misc/forms.texi (Control File Format): Fix a doc error. (Bug#36693) Copyright-paperwork-exempt: yes --- doc/misc/forms.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi index d669ed6d0388..9423f9460918 100644 --- a/doc/misc/forms.texi +++ b/doc/misc/forms.texi @@ -431,7 +431,7 @@ file. Example: If the control file does not set @code{forms-format-list} a default format is used. In this situation, Forms mode will deduce the number of fields from the data file providing this file exists and -@code{forms-number-of-records} has not been set in the control file. +@code{forms-number-of-fields} has not been set in the control file. The control file can optionally set the following additional Forms mode variables. Most of them have default values that are good for most From 150bdfe43acde8423612cbff4eafbbb88878b497 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Wed, 17 Jul 2019 07:20:20 -0400 Subject: [PATCH 514/567] Handle completely undecoded input in term (Bug#29918) * lisp/term.el (term-emulate-terminal): Avoid errors if the whole decoded string is eight-bit characters. Don't attempt to save the string for next iteration in that case. * test/lisp/term-tests.el (term-decode-partial) (term-undecodable-input): New tests. --- lisp/term.el | 9 +++++---- test/lisp/term-tests.el | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lisp/term.el b/lisp/term.el index cbef68dc0ace..9785ce30249e 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -2900,11 +2900,12 @@ See `term-prompt-regexp'." ;; next time. (when (= funny str-length) (let ((partial 0)) - (while (eq (char-charset (aref decoded-substring - (- count 1 partial))) - 'eight-bit) + (while (and (< partial count) + (eq (char-charset (aref decoded-substring + (- count 1 partial))) + 'eight-bit)) (cl-incf partial)) - (when (> partial 0) + (when (> count partial 0) (setq term-terminal-undecoded-bytes (substring decoded-substring (- partial))) (setq decoded-substring diff --git a/test/lisp/term-tests.el b/test/lisp/term-tests.el index c2b90dea6046..237e19d6b159 100644 --- a/test/lisp/term-tests.el +++ b/test/lisp/term-tests.el @@ -144,6 +144,25 @@ This is a reduced example from GNU nano's initial screen." `("\e[1;3r" "\e[2;1H" ,x "\r\e[1A" ,y)) (concat y "\n" x))))) +(ert-deftest term-decode-partial () ;; Bug#25288. + "Test multibyte characters sent into multiple chunks." + ;; Set `locale-coding-system' so test will be deterministic. + (let* ((locale-coding-system 'utf-8-unix) + (string (make-string 7 ?ш)) + (bytes (encode-coding-string string locale-coding-system))) + (should (equal string + (term-test-screen-from-input + 40 1 `(,(substring bytes 0 (/ (length bytes) 2)) + ,(substring bytes (/ (length bytes) 2)))))))) + +(ert-deftest term-undecodable-input () ;; Bug#29918. + "Undecodable bytes should be passed through without error." + (let* ((locale-coding-system 'utf-8-unix) ; As above. + (bytes "\376\340\360\370") + (string (decode-coding-string bytes locale-coding-system))) + (should (equal string + (term-test-screen-from-input + 40 1 bytes))))) (provide 'term-tests) From 05924677f065c019bdbceeced995ae806f2e243c Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Mon, 22 Jul 2019 14:57:41 +0000 Subject: [PATCH 515/567] * doc/lispref/display.texi (Defining Faces): Say a face can't be undefined. --- doc/lispref/display.texi | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 276d60b21a71..9eb406b3c6a2 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -2476,6 +2476,11 @@ face name. In the vast majority of cases, this is not necessary; the usual procedure is to define a face with @code{defface}, and then use its name directly. +@cindex face (non-removability of) +Note that once you have defined a face (usually with @code{defface}), +you cannot later undefine this face safely, except by restarting +Emacs. + @defmac defface face spec doc [keyword value]@dots{} This macro declares @var{face} as a named face whose default face spec is given by @var{spec}. You should not quote the symbol @var{face}, From 086a56ed43de17015a14a4f1e799d258a789440a Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Mon, 22 Jul 2019 21:14:18 +0100 Subject: [PATCH 516/567] Clarify Gravatar docs For discussion, see the following thread: https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00528.html * doc/misc/gnus.texi (X-Face): Fix cross-reference. (Gravatars): * lisp/gnus/gnus-gravatar.el (gnus-gravatar-too-ugly): * lisp/image/gravatar.el (gravatar-cache-ttl, gravatar-rating) (gravatar-size): Clarify user option descriptions. (gravatar-retrieve, gravatar-retrieve-synchronously): Document return value. --- doc/misc/gnus.texi | 26 +++++++++++++++----------- lisp/gnus/gnus-gravatar.el | 3 ++- lisp/image/gravatar.el | 35 ++++++++++++++++++++++++++++------- 3 files changed, 45 insertions(+), 19 deletions(-) diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index ee504f5d3516..f0458847295d 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -23441,11 +23441,11 @@ XEmacs. Here are examples: (png . (:relief -2)))) @end lisp -@pxref{Image Descriptors, ,Image Descriptors, elisp, The Emacs Lisp -Reference Manual} for the valid properties for various image types. -Currently, @code{pbm} is used for X-Face images and @code{png} is used -for Face images in Emacs. Only the @code{:face} property is effective -on the @code{xface} image type in XEmacs if it is built with the +@xref{Image Descriptors,,, elisp, The Emacs Lisp Reference Manual}, +for the valid properties for various image types. Currently, +@code{pbm} is used for X-Face images and @code{png} is used for Face +images in Emacs. Only the @code{:face} property is effective on the +@code{xface} image type in XEmacs if it is built with the @samp{libcompface} library. @end table @@ -23716,21 +23716,25 @@ The following variables offer control over how things are displayed. @item gnus-gravatar-size @vindex gnus-gravatar-size The size in pixels of gravatars. Gravatars are always square, so one -number for the size is enough. +number for the size is enough. If @code{nil}, this defaults to the +value of @code{gravatar-size}. @item gnus-gravatar-properties @vindex gnus-gravatar-properties -List of image properties applied to Gravatar images. +List of image properties applied to Gravatar images (@pxref{Image +Descriptors,,, elisp, The Emacs Lisp Reference Manual}). @item gnus-gravatar-too-ugly @vindex gnus-gravatar-too-ugly -Regexp that matches mail addresses or names of people of which avatars -should not be displayed, or @code{nil}. It default to the value of -@code{gnus-article-x-face-too-ugly} (@pxref{X-Face}). +Regexp that matches mail addresses or names of people whose avatars +should not be displayed, or @code{nil} to display all avatars. It +defaults to the value of @code{gnus-article-x-face-too-ugly} +(@pxref{X-Face}). @end table -If you want to see them in the From field, set: +If you want to see gravatars in the From field, set: + @lisp (setq gnus-treat-from-gravatar 'head) @end lisp diff --git a/lisp/gnus/gnus-gravatar.el b/lisp/gnus/gnus-gravatar.el index d271a52f908c..19cbf529c659 100644 --- a/lisp/gnus/gnus-gravatar.el +++ b/lisp/gnus/gnus-gravatar.el @@ -46,7 +46,8 @@ If nil, default to `gravatar-size'." :group 'gnus-gravatar) (defcustom gnus-gravatar-too-ugly gnus-article-x-face-too-ugly - "Regexp matching posters whose avatar shouldn't be shown automatically." + "Regexp matching posters whose avatar shouldn't be shown automatically. +If nil, show all avatars." :type '(choice regexp (const nil)) :version "24.1" :group 'gnus-gravatar) diff --git a/lisp/image/gravatar.el b/lisp/image/gravatar.el index 2b106ba0675b..76c1ac1644de 100644 --- a/lisp/image/gravatar.el +++ b/lisp/image/gravatar.el @@ -40,18 +40,35 @@ ;; FIXME a time value is not the nicest format for a custom variable. (defcustom gravatar-cache-ttl (days-to-time 30) - "Time to live for gravatar cache entries." + "Time to live for gravatar cache entries. +If a requested gravatar has been cached for longer than this, it +is retrieved anew." :type '(repeat integer) :group 'gravatar) -;; FIXME Doc is tautological. What are the options? (defcustom gravatar-rating "g" - "Default rating for gravatar." + "Most explicit Gravatar rating level to allow. +Some gravatars are rated according to how suitable they are for +different audiences. The supported rating levels are, in order +of increasing explicitness, the following: + +\"g\" - Suitable for any audience. +\"pg\" - May contain rude gestures, provocatively dressed + individuals, mild profanity, or mild violence. +\"r\" - May contain harsh profanity, intense violence, nudity, + or hard drug use. +\"x\" - May contain hardcore sexual imagery or extremely + disturbing violence. + +Each level covers itself as well as all less explicit levels. +For example, setting this variable to \"pg\" will allow gravatars +rated either \"g\" or \"pg\"." :type 'string :group 'gravatar) (defcustom gravatar-size 32 - "Default size in pixels for gravatars." + "Gravatar size in pixels to request. +Valid sizes range from 1 to 2048 inclusive." :type 'integer :group 'gravatar) @@ -104,8 +121,10 @@ If no image available, return 'error." ;;;###autoload (defun gravatar-retrieve (mail-address cb &optional cbargs) - "Retrieve MAIL-ADDRESS gravatar and call CB on retrieval. -You can provide a list of argument to pass to CB in CBARGS." + "Asynchronously retrieve a gravatar for MAIL-ADDRESS. +When finished, call CB as (apply CB GRAVATAR CBARGS), +where GRAVATAR is either an image descriptor, or the symbol +`error' if the retrieval failed." (let ((url (gravatar-build-url mail-address))) (if (gravatar-cache-expired url) (let ((args (list url @@ -126,7 +145,9 @@ You can provide a list of argument to pass to CB in CBARGS." ;;;###autoload (defun gravatar-retrieve-synchronously (mail-address) - "Retrieve MAIL-ADDRESS gravatar and returns it." + "Synchronously retrieve a gravatar for MAIL-ADDRESS. +Value is either an image descriptor, or the symbol `error' if the +retrieval failed." (let ((url (gravatar-build-url mail-address))) (if (gravatar-cache-expired url) (with-current-buffer (url-retrieve-synchronously url) From 78e6c2ada6e04c3fe3e1d4777cb316a514d510dd Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 25 Jul 2019 22:50:07 +0200 Subject: [PATCH 517/567] * etc/AUTHORS: Update. --- etc/AUTHORS | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/etc/AUTHORS b/etc/AUTHORS index 3f60303a459a..9fa657337ad9 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -93,10 +93,10 @@ Alakazam Petrofsky: changed hanoi.el Alan Mackenzie: wrote cc-awk.el and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-fonts.el cc-langs.el cc-mode.el cc-styles.el cc-vars.el -and changed cc-mode.texi bytecomp.el subr.el edebug.el follow.el - modes.texi syntax.texi display.texi font-lock.el isearch.el - programs.texi help.el ispell.el lread.c windows.texi control.texi - cus-start.el doc.c eval.c frames.texi help-fns.el and 134 other files +and changed cc-mode.texi bytecomp.el subr.el display.texi edebug.el + follow.el modes.texi syntax.texi font-lock.el isearch.el programs.texi + help.el ispell.el lread.c windows.texi control.texi cus-start.el doc.c + eval.c frames.texi help-fns.el and 134 other files Alan Modra: changed unexelf.c @@ -441,10 +441,10 @@ Bartosz Duszel: changed allout.el bib-mode.el cc-cmds.el hexl.el icon.el xscheme.el Basil L. Contovounesios: changed simple.el message.el customize.texi - sequences.texi bibtex.el css-mode-tests.el css-mode.el display.texi - electric.el eval.texi functions.texi gnus-art.el ibuffer.el - image-tests.el image.el indent.el internals.texi json-tests.el json.el - lists.texi man.el and 10 other files + internals.texi sequences.texi bibtex.el css-mode-tests.el css-mode.el + display.texi electric.el eval.texi functions.texi gnus-art.el + gnus-gravatar.el gnus.texi gravatar.el ibuffer.el image-tests.el + image.el indent.el json-tests.el and 14 other files Bastian Beischer: changed include.el mru-bookmark.el refs.el semantic/complete.el senator.el @@ -1382,10 +1382,10 @@ Era Eriksson: changed bibtex.el dired.el json.el ses.el ses.texi shell.el tramp.el tramp.texi Eric Abrahamsen: changed eieio-base.el registry.el nnimap.el - gnus-registry.el files.el files.texi gnus-sum.el windows.texi - eieio-test-persist.el eieio.el gnus-start.el gnus.texi nnir.el - buffers.texi checkdoc.el files-tests.el gnus-bcklg.el gnus-group.el - nnmairix.el org.el org.texi and 4 other files + gnus-registry.el files.el files.texi gnus-sum.el nnir.el windows.texi + eieio-test-persist.el eieio.el gnus-start.el gnus.texi buffers.texi + checkdoc.el files-tests.el gnus-bcklg.el gnus-group.el nnmairix.el + org.el org.texi and 4 other files Eric Bélanger: changed image.c @@ -2513,7 +2513,7 @@ Juanma Barranquero: wrote emacs-lock.el frameset.el keymap-tests.el and changed subr.el desktop.el w32fns.c server.el emacsclient.c simple.el faces.el files.el bs.el help-fns.el w32term.c org.el xdisp.c keyboard.c w32.c buffer.c ido.el image.c window.c allout.el process.c - and 1135 other files + and 1140 other files Juan Pechiar: wrote ob-mscgen.el and changed ob-octave.el @@ -3141,7 +3141,7 @@ Markus Triska: wrote linum.el and changed bytecomp.el byte-opt.el doctor.el image-mode.el processes.texi calc-math.el emacs.c expand.el flymake.el flymake.texi flyspell.el handwrite.el internals.texi proced.el prolog.el ps-mode.el - speedbar.el subr.el tumme.el widget.texi windows.texi xterm.c + speedbar.el subr.el text.texi tumme.el widget.texi and 3 other files Mark W. Eichin: changed keyboard.c xterm.c @@ -3265,7 +3265,7 @@ Matt Hodges: changed textmodes/table.el faces.el iswitchb.el simple.el edebug.texi eldoc.el em-hist.el em-pred.el fixit.texi icon.el ido.el locate.el paragraphs.el pcomplete.el repeat.el and 3 other files -Mattias Engdegård: changed subr.el +Mattias Engdegård: changed searching.texi subr.el Matt Lundin: changed org-agenda.el org.el org-bibtex.el org-footnote.el ox-publish.el org-bbdb.el org-datetree.el org-gnus.el @@ -3648,7 +3648,7 @@ Nils Ackermann: changed message.el nnmh.el reftex-vars.el Nitish Chandra: changed simple.el -N. Jackson: changed emacs.texi +N. Jackson: changed emacs.texi forms.texi Noah Friedman: wrote eldoc.el rlogin.el type-break.el and co-wrote erc-dcc.el @@ -3660,8 +3660,8 @@ and changed rsz-mini.el emacs-buffer.gdb comint.el files.el Makefile Noah Lavine: changed tramp.el Noam Postavsky: changed lisp-mode.el progmodes/python.el xdisp.c - lisp-mode-tests.el cl-macs.el emacs-lisp/debug.el bytecomp.el data.c - simple.el term.el ert.el help-fns.el subr.el modes.texi processes.texi + lisp-mode-tests.el cl-macs.el emacs-lisp/debug.el term.el bytecomp.el + data.c simple.el ert.el help-fns.el subr.el modes.texi processes.texi cl-print.el elisp-mode.el eval.c ffap.el search.c sh-script.el and 259 other files @@ -4173,10 +4173,10 @@ Roberto Rodríguez: changed ada-mode.texi glossary.texi widget.texi Robert P. Goldman: changed org.texi ob-exp.el org.el ox-latex.el Robert Pluim: changed gtkutil.c configure.ac files.texi dired-x.texi - ftfont.c misc.texi process.c vc-git.el xfns.c xterm.c bindings.el - building.texi desktop.el efaq.texi epa.texi filelock.c font.c + filelock.c ftfont.c misc.texi process.c vc-git.el xfns.c xterm.c + bindings.el building.texi desktop.el efaq.texi epa.texi font.c ftcrfont.c gnus-agent.el gnus-demon.el gnus-icalendar.el - and 21 other files + and 22 other files Robert Thorpe: changed cus-start.el indent.el @@ -4512,7 +4512,8 @@ Stefan Bruda: co-wrote prolog.el Stefan Guath: changed find-dired.el -Stefan Kangas: changed bookmark.el +Stefan Kangas: changed bookmark.el buffer.c fileio.c windows.texi + winner.el Stefan Merten: co-wrote rst.el @@ -4527,7 +4528,7 @@ and co-wrote font-lock.el gitmerge.el pcvs.el and changed subr.el simple.el keyboard.c lisp.h bytecomp.el files.el vc.el cl-macs.el xdisp.c alloc.c eval.c sh-script.el progmodes/compile.el keymap.c tex-mode.el newcomment.el buffer.c - window.c lisp-mode.el lread.c vc-hooks.el and 1282 other files + window.c lisp-mode.el lread.c vc-hooks.el and 1283 other files Stefano Facchini: changed gtkutil.c @@ -5207,7 +5208,7 @@ Yair F: changed hebrew.el Yamamoto Mitsuharu: wrote uvs.el and changed macterm.c macfns.c mac-win.el mac.c macterm.h macmenu.c xterm.c macgui.h image.c xdisp.c keyboard.c macselect.c w32term.c - macfont.m src/Makefile.in unexmacosx.c xfns.c configure.ac emacs.c + macfont.m configure.ac src/Makefile.in unexmacosx.c xfns.c emacs.c darwin.h dispnew.c and 97 other files Yann Dirson: changed imenu.el From 16a529e215331626f66160194701b74248cb9fa5 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Sun, 14 Jul 2019 05:59:46 +0200 Subject: [PATCH 518/567] Remove upload functionality of package-x from the elisp manual Suggested by Stefan Monnier. Ref: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=19537#8 * doc/lispref/package.texi (Package Archives): Don't document package-x upload functions in the elisp manual, since they are not very commonly used. (Bug#19537) * lisp/emacs-lisp/package-x.el (package-archive-upload-base) (package-upload-buffer, package-upload-file): Add to the doc strings any details removed from the elisp manual that would otherwise be missing. --- doc/lispref/package.texi | 35 ----------------------------------- lisp/emacs-lisp/package-x.el | 13 +++++++++++-- 2 files changed, 11 insertions(+), 37 deletions(-) diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi index 39bdc01a75c2..8729f02bc824 100644 --- a/doc/lispref/package.texi +++ b/doc/lispref/package.texi @@ -307,41 +307,6 @@ How to accomplish this is beyond the scope of this manual. by default; type @kbd{M-x load-library @key{RET} package-x @key{RET}} to load it, or add @code{(require 'package-x)} to your init file. @xref{Lisp Libraries,, Lisp Libraries, emacs, The GNU Emacs Manual}. -Once loaded, you can make use of the following: - -@defopt package-archive-upload-base -The value of this variable is the base location of a package archive, -as a directory name. The commands in the @code{package-x} library -will use this base location. - -The directory name should be absolute. You may specify a remote name, -such as @file{/ssh:foo@@example.com:/var/www/packages/}, if the -package archive is on a different machine. @xref{Remote Files,, -Remote Files, emacs, The GNU Emacs Manual}. -@end defopt - -@deffn Command package-upload-file filename -This command prompts for @var{filename}, a file name, and uploads that -file to @code{package-archive-upload-base}. The file must be either a -simple package (a @file{.el} file) or a multi-file package (a -@file{.tar} file); otherwise, an error is raised. The package -attributes are automatically extracted, and the archive's contents -list is updated with this information. - -If @code{package-archive-upload-base} does not specify a valid -directory, the function prompts interactively for one. If the -directory does not exist, it is created. The directory need not have -any initial contents (i.e., you can use this command to populate an -initially empty archive). -@end deffn - -@deffn Command package-upload-buffer -This command is similar to @code{package-upload-file}, but instead of -prompting for a package file, it uploads the contents of the current -buffer. The current buffer must be visiting a simple package (a -@file{.el} file) or a multi-file package (a @file{.tar} file); -otherwise, an error is raised. -@end deffn @noindent After you create an archive, remember that it is not accessible in the diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el index a207ece885f6..9e63dce6d7ba 100644 --- a/lisp/emacs-lisp/package-x.el +++ b/lisp/emacs-lisp/package-x.el @@ -47,6 +47,8 @@ (defcustom package-archive-upload-base "/path/to/archive" "The base location of the archive to which packages are uploaded. +The commands in the package-x library will use this as base +location. This should be an absolute directory name. If the archive is on another machine, you may specify a remote name in the usual way, e.g. \"/ssh:foo@example.com:/var/www/packages/\". @@ -273,7 +275,9 @@ if it exists." (defun package-upload-buffer () "Upload the current buffer as a single-file Emacs Lisp package. If `package-archive-upload-base' does not specify a valid upload -destination, prompt for one." +destination, prompt for one. +Signal an error if the current buffer is not visiting a simple +package (a \".el\" file)." (interactive) (save-excursion (save-restriction @@ -286,8 +290,13 @@ destination, prompt for one." Interactively, prompt for FILE. The package is considered a single-file package if FILE ends in \".el\", and a multi-file package if FILE ends in \".tar\". +Automatically extract package attributes and update the archive's +contents list with this information. If `package-archive-upload-base' does not specify a valid upload -destination, prompt for one." +destination, prompt for one. If the directory does not exist, it +is created. The directory need not have any initial contents +\(i.e., you can use this command to populate an initially empty +archive)." (interactive "fPackage file name: ") (with-temp-buffer (insert-file-contents file) From 7f42277b96130861967de3936defb0ef5bf07fbb Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Wed, 24 Jul 2019 22:02:59 -0400 Subject: [PATCH 519/567] Mention term.el's \032 dir tracking in commentary (Bug#19524) * lisp/term.el: Mention both forms of directory tracking in commentary. Remove obsolete ChangeLog comments. Move more relevant summary comments to the top. --- lisp/term.el | 143 +++++++++++++++++++-------------------------------- 1 file changed, 52 insertions(+), 91 deletions(-) diff --git a/lisp/term.el b/lisp/term.el index 9785ce30249e..fb624e4b7a88 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -33,6 +33,21 @@ ;;; Commentary: +;; This file defines a general command-interpreter-in-a-buffer package +;; (term mode). The idea is that you can build specific process-in-a-buffer +;; modes on top of term mode -- e.g., lisp, shell, scheme, T, soar, .... +;; This way, all these specific packages share a common base functionality, +;; and a common set of bindings, which makes them easier to use (and +;; saves code, implementation time, etc., etc.). + +;; If, instead of `term', you call `ansi-term', you get multiple term +;; buffers, after every new call ansi-term opens a new +;; "*ansi-term*" window, where is, as usual, a number... + +;; For hints on converting existing process modes (e.g., tex-mode, +;; background, dbx, gdb, kermit, prolog, telnet) to use term-mode +;; instead of shell-mode, see the notes at the end of this file. + ;; Speed considerations and a few caveats ;; -------------------------------------- ;; @@ -85,13 +100,6 @@ ;; # By default nobody can't do anything ;; deny root * ;; -;; -;; ---------------------------------------- -;; -;; If, instead of 'term', you call 'ansi-term', you get multiple term -;; buffers, after every new call ansi-term opens a new *ansi-term* window, -;; where is, as usual, a number... -;; ;; ---------------------------------------- ;; ;; With the term-buffer-maximum-size you can finally decide how many @@ -100,7 +108,6 @@ ;; ;; ---------------------------------------- ;; -;; ;; ANSI colorization should work well, I've decided to limit the interpreter ;; to five outstanding commands (like ESC [ 01;04;32;41;07m. ;; You shouldn't need more, if you do, tell me and I'll increase it. It's @@ -115,38 +122,6 @@ ;; - Add hooks to allow raw-mode keys to be configurable ;; - Which keys are better ? \eOA or \e[A ? ;; -;; -;; Changes: -;; -;; V4.0 January 1997 -;; -;; - Huge reworking of the faces code: now we only have roughly 20-30 -;; faces for everything so we're even faster than the old md-term.el ! -;; - Finished removing all the J-Shell code. -;; -;; V3.0 January 1997 -;; -;; - Now all the supportable ANSI commands work well. -;; - Reworked a little the code: much less jsh-inspired stuff -;; -;; V2.3 November -;; -;; - Now all the faces are accessed through an array: much cleaner code. -;; -;; V2.2 November 4 1996 -;; -;; - Implemented ANSI output colorization ( a bit rough but enough for -;; color_ls ) -;; -;; - Implemented a maximum limit for the scroll buffer (stolen from -;; comint.el) -;; -;; v2.1 October 28 1996, first public release -;; -;; - Some new keybindings for term-char mode ( notably home/end/...) -;; - Directory, hostname and username tracking via ange-ftp -;; - Multi-term capability via the ansi-term call -;; ;; ---------------------------------------------------------------- ;; You should/could have something like this in your .emacs to take ;; full advantage of this package @@ -160,7 +135,6 @@ ;; (auto-fill-mode -1) ;; (setq tab-width 8 )))) ;; -;; ;; ---------------------------------------- ;; ;; If you want to use color ls the best setup is to have a different file @@ -171,7 +145,6 @@ ;; ;; ---------------------------------------- ;; -;; ;; # Configuration file for the color ls utility ;; # This file goes in the /etc directory, and must be world readable. ;; # You can copy this file to .dir_colors in your $HOME directory to @@ -228,17 +201,23 @@ ;; .xbm 01;35 ;; .xpm 01;35 ;; -;; ;; ---------------------------------------- ;; -;; Notice: for directory/host/user tracking you need to have something -;; like this in your shell startup script (this is for a POSIXish shell -;; like Bash but should be quite easy to port to other shells). +;; There are actually two methods for directory tracking, one +;; implemented in `term-command-hook' which sets the directory +;; according to an escape sequence of the form "\032\n". +;; Some shells like bash will already send this escape sequence when +;; they detect they are running in Emacs. This can be configured or +;; disabled on the Emacs side by setting `term-command-hook' to +;; a different function. ;; -;; For troubleshooting in Bash, you can check the definition of the -;; custom functions with the "type" command. e.g. "type cd". If you -;; do not see the expected definition from the config below, then the -;; directory tracking will not work. +;; The second method is in `term-handle-ansi-terminal-messages' which +;; sets user, host, and directory according to escape sequences of the +;; form "\033AnSiTc \n" (replace the "c" with "u" and "h" +;; for user and host, respectively). If the user and host don't +;; match, it will set directory to a remote one, so it is important to +;; set user and host correctly first. See the example bash +;; configuration below. ;; ;; ---------------------------------------- ;; @@ -262,42 +241,24 @@ ;; ;; # The \033 stands for ESC. ;; # There is a space between "AnSiT?" and $whatever. +;; printf '\033AnSiTh %s\n' "$HOSTNAME" +;; printf '\033AnSiTu %s\n' "$USER" +;; printf '\033AnSiTc %s\n' "$PWD" ;; ;; cd() { command cd "$@"; printf '\033AnSiTc %s\n' "$PWD"; } ;; pushd() { command pushd "$@"; printf '\033AnSiTc %s\n' "$PWD"; } ;; popd() { command popd "$@"; printf '\033AnSiTc %s\n' "$PWD"; } ;; -;; printf '\033AnSiTc %s\n' "$PWD" -;; printf '\033AnSiTh %s\n' "$HOSTNAME" -;; printf '\033AnSiTu %s\n' "$USER" -;; ;; # Use custom dircolors in term buffers. ;; # eval $(dircolors $HOME/.emacs_dircolors) ;; esac ;; ;; # ... ;; -;; - -;;; Original Commentary: -;; --------------------- - -;; The changelog is at the end of this file. - -;; Please send me bug reports, bug fixes, and extensions, so that I can -;; merge them into the master source. -;; - Per Bothner (bothner@cygnus.com) - -;; This file defines a general command-interpreter-in-a-buffer package -;; (term mode). The idea is that you can build specific process-in-a-buffer -;; modes on top of term mode -- e.g., lisp, shell, scheme, T, soar, .... -;; This way, all these specific packages share a common base functionality, -;; and a common set of bindings, which makes them easier to use (and -;; saves code, implementation time, etc., etc.). - -;; For hints on converting existing process modes (e.g., tex-mode, -;; background, dbx, gdb, kermit, prolog, telnet) to use term-mode -;; instead of shell-mode, see the notes at the end of this file. +;; For troubleshooting in Bash, you can check the definition of the +;; custom functions with the "type" command. e.g. "type cd". If you +;; do not see the expected definition from the config below, then the +;; directory tracking will not work. ;; Brief Command Documentation: @@ -305,21 +266,21 @@ ;; Term Mode Commands: (common to all derived modes, like cmushell & cmulisp ;; mode) ;; -;; m-p term-previous-input Cycle backwards in input history -;; m-n term-next-input Cycle forwards -;; m-r term-previous-matching-input Previous input matching a regexp -;; m-s comint-next-matching-input Next input that matches +;; M-p term-previous-input Cycle backwards in input history +;; M-n term-next-input Cycle forwards +;; M-r term-previous-matching-input Previous input matching a regexp +;; M-s comint-next-matching-input Next input that matches ;; return term-send-input -;; c-c c-a term-bol Beginning of line; skip prompt. -;; c-d term-delchar-or-maybe-eof Delete char unless at end of buff. -;; c-c c-u term-kill-input ^u -;; c-c c-w backward-kill-word ^w -;; c-c c-c term-interrupt-subjob ^c -;; c-c c-z term-stop-subjob ^z -;; c-c c-\ term-quit-subjob ^\ -;; c-c c-o term-kill-output Delete last batch of process output -;; c-c c-r term-show-output Show last batch of process output -;; c-c c-h term-dynamic-list-input-ring List input history +;; C-c C-a term-bol Beginning of line; skip prompt. +;; C-d term-delchar-or-maybe-eof Delete char unless at end of buff. +;; C-c C-u term-kill-input ^u +;; C-c C-w backward-kill-word ^w +;; C-c C-c term-interrupt-subjob ^c +;; C-c C-z term-stop-subjob ^z +;; C-c C-\ term-quit-subjob ^\ +;; C-c C-o term-kill-output Delete last batch of process output +;; C-c C-r term-show-output Show last batch of process output +;; C-c C-h term-dynamic-list-input-ring List input history ;; ;; Not bound by default in term-mode ;; term-send-invisible Read a line w/o echo, and send to proc @@ -329,8 +290,8 @@ ;; term-replace-by-expanded-filename Expand and complete filename at point; ;; replace with expanded/completed name. ;; term-kill-subjob No mercy. -;; term-show-maximum-output Show as much output as possible. -;; term-continue-subjob Send CONT signal to buffer's process +;; term-show-maximum-output Show as much output as possible. +;; term-continue-subjob Send CONT signal to buffer's process ;; group. Useful if you accidentally ;; suspend your process (with C-c C-z). From f67195028467e26348cab3a6cdc97034cd93f897 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Wed, 24 Jul 2019 23:15:07 -0400 Subject: [PATCH 520/567] * etc/NEWS.25: Belatedly announce rcirc-reconnect-delay. --- etc/NEWS.25 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/etc/NEWS.25 b/etc/NEWS.25 index 98aec3cd2793..d45f1ddabedc 100644 --- a/etc/NEWS.25 +++ b/etc/NEWS.25 @@ -452,6 +452,11 @@ specified message types for the respective specified targets. *** Nick completion is now case-insensitive again after inadvertently being made case-sensitive in Emacs 24.2. +** Rcirc + +*** Rcirc now supports automatic reconnection. +Set new user option 'rcirc-reconnect-delay' to non-zero to enable it. + ** MPC *** New commands, key binds, and menu items. From b3e20737d83acbbbec372645e2a951293d84bd29 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Wed, 24 Jul 2019 20:33:18 -0400 Subject: [PATCH 521/567] Fix subproc listening when setting filter to non-t (Bug#36591) * src/process.c (Fset_process_filter): Call add_process_read_fd according to the state of process filter before it's updated. This restores the correct functioning as it was before 2016-02-16 "Allow setting the filter masks later". Inline the set_process_filter_masks call instead of fixing it that function, because it is also called from connect_network_socket, and we don't want to change the behavior of that function so close to release. * test/src/process-tests.el (set-process-filter-t): New test. --- src/process.c | 15 ++++++++++++--- test/src/process-tests.el | 29 +++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/process.c b/src/process.c index 2df51cfd9965..b602507765e9 100644 --- a/src/process.c +++ b/src/process.c @@ -1268,10 +1268,19 @@ The string argument is normally a multibyte string, except: if (NILP (filter)) filter = Qinternal_default_process_filter; - pset_filter (p, filter); - if (p->infd >= 0) - set_process_filter_masks (p); + { + /* If filter WILL be t, stop reading output. */ + if (EQ (filter, Qt) && !EQ (p->status, Qlisten)) + delete_read_fd (p->infd); + else if (/* If filter WAS t, then resume reading output. */ + EQ (p->filter, Qt) + /* Network or serial process not stopped: */ + && !EQ (p->command, Qt)) + add_process_read_fd (p->infd); + } + + pset_filter (p, filter); if (NETCONN1_P (p) || SERIALCONN1_P (p) || PIPECONN1_P (p)) pset_childp (p, Fplist_put (p->childp, QCfilter, filter)); diff --git a/test/src/process-tests.el b/test/src/process-tests.el index 7cccc5a02cb6..7a6762a9226a 100644 --- a/test/src/process-tests.el +++ b/test/src/process-tests.el @@ -144,6 +144,35 @@ (should (equal "hello stderr!\n" (mapconcat #'identity (nreverse stderr-output) ""))))) +(ert-deftest set-process-filter-t () + "Test setting process filter to t and back." ;; Bug#36591 + (with-temp-buffer + (let* ((print-level nil) + (print-length nil) + (proc (start-process + "test proc" (current-buffer) + (concat invocation-directory invocation-name) + "-Q" "--batch" "--eval" + (prin1-to-string + '(let (s) + (while (setq s (read-from-minibuffer "$ ")) + (princ s) + (princ "\n"))))))) + (set-process-query-on-exit-flag proc nil) + (send-string proc "one\n") + (should + (accept-process-output proc 1)) ; Read "one". + (should (equal (buffer-string) "$ one\n$ ")) + (set-process-filter proc t) ; Stop reading from proc. + (send-string proc "two\n") + (should-not + (accept-process-output proc 1)) ; Can't read "two" yet. + (should (equal (buffer-string) "$ one\n$ ")) + (set-process-filter proc nil) ; Resume reading from proc. + (should + (accept-process-output proc 1)) ; Read "two" from proc. + (should (equal (buffer-string) "$ one\n$ two\n$ "))))) + (ert-deftest start-process-should-not-modify-arguments () "`start-process' must not modify its arguments in-place." ;; See bug#21831. From d6ca1fc531ce6e6abbbe273187420ee5cc8c8b26 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 25 Jul 2019 22:51:28 -0400 Subject: [PATCH 522/567] ; * lisp/term.el: Add missing / to esc seq commentary. --- lisp/term.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/term.el b/lisp/term.el index fb624e4b7a88..5ace5e341d05 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -205,7 +205,7 @@ ;; ;; There are actually two methods for directory tracking, one ;; implemented in `term-command-hook' which sets the directory -;; according to an escape sequence of the form "\032\n". +;; according to an escape sequence of the form "\032/\n". ;; Some shells like bash will already send this escape sequence when ;; they detect they are running in Emacs. This can be configured or ;; disabled on the Emacs side by setting `term-command-hook' to From d4c49875eaae3078ea3b51cc7b72ae3403cb2c04 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Fri, 26 Jul 2019 17:18:19 +0200 Subject: [PATCH 523/567] Update view-mode docstring Not all the kill commands save the text in the kill ring by default (e.g. `kill-rectangle'). It is more precise to just say that the kill commands save the text and do not change the buffer (Bug#36741). * lisp/view.el (view-mode): Update docstring. --- lisp/view.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/view.el b/lisp/view.el index 3d423f17480a..5e6f3e2caa90 100644 --- a/lisp/view.el +++ b/lisp/view.el @@ -386,8 +386,8 @@ and disable it otherwise. If called from Lisp, enable View mode if ARG is omitted or nil. When View mode is enabled, commands that do not change the buffer -contents are available as usual. Kill commands insert text in -kill buffers but do not delete. Most other commands beep and +contents are available as usual. Kill commands save text but +do not delete it from the buffer. Most other commands beep and tell the user that the buffer is read-only. \\ From 304e96f50d49e142edd8ec1b1c7d9fb1ce9a7385 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Tue, 30 Jul 2019 09:23:22 +0200 Subject: [PATCH 524/567] Fix doc-string of 'fit-window-to-buffer' (Bug#36848) * lisp/window.el (fit-window-to-buffer): Fix doc-string. Suggested by Drew Adams --- lisp/window.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/window.el b/lisp/window.el index de110111b5ad..a86c2f96bdcd 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -8285,7 +8285,7 @@ and defaults to `window-min-width'. Both MAX-WIDTH and MIN-WIDTH are specified in columns and include fringes, margins, a scrollbar and a vertical divider, if any. -If the optional argument `preserve-size' is non-nil, preserve the +Optional argument PRESERVE-SIZE non-nil means to preserve the size of WINDOW (see `window-preserve-size'). Fit pixelwise if the option `window-resize-pixelwise' is non-nil. From 1d9efc0b3a60fda86885001b229b6528ffb931df Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sun, 28 Jul 2019 12:15:33 -0400 Subject: [PATCH 525/567] Add index for "\( in strings" (Bug#25195) * doc/emacs/programs.texi (Left Margin Paren): Add index for "\( in strings". * doc/lispref/positions.texi (List Motion): Add index, and cross reference. --- doc/emacs/programs.texi | 1 + doc/lispref/positions.texi | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index 1d6f3e0459a1..4c42b1078de5 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -173,6 +173,7 @@ features that use them will also give you trouble. This includes the indentation commands (@pxref{Program Indent}) and Font Lock mode (@pxref{Font Lock}). +@cindex \( in strings The most likely problem case is when you want an opening delimiter at the start of a line inside a string. To avoid trouble, put an escape character (@samp{\}, in C and Emacs Lisp, @samp{/} in some diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index 770779346739..a5a51f0a0bfb 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi @@ -794,11 +794,15 @@ on a line that starts with a match for this regular expression, followed by a character with open-parenthesis syntax. @end defopt +@cindex \( in strings @defopt open-paren-in-column-0-is-defun-start If this variable's value is non-@code{nil}, an open parenthesis in column 0 is considered to be the start of a defun. If it is @code{nil}, an open parenthesis in column 0 has no special meaning. -The default is @code{t}. +The default is @code{t}. If a string literal happens to have a +parenthesis in column 0, escape it with backslash to avoid a false +positive, @xref{Left Margin Paren,, Left Margin Convention, emacs, The +GNU Emacs Manual}. @end defopt @defvar beginning-of-defun-function From 8fbe46252f5f241d274b59c6b1aaecd3ee58cc6a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 30 Jul 2019 17:50:32 +0300 Subject: [PATCH 526/567] ; * doc/lispref/positions.texi (List Motion): Fix last change. --- doc/lispref/positions.texi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index a5a51f0a0bfb..cd9587ba4bdb 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi @@ -800,9 +800,9 @@ If this variable's value is non-@code{nil}, an open parenthesis in column 0 is considered to be the start of a defun. If it is @code{nil}, an open parenthesis in column 0 has no special meaning. The default is @code{t}. If a string literal happens to have a -parenthesis in column 0, escape it with backslash to avoid a false -positive, @xref{Left Margin Paren,, Left Margin Convention, emacs, The -GNU Emacs Manual}. +parenthesis in column 0, escape it with a backslash to avoid a false +positive. @xref{Left Margin Paren,, Left Margin Convention, emacs, +The GNU Emacs Manual}. @end defopt @defvar beginning-of-defun-function From 0148fc73538e2dccb586abe80ba48fdaf2041ca7 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 1 Aug 2019 06:08:11 -0700 Subject: [PATCH 527/567] ; Auto-commit of loaddefs files. --- lisp/ldefs-boot.el | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index bb9991873df9..99c4f86e6f77 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -69,6 +69,7 @@ should return a grid vector array that is the new solution. ;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (0 0 0 0)) ;;; Generated autoloads from progmodes/ada-mode.el +(push (purecopy '(ada-mode 4 0)) package--builtin-versions) (autoload 'ada-add-extensions "ada-mode" "\ Define SPEC and BODY as being valid extensions for Ada files. @@ -15194,13 +15195,17 @@ Like `goto-address-mode', but only for comments and strings. ;;; Generated autoloads from image/gravatar.el (autoload 'gravatar-retrieve "gravatar" "\ -Retrieve MAIL-ADDRESS gravatar and call CB on retrieval. -You can provide a list of argument to pass to CB in CBARGS. +Asynchronously retrieve a gravatar for MAIL-ADDRESS. +When finished, call CB as (apply CB GRAVATAR CBARGS), +where GRAVATAR is either an image descriptor, or the symbol +`error' if the retrieval failed. \(fn MAIL-ADDRESS CB &optional CBARGS)" nil nil) (autoload 'gravatar-retrieve-synchronously "gravatar" "\ -Retrieve MAIL-ADDRESS gravatar and returns it. +Synchronously retrieve a gravatar for MAIL-ADDRESS. +Value is either an image descriptor, or the symbol `error' if the +retrieval failed. \(fn MAIL-ADDRESS)" nil nil) @@ -16256,7 +16261,11 @@ See `hi-lock-mode' for more information on Hi-Lock mode. (defalias 'highlight-lines-matching-regexp 'hi-lock-line-face-buffer) (autoload 'hi-lock-line-face-buffer "hi-lock" "\ -Set face of all lines containing a match of REGEXP to FACE. +Highlight all lines that match REGEXP using FACE. +The lines that match REGEXP will be displayed by merging +the attributes of FACE with any other face attributes +of text in those lines. + Interactively, prompt for REGEXP using `read-regexp', then FACE. Use the global history list for FACE. @@ -32308,6 +32317,7 @@ and `sc-post-hook' is run after the guts of this function. ;;;### (autoloads nil "svg" "svg.el" (0 0 0 0)) ;;; Generated autoloads from svg.el +(push (purecopy '(svg 0 5)) package--builtin-versions) (if (fboundp 'register-definition-prefixes) (register-definition-prefixes "svg" '("svg-"))) @@ -36595,6 +36605,7 @@ Key bindings: ;;;### (autoloads nil "verilog-mode" "progmodes/verilog-mode.el" ;;;;;; (0 0 0 0)) ;;; Generated autoloads from progmodes/verilog-mode.el +(push (purecopy '(verilog-mode 2017 8 7 201875024)) package--builtin-versions) (autoload 'verilog-mode "verilog-mode" "\ Major mode for editing Verilog code. @@ -37478,8 +37489,8 @@ and disable it otherwise. If called from Lisp, enable View mode if ARG is omitted or nil. When View mode is enabled, commands that do not change the buffer -contents are available as usual. Kill commands insert text in -kill buffers but do not delete. Most other commands beep and +contents are available as usual. Kill commands save text but +do not delete it from the buffer. Most other commands beep and tell the user that the buffer is read-only. \\ From 5a5ad99d2f5abc431e269e4f591fdabad9d59e70 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Aug 2019 12:41:35 +0300 Subject: [PATCH 528/567] Improve documentation of debugging Lisp syntax error * doc/lispref/debugging.texi (Syntax Errors, Excess Open) (Excess Close): Name the commands invoked by the key sequences. Add cross-references to appropriate sections of the Emacs manual. (Bug#21385) (cherry picked from commit faafd467a374c9398ee4668cdc173611d35693ed) --- doc/lispref/debugging.texi | 45 ++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi index 2576fbe39d74..575ec75d407d 100644 --- a/doc/lispref/debugging.texi +++ b/doc/lispref/debugging.texi @@ -796,9 +796,10 @@ parenthesis or missing open parenthesis, but does not say where the missing parenthesis belongs. How, then, to find what to change? If the problem is not simply an imbalance of parentheses, a useful -technique is to try @kbd{C-M-e} at the beginning of each defun, and see -if it goes to the place where that defun appears to end. If it does -not, there is a problem in that defun. +technique is to try @kbd{C-M-e} (@code{end-of-defun}, @pxref{Moving by +Defuns,,,emacs, The GNU Emacs Manual}) at the beginning of each defun, +and see if it goes to the place where that defun appears to end. If +it does not, there is a problem in that defun. @cindex unbalanced parentheses @cindex parenthesis mismatch, debugging @@ -818,29 +819,32 @@ find the mismatch.) The first step is to find the defun that is unbalanced. If there is an excess open parenthesis, the way to do this is to go to the end of -the file and type @kbd{C-u C-M-u}. This will move you to the -beginning of the first defun that is unbalanced. +the file and type @kbd{C-u C-M-u} (@code{backward-up-list}, +@pxref{Moving by Parens,,,emacs, The GNU Emacs Manual}). This will +move you to the beginning of the first defun that is unbalanced. The next step is to determine precisely what is wrong. There is no way to be sure of this except by studying the program, but often the existing indentation is a clue to where the parentheses should have been. The easiest way to use this clue is to reindent with @kbd{C-M-q} -and see what moves. @strong{But don't do this yet!} Keep reading, -first. +(@code{indent-pp-sexp}, @pxref{Multi-line Indent,,,emacs, The GNU +Emacs Manual}) and see what moves. @strong{But don't do this yet!} +Keep reading, first. Before you do this, make sure the defun has enough close parentheses. Otherwise, @kbd{C-M-q} will get an error, or will reindent all the rest of the file until the end. So move to the end of the defun and insert a -close parenthesis there. Don't use @kbd{C-M-e} to move there, since -that too will fail to work until the defun is balanced. +close parenthesis there. Don't use @kbd{C-M-e} (@code{end-of-defun}) to +move there, since that too will fail to work until the defun is balanced. Now you can go to the beginning of the defun and type @kbd{C-M-q}. Usually all the lines from a certain point to the end of the function will shift to the right. There is probably a missing close parenthesis, or a superfluous open parenthesis, near that point. (However, don't assume this is true; study the code to make sure.) Once you have found -the discrepancy, undo the @kbd{C-M-q} with @kbd{C-_}, since the old -indentation is probably appropriate to the intended parentheses. +the discrepancy, undo the @kbd{C-M-q} with @kbd{C-_} (@code{undo}), +since the old indentation is probably appropriate to the intended +parentheses. After you think you have fixed the problem, use @kbd{C-M-q} again. If the old indentation actually fit the intended nesting of parentheses, @@ -852,21 +856,24 @@ anything. @cindex excess close parentheses To deal with an excess close parenthesis, first go to the beginning -of the file, then type @kbd{C-u -1 C-M-u} to find the end of the first -unbalanced defun. +of the file, then type @kbd{C-u -1 C-M-u} (@code{backward-up-list} +with an argument of @minus{}1) to find the end of the first unbalanced +defun. Then find the actual matching close parenthesis by typing @kbd{C-M-f} +(@code{forward-sexp}, @pxref{Expressions,,,emacs, The GNU Emacs Manual}) at the beginning of that defun. This will leave you somewhere short of the place where the defun ought to end. It is possible that you will find a spurious close parenthesis in that vicinity. If you don't see a problem at that point, the next thing to do is to -type @kbd{C-M-q} at the beginning of the defun. A range of lines will -probably shift left; if so, the missing open parenthesis or spurious -close parenthesis is probably near the first of those lines. (However, -don't assume this is true; study the code to make sure.) Once you have -found the discrepancy, undo the @kbd{C-M-q} with @kbd{C-_}, since the -old indentation is probably appropriate to the intended parentheses. +type @kbd{C-M-q} (@code{indent-pp-sexp}) at the beginning of the defun. +A range of lines will probably shift left; if so, the missing open +parenthesis or spurious close parenthesis is probably near the first of +those lines. (However, don't assume this is true; study the code to +make sure.) Once you have found the discrepancy, undo the @kbd{C-M-q} +with @kbd{C-_} (@code{undo}), since the old indentation is probably +appropriate to the intended parentheses. After you think you have fixed the problem, use @kbd{C-M-q} again. If the old indentation actually fits the intended nesting of parentheses, From 8b7c7762da516faea40ba761ee5f114e839dfd33 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Aug 2019 14:20:34 +0300 Subject: [PATCH 529/567] * lisp/simple.el (kill-do-not-save-duplicates): Doc fix. (Bug#36827) --- lisp/simple.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/simple.el b/lisp/simple.el index a0f2da7152c7..b10c7861d133 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4353,7 +4353,7 @@ retrieved via \\[yank] \\[yank-pop]." :version "23.2") (defcustom kill-do-not-save-duplicates nil - "Do not add a new string to `kill-ring' if it duplicates the last one. + "If non-nil, don't add a string to `kill-ring' if it duplicates the last one. The comparison is done using `equal-including-properties'." :type 'boolean :group 'killing From e7818cb73ff042cb557332c7ea954fd512c87f69 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Fri, 2 Aug 2019 15:54:09 +0300 Subject: [PATCH 530/567] Fix nnmail-expiry-wait docs and custom :types * doc/misc/gnus.texi (Group Parameters, Expiring Mail): * lisp/gnus/gnus-cus.el (gnus-group-parameters): Clarify descriptions of nnmail-expiry, nnmail-expiry-wait, and nnmail-expiry-wait-function. * lisp/gnus/nnmail.el (nnmail-expiry-wait) (nnmail-expiry-wait-function): Clarify docstrings and fix custom :types (bug#36850). --- doc/misc/gnus.texi | 50 ++++++++++++++++++++++++------------------- lisp/gnus/gnus-cus.el | 8 +++---- lisp/gnus/nnmail.el | 35 +++++++++++++++--------------- 3 files changed, 50 insertions(+), 43 deletions(-) diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index f0458847295d..9c3ec41462de 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -2917,9 +2917,9 @@ See also @code{gnus-total-expirable-newsgroups}. If the group parameter has an element that looks like @code{(expiry-wait . 10)}, this value will override any @code{nnmail-expiry-wait} and @code{nnmail-expiry-wait-function} -(@pxref{Expiring Mail}) when expiring expirable messages. The value -can either be a number of days (not necessarily an integer) or the -symbols @code{never} or @code{immediate}. +settings (@pxref{Expiring Mail}) when expiring expirable messages. +The value can be either a number of days (not necessarily an integer), +or one of the symbols @code{never} or @code{immediate}. @item expiry-target @cindex expiry-target @@ -15826,40 +15826,46 @@ don't really mix very well. @vindex nnmail-expiry-wait The @code{nnmail-expiry-wait} variable supplies the default time an -expirable article has to live. Gnus starts counting days from when the -message @emph{arrived}, not from when it was sent. The default is seven -days. +expirable article has to live. The value of this variable can be +either a number of days (not necessarily an integer), or one of the +symbols @code{immediate} or @code{never}, meaning an article is +immediately or never expirable, respectively. -Gnus also supplies a function that lets you fine-tune how long articles -are to live, based on what group they are in. Let's say you want to -have one month expiry period in the @samp{mail.private} group, a one day -expiry period in the @samp{mail.junk} group, and a six day expiry period -everywhere else: +Gnus starts counting days from when the message @emph{arrived}, not +from when it was sent. The default is seven days. @vindex nnmail-expiry-wait-function +The @code{nnmail-expiry-wait-function} variable lets you fine-tune how +long articles are to live, based on what group they are in. When set +to a function, its returned value, if non-@code{nil}, overrides that +of @code{nnmail-expiry-wait}. Otherwise, the value of +@code{nnmail-expiry-wait} is used instead. + +For example, let's say you want to have a one month expiry period in +the @samp{mail.private} group, a one day expiry period in the +@samp{mail.junk} group, and a six day expiry period everywhere else. +This can be achieved as follows: + @lisp (setq nnmail-expiry-wait-function (lambda (group) - (cond ((string= group "mail.private") + (cond ((string= group "mail.private") 31) - ((string= group "mail.junk") + ((string= group "mail.junk") 1) - ((string= group "important") + ((string= group "important") 'never) - (t + (t 6)))) @end lisp The group names this function is fed are ``unadorned'' group names---no @samp{nnml:} prefixes and the like. -The @code{nnmail-expiry-wait} variable and -@code{nnmail-expiry-wait-function} function can either be a number (not -necessarily an integer) or one of the symbols @code{immediate} or -@code{never}. - -You can also use the @code{expiry-wait} group parameter to selectively -change the expiry period (@pxref{Group Parameters}). +As an alternative to the variables @code{nnmail-expiry-wait} or +@code{nnmail-expiry-wait-function}, you can also use the +@code{expiry-wait} group parameter to selectively change the expiry +period (@pxref{Group Parameters}). @vindex nnmail-expiry-target The normal action taken when expiring articles is to delete them. diff --git a/lisp/gnus/gnus-cus.el b/lisp/gnus/gnus-cus.el index 66fa3e0590f8..80459a7d62c9 100644 --- a/lisp/gnus/gnus-cus.el +++ b/lisp/gnus/gnus-cus.el @@ -140,10 +140,10 @@ rules as described later).") :format "%v")) "\ When to expire. -Overrides any `nnmail-expiry-wait' and `nnmail-expiry-wait-function' -when expiring expirable messages. The value can either be a number of -days (not necessarily an integer) or the symbols `never' or -`immediate'.") +Overrides any `nnmail-expiry-wait' or `nnmail-expiry-wait-function' +settings when expiring expirable messages. The value can be +either a number of days (not necessarily an integer), or one of +the symbols `never' or `immediate'.") (expiry-target (choice :tag "Expiry Target" :value delete diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el index c52bc03e109e..0f560d300f9c 100644 --- a/lisp/gnus/nnmail.el +++ b/lisp/gnus/nnmail.el @@ -159,32 +159,33 @@ If nil, groups like \"mail.misc\" will end up in directories like (defcustom nnmail-expiry-wait 7 "Expirable articles that are older than this will be expired. -This variable can either be a number (which will be interpreted as a -number of days) -- this doesn't have to be an integer. This variable -can also be `immediate' and `never'." +This variable can be either a number of days (not necessarily an +integer), or one of the symbols `immediate' or `never', meaning +an article is immediately or never expirable, respectively. +For more granular control, see `nnmail-expiry-wait-function'." :group 'nnmail-expire - :type '(choice (const immediate) - (number :tag "days") - (const never))) + :type '(choice (const :tag "Immediate" immediate) + (const :tag "Never" never) + (number :tag "Days"))) (defcustom nnmail-expiry-wait-function nil - "Variable that holds function to specify how old articles should be before they are expired. -The function will be called with the name of the group that the expiry -is to be performed in, and it should return an integer that says how -many days an article can be stored before it is considered \"old\". -It can also return the values `never' and `immediate'. + "Function to determine how old articles should be before they are expired. +The function is called with the name of the group that the expiry +is to be performed in, and should return a value supported by +`nnmail-expiry-wait', which it overrides. If this variable is +nil, the value of `nnmail-expiry-wait' is used instead. E.g.: \(setq nnmail-expiry-wait-function - (lambda (newsgroup) - (cond ((string-match \"private\" newsgroup) 31) - ((string-match \"junk\" newsgroup) 1) - ((string-match \"important\" newsgroup) \\='never) - (t 7))))" + (lambda (group) + (cond ((string-match-p \"private\" group) 31) + ((string-match-p \"junk\" group) 1) + ((string-match-p \"important\" group) \\='never) + (t 7))))" :group 'nnmail-expire :type '(choice (const :tag "nnmail-expiry-wait" nil) - (function :format "%v" nnmail-))) + (function :tag "Custom function"))) (defcustom nnmail-expiry-target 'delete "Variable that says where expired messages should end up. From b83f83ccd47997b7fd581026d4e1b124fa4fefc2 Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Wed, 2 Jan 2019 22:22:18 +0100 Subject: [PATCH 531/567] Ignore pending_signals when checking for quits. pending_signals is often set if no quit is pending. This results in bugs in module code if the module returns but no quit is actually pending. * src/emacs-module.c (module_should_quit): Use QUITP macro to check whether the caller should quit. * src/eval.c: Remove obsolete comment. --- src/emacs-module.c | 6 +++--- src/eval.c | 5 +---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/emacs-module.c b/src/emacs-module.c index 0abfd3f6f16a..282012770eb0 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c @@ -665,13 +665,13 @@ module_vec_size (emacs_env *env, emacs_value vec) return ASIZE (lvec); } -/* This function should return true if and only if maybe_quit would do - anything. */ +/* This function should return true if and only if maybe_quit would + quit. */ static bool module_should_quit (emacs_env *env) { MODULE_FUNCTION_BEGIN_NO_CATCH (false); - return (! NILP (Vquit_flag) && NILP (Vinhibit_quit)) || pending_signals; + return QUITP; } diff --git a/src/eval.c b/src/eval.c index 0dc8639a8d46..2409d3d2c4b5 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1484,10 +1484,7 @@ process_quit_flag (void) If quit-flag is set to `kill-emacs' the SIGINT handler has received a request to exit Emacs when it is safe to do. - When not quitting, process any pending signals. - - If you change this function, also adapt module_should_quit in - emacs-module.c. */ + When not quitting, process any pending signals. */ void maybe_quit (void) From 691790b8ea5192395a2eeac0f89a2f41d74f2ddb Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 8 Aug 2019 16:17:51 +0300 Subject: [PATCH 532/567] Avoid Groff hanging on MS-Windows when invoked by "M-x man" * lisp/man.el (Man-build-man-command): On MS-Windows, redirect stdin of 'man' to the null device, to make sure Groff exits immediately after formatting the man page. --- lisp/man.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/man.el b/lisp/man.el index 409fadb66b8c..731d480cbeec 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -624,7 +624,13 @@ This is necessary if one wants to dump man.el with Emacs." ;; so we don't need `2>' even with DOS shells ;; which do support stderr redirection. ((not (fboundp 'make-process)) " %s") - ((concat " %s 2>" null-device))))) + ((concat " %s 2>" null-device + ;; Some MS-Windows ports of Groff + ;; try to read stdin after exhausting + ;; the command-line arguments; make + ;; them exit if/when they do. + (if (eq system-type 'windows-nt) + (concat " <" null-device))))))) (flist Man-filter-list)) (while (and flist (car flist)) (let ((pcom (car (car flist))) From cb0403d7467502a1a9ef2699ccce826aac2ace7a Mon Sep 17 00:00:00 2001 From: Mauro Aranda Date: Tue, 6 Aug 2019 12:45:28 -0300 Subject: [PATCH 533/567] Fix octave-mode ElDoc support * lisp/progmodes/octave.el (octave-eldoc-function-signatures): Fix the regexp used, so no match happens when there is no defined function FN. Also, tweak the regexp to support GNU Octave 4.2.x and newer. (Bug#36459) --- lisp/progmodes/octave.el | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el index 6caf8d93d3f1..76181892cdb7 100644 --- a/lisp/progmodes/octave.el +++ b/lisp/progmodes/octave.el @@ -1591,8 +1591,23 @@ code line." (list (format "print_usage ('%s');\n" fn))) (let (result) (dolist (line inferior-octave-output-list) + ;; The help output has changed a few times in GNU Octave. + ;; Earlier versions output "usage: " before the function signature. + ;; After deprecating the usage function, and up until GNU Octave 4.0.3, + ;; the output looks like this: + ;; -- Mapping Function: abs (Z). + ;; After GNU Octave 4.2.0, the output is less verbose and it looks like + ;; this: + ;; -- abs (Z) + ;; The following regexp matches these three formats. + ;; The "usage: " alternative matches the symbol, because a call to + ;; print_usage with a non-existent function (e.g., print_usage ('A')) + ;; would output: + ;; error: print_usage: 'A' not found + ;; and we wouldn't like to match anything in this case. + ;; See bug #36459. (when (string-match - "\\s-*\\(?:--[^:]+\\|usage\\):\\s-*\\(.*\\)$" + "\\s-*\\(?:--[^:]+:\\|\\_ Date: Fri, 9 Aug 2019 10:31:39 +0300 Subject: [PATCH 534/567] Improve doc strings of 'append-to-buffer' and friends * lisp/simple.el (append-to-buffer, prepend-to-buffer) (copy-to-buffer): Doc fixes. --- lisp/simple.el | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index b10c7861d133..b5c7052184be 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -5268,8 +5268,10 @@ BUFFER may be a buffer or a buffer name." nil) (defun append-to-buffer (buffer start end) - "Append to specified buffer the text of the region. -It is inserted into that buffer before its point. + "Append to specified BUFFER the text of the region. +The text is inserted into that buffer before its point. +BUFFER can be a buffer or the name of a buffer; this +function will create BUFFER if it doesn't already exist. When calling from a program, give three arguments: BUFFER (or buffer name), START and END. @@ -5291,8 +5293,10 @@ START and END specify the portion of the current buffer to be copied." (set-window-point window (point)))))))) (defun prepend-to-buffer (buffer start end) - "Prepend to specified buffer the text of the region. -It is inserted into that buffer after its point. + "Prepend to specified BUFFER the text of the region. +The text is inserted into that buffer after its point. +BUFFER can be a buffer or the name of a buffer; this +function will create BUFFER if it doesn't already exist. When calling from a program, give three arguments: BUFFER (or buffer name), START and END. @@ -5305,8 +5309,10 @@ START and END specify the portion of the current buffer to be copied." (insert-buffer-substring oldbuf start end))))) (defun copy-to-buffer (buffer start end) - "Copy to specified buffer the text of the region. -It is inserted into that buffer, replacing existing text there. + "Copy to specified BUFFER the text of the region. +The text is inserted into that buffer, replacing existing text there. +BUFFER can be a buffer or the name of a buffer; this +function will create BUFFER if it doesn't already exist. When calling from a program, give three arguments: BUFFER (or buffer name), START and END. From fae1ff69c3fd84f208b7b803adafeb95a36e44e7 Mon Sep 17 00:00:00 2001 From: Mauro Aranda Date: Wed, 7 Aug 2019 11:55:54 -0300 Subject: [PATCH 535/567] Fix docstrings in pong * lisp/play/pong.el (pong-move-left pong-move-right): Refer to the right bats and directions of movement. (Bug#36959) --- lisp/play/pong.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/play/pong.el b/lisp/play/pong.el index 555c1939d260..13fe8b82a415 100644 --- a/lisp/play/pong.el +++ b/lisp/play/pong.el @@ -262,7 +262,7 @@ (defun pong-move-left () - "Move bat 2 up. + "Move bat 1 up. This is called left for historical reasons, since in some pong implementations you move with left/right paddle." (interactive) @@ -274,7 +274,7 @@ implementations you move with left/right paddle." (defun pong-move-right () - "Move bat 2 up." + "Move bat 1 down." (interactive) (if (< (+ pong-bat-player1 pong-bat-width) (1- pong-height)) (and From 0860ac0e9db15ee0f094df7f6b0bbd5961bb08ac Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 10 Aug 2019 12:48:03 +0300 Subject: [PATCH 536/567] Improve documentation of features that use the fringes * doc/emacs/display.texi (Fringes): Add cross-reference to where indicate-empty-lines is described. (Useless Whitespace): Add an @anchor for a more accurate cross-reference in "Fringes". --- doc/emacs/display.texi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index ac1ce3606b62..74bcc3283c2f 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -1110,7 +1110,8 @@ the arrows scrolls the display horizontally in the direction of the arrow. The fringes can also indicate other things, such as buffer -boundaries (@pxref{Displaying Boundaries}), and where a program you +boundaries (@pxref{Displaying Boundaries}), unused lines near the end +of the window (@pxref{indicate-empty-lines}), and where a program you are debugging is executing (@pxref{Debuggers}). @vindex overflow-newline-into-fringe @@ -1203,6 +1204,7 @@ extra spaces at the end of each line in the region. @vindex indicate-empty-lines @cindex unused lines @cindex fringes, and unused line indication +@anchor{indicate-empty-lines} On graphical displays, Emacs can indicate unused lines at the end of the window with a small image in the left fringe (@pxref{Fringes}). The image appears for screen lines that do not correspond to any From 6f57ef9d3cc5d3d934701e257fd6c8fd9f48f95f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 10 Aug 2019 22:19:31 +0300 Subject: [PATCH 537/567] * src/callproc.c (Fcall_process): Doc fix. --- src/callproc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/callproc.c b/src/callproc.c index fa12d02e394a..1b89d691b37a 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -220,7 +220,7 @@ static mode_t const default_output_mode = 0666; DEFUN ("call-process", Fcall_process, Scall_process, 1, MANY, 0, doc: /* Call PROGRAM synchronously in separate process. The remaining arguments are optional. -The program's input comes from file INFILE (nil means `/dev/null'). +The program's input comes from file INFILE (nil means `null-device'). Third argument DESTINATION specifies how to handle program's output. If DESTINATION is a buffer, or t that stands for the current buffer, From bda7fc75dfd1991d8596eaab06b65309afa62b40 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 16 Aug 2019 09:39:51 +0300 Subject: [PATCH 538/567] ; Fix typo in a doc string of speedbar.el * lisp/speedbar.el (speedbar-supported-extension-expressions): Fix a typo in the doc string. (Bug#37041) --- lisp/speedbar.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/speedbar.el b/lisp/speedbar.el index c43db0f678f8..2e710e808d7f 100644 --- a/lisp/speedbar.el +++ b/lisp/speedbar.el @@ -700,7 +700,7 @@ singular expression. This variable will be turned into function `speedbar-add-supported-extension' to add a new extension at runtime, or use the configuration dialog to set it in your init file. If you add an extension to this list, and it does not appear, you may -need to also modify `completion-ignored-extension' which will also help +need to also modify `completion-ignored-extensions' which will also help file completion." :group 'speedbar :type '(repeat (regexp :tag "Extension Regexp")) From 15de1d11334fd7da3255881e0836a22d08760482 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 16 Aug 2019 16:45:57 +0300 Subject: [PATCH 539/567] Fix markup in dired-x.texi * doc/misc/dired-x.texi (Omitting Variables) (Local Variables, Shell Command Guessing) (Advanced Cleaning Variables, Special Marking Function): Fix markup and indexing. (Bug#14212) --- doc/misc/dired-x.texi | 343 ++++++++++++++++++++---------------------- 1 file changed, 161 insertions(+), 182 deletions(-) diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi index b8e1ad459d1a..05a8919b4e66 100644 --- a/doc/misc/dired-x.texi +++ b/doc/misc/dired-x.texi @@ -127,7 +127,7 @@ original @file{dired-x.el}). @node Features @section Features -@cindex Features +@cindex Dired-x features Some features provided by Dired Extra: @@ -159,7 +159,7 @@ respectively (@pxref{Find File At Point}). @node Technical Details @section Technical Details -@cindex Modified functions +@cindex modified functions @cindex @file{dired-aux.el} When @file{dired-x.el} is loaded, some standard Dired functions from @@ -214,7 +214,7 @@ when you first type @kbd{C-x d}). @node Optional Installation Dired Jump @section Optional Installation Dired Jump -@cindex Autoloading @code{dired-jump} and @code{dired-jump-other-window} +@cindex autoloading @code{dired-jump} and @code{dired-jump-other-window} In order to have @code{dired-jump} and @code{dired-jump-other-window} (@pxref{Miscellaneous Commands}) work @emph{before} @code{dired} and @@ -235,7 +235,7 @@ for these functions. In your @file{.emacs} file put @node Optional Installation File At Point @section Optional Installation File At Point -@cindex Binding @code{dired-x-find-file} +@cindex binding @code{dired-x-find-file} If you choose to have @file{dired-x.el} bind @code{dired-x-find-file} over @code{find-file} (@pxref{Find File At Point}), then you will need to set @code{dired-x-hands-off-my-keys}. To do this, either set it @@ -254,8 +254,8 @@ or call @code{dired-x-bind-find-file} after changing the value. @node Omitting Files in Dired @chapter Omitting Files in Dired -@cindex Omitting Files in Dired -@cindex Uninteresting files +@cindex omitting Files in Dired +@cindex uninteresting files @dfn{Omitting} a file means removing it from the directory listing. Omitting is useful for keeping Dired buffers free of ``uninteresting'' files (for instance, auto-save, auxiliary, backup, and revision control files) so that @@ -310,18 +310,13 @@ inside @code{dired-load-hook} (@pxref{Installation}) and then evaluate @node Omitting Variables @section Omitting Variables -@cindex Customizing file omitting +@cindex customizing file omitting The following variables can be used to customize omitting. -@table @code - -@vindex dired-omit-mode -@item dired-omit-mode - -Default: @code{nil} - -@cindex How to make omitting the default in Dired +@cindex how to make omitting the default in Dired +@defvar dired-omit-mode If non-@code{nil}, ``uninteresting'' files are not listed. +The default is @code{nil}. Uninteresting files are files whose names match regexp @code{dired-omit-files}, plus files whose names end with extension in @code{dired-omit-extensions}. @kbd{C-x M-o} (@code{dired-omit-mode}) @@ -347,56 +342,49 @@ a directory local setting @noindent to a @file{.dir-locals.el} file in that directory. You can use the command @code{add-dir-local-variable} to do this. +@end defvar -@vindex dired-omit-files -@item dired-omit-files - -Default: @code{"^#\\|\\.$"} - -Files whose names match this buffer-local regexp will not be displayed. -This only has effect when @code{dired-omit-mode}'s value is @code{t}. +@defvar dired-omit-files +This buffer-local variable's value is a regexp, a string. Files whose +names match this regexp will not be displayed. This only has effect +when @code{dired-omit-mode}'s value is @code{t}. The default value omits the special directories @file{.} and @file{..} and autosave files (plus other files ending in @file{.}) (@pxref{Omitting Examples}). - -@vindex dired-omit-extensions -@item dired-omit-extensions - -Default: The elements of @code{completion-ignored-extensions}, -@code{dired-latex-unclean-extensions}, @code{dired-bibtex-unclean-extensions} -and @code{dired-texinfo-unclean-extensions}. - -If non-@code{nil}, a list of extensions (strings) to omit from Dired listings. -Its format is the same as that of @code{completion-ignored-extensions}. - -@vindex dired-omit-case-fold -@item dired-omit-case-fold - +@end defvar + +@defvar dired-omit-extensions +If non-@code{nil}, this variable's value is a list of extensions +(strings) to omit from Dired listings. Its format is the same as that +of @code{completion-ignored-extensions}. The default value is the +elements of @code{completion-ignored-extensions}, +@code{dired-latex-unclean-extensions}, +@code{dired-bibtex-unclean-extensions} and +@code{dired-texinfo-unclean-extensions}. +@end defvar + +@defvar dired-omit-case-fold Default: @code{filesystem} - +This variable controls whether file-name matching is case-insensitive. By default, when @code{dired-omit-case-fold} is set to @code{filesystem}, @code{dired-omit-mode} will match filenames and extensions case-sensitively on Dired buffers visiting case-sensitive filesystems, and case-insensitively on case-insensitive filesystems. Set it to @code{nil} to be always case-sensitive, and to @code{t} to be always case-insensitive. - -@vindex dired-omit-localp -@item dired-omit-localp - -Default: @code{no-dir} - -The @var{localp} argument @code{dired-omit-expunge} passes to -@code{dired-get-filename}. If it is @code{no-dir}, omitting is much faster, -but you can only match against the non-directory part of the file name. Set it -to @code{nil} if you need to match the whole file name or @code{t} to match the -file name relative to the buffer's top-level directory. - -@item dired-omit-marker-char -@vindex dired-omit-marker-char -@cindex Omitting additional files -Default: @kbd{C-o} - +@end defvar + +@defvar dired-omit-localp +This variable determines the @var{localp} argument +@code{dired-omit-expunge} passes to @code{dired-get-filename}. If it +is @code{no-dir}, teh default, omitting is much faster, but you can +only match against the non-directory part of the file name. Set it to +@code{nil} if you need to match the whole file name or @code{t} to +match the file name relative to the buffer's top-level directory. +@end defvar + +@cindex omitting additional files +@defvar dired-omit-marker-char Temporary marker used by Dired to implement omitting. Should never be used as marker by the user or other packages. There is one exception to this rule: by adding @@ -412,8 +400,8 @@ to your @file{~/.emacs}, you can bind the @kbd{C-o} key to insert a @kbd{C-o} marker, thus causing these files to be omitted in addition to the usually omitted files. Unfortunately the files you omitted manually this way will show up again after reverting the buffer, unlike the others. - -@end table +The default value is @kbd{C-o}. +@end defvar @node Omitting Examples @section Examples of Omitting Various File Types @@ -422,7 +410,7 @@ will show up again after reverting the buffer, unlike the others. @item @cindex RCS files, how to omit them in Dired -@cindex Omitting RCS files in Dired +@cindex omitting RCS files in Dired If you wish to avoid seeing RCS files and the @file{RCS} directory, then put @example @@ -438,8 +426,8 @@ in the @code{dired-load-hook} (@pxref{Installation}). This assumes @code{^} in the regexp. @item -@cindex Tib files, how to omit them in Dired -@cindex Omitting tib files in Dired +@cindex tib files, how to omit them in Dired +@cindex omitting tib files in Dired If you use @code{tib}, the bibliography program for use with @TeX{} and @LaTeX{}, and you want to omit the @file{INDEX} and the @file{*-t.tex} files, then put @@ -453,8 +441,8 @@ want to omit the @file{INDEX} and the @file{*-t.tex} files, then put in the @code{dired-load-hook} (@pxref{Installation}). @item -@cindex Dot files, how to omit them in Dired -@cindex Omitting dot files in Dired +@cindex dot files, how to omit them in Dired +@cindex omitting dot files in Dired If you do not wish to see @samp{dot} files (files starting with a @file{.}), then put @@ -480,8 +468,8 @@ in your @code{dired-mode-hook}. @node Local Variables @chapter Local Variables for Dired Directories +@cindex local Variables for Dired Directories -@cindex Local Variables for Dired Directories @vindex dired-local-variables-file @vindex dired-enable-local-variables @noindent @@ -530,28 +518,24 @@ Files,emacs,The GNU Emacs Manual}. @noindent The following variables affect Dired Local Variables -@table @code -@vindex dired-local-variables-file -@item dired-local-variables-file -Default: @code{".dired"} - -If non-@code{nil}, file name for local variables for Dired. If Dired finds a -file with that name in the current directory, it will temporarily insert it -into the Dired buffer and run @code{hack-local-variables}. +@defvar dired-local-variables-file +If non-@code{nil}, this variable specifies the file name for local +variables for Dired. If Dired finds a file with that name in the +current directory, it will temporarily insert it into the Dired buffer +and run @code{hack-local-variables}. The default is @file{.dired}. +@end defvar -@vindex dired-enable-local-variables -@item dired-enable-local-variables -Default: @code{t} - -Controls the use of local-variables lists in Dired. This variable +@defvar dired-enable-local-variables +This variable controls the use of local-variables lists in Dired. It temporarily overrides the value of @code{enable-local-variables} when -the Dired Local Variables are hacked. It takes the same values as that -variable. A value of @code{nil} means to ignore any Dired Local Variables. -@end table +the Dired Local Variables are hacked. It takes the same values as +that variable. A value of @code{nil} means to ignore any Dired Local +Variables. The default is @code{t}. +@end defvar @node Shell Command Guessing @chapter Shell Command Guessing -@cindex Guessing shell commands for files. +@cindex guessing shell commands for files. Based upon the name of a file, Dired tries to guess what shell command you might want to apply to it. For example, if you have point @@ -568,19 +552,22 @@ file, e.g., @samp{xtex} and @samp{dvips} for a @file{.dvi} file, you can type Dired only tries to guess a command for a single file, never for a list of marked files. -@table @code -@item dired-guess-shell-alist-default -@vindex dired-guess-shell-alist-default -Predefined rules for shell commands. Set this to @code{nil} to turn guessing off. -The elements of @code{dired-guess-shell-alist-user} (defined by the -user) will override these rules. - -@item dired-guess-shell-alist-user -@vindex dired-guess-shell-alist-user -If non-@code{nil}, a user-defined alist of file regexps and their suggested -commands. These rules take precedence over the predefined rules in the -variable @code{dired-guess-shell-alist-default} (to which they are prepended) -when @code{dired-do-shell-command} is run). +The following variables control guessing of shell commands: + +@defvar dired-guess-shell-alist-default +This variable specifies the predefined rules for guessing shell +commands suitable for certain files. Set this to @code{nil} to turn +guessing off. The elements of @code{dired-guess-shell-alist-user} +(defined by the user) will override these rules. +@end defvar + +@defvar dired-guess-shell-alist-user +If non-@code{nil}, this variables specifies the user-defined alist of +file regexps and their suggested commands. These rules take +precedence over the predefined rules in the variable +@code{dired-guess-shell-alist-default} (to which they are prepended) +when @code{dired-do-shell-command} is run). The default is +@code{nil}. Each element of the alist looks like @@ -613,54 +600,50 @@ to add rules for @samp{.foo} and @samp{.bar} file extensions, write @noindent This will override any predefined rules for the same extensions. +@end defvar -@item dired-guess-shell-case-fold-search -@vindex dired-guess-shell-case-fold-search -Default: @code{t} - -Non-@code{nil} means @code{dired-guess-shell-alist-default} and +@defvar dired-guess-shell-case-fold-search +If this variable is non-@code{nil}, +@code{dired-guess-shell-alist-default} and @code{dired-guess-shell-alist-user} are matched case-insensitively. +The default is @code{t}. +@end defvar + +@cindex passing GNU Tar its @samp{z} switch. +@defvar dired-guess-shell-gnutar +If this variable is non-@code{nil}, it specifies the name of the GNU +Tar executable (e.g., @file{tar} or @file{gnutar}). GNU Tar's +@samp{z} switch is used for compressed archives. If you don't have +GNU Tar, set this to @code{nil}: a pipe using @command{zcat} is then +used instead. The default is @code{nil}. +@end defvar -@item dired-guess-shell-gnutar -@vindex dired-guess-shell-gnutar -@cindex Passing GNU Tar its @samp{z} switch. -Default: @code{nil} - -If non-@code{nil}, this is the name of the GNU Tar executable (e.g., -@samp{tar} or @samp{gnutar}). GNU Tar's @samp{z} switch is used for -compressed tar files. -If you don't have GNU tar, set this to @code{nil}: a pipe using @samp{zcat} is -then used. - -@item dired-guess-shell-gzip-quiet -@vindex dired-guess-shell-gzip-quiet @cindex @code{gzip} -Default: @code{t} +@defvar dired-guess-shell-gzip-quiet +A non-@code{nil} value of this variable means that @samp{-q} is passed +to @command{gzip}, possibly overriding a verbose option in the @env{GZIP} +environment variable. The default is @code{t}. +@end defvar -A non-@code{nil} value means that @samp{-q} is passed to @code{gzip} -overriding a verbose option in the @env{GZIP} environment variable. - -@item dired-guess-shell-znew-switches nil -@vindex dired-guess-shell-znew-switches @cindex @code{znew} -Default: @code{nil} - -A string of switches passed to @code{znew}. An example is -@samp{-K} which will make @code{znew} keep a @file{.Z} file when it is -smaller than the @file{.gz} file. - -@item dired-shell-command-history nil -@vindex dired-shell-command-history - -History list for commands that read dired-shell commands. -@end table +@defvar dired-guess-shell-znew-switches nil +This variable specifies a string of switches passed to @command{znew}. +An example is @samp{-K} which will make @command{znew} keep a @file{.Z} +file when it is smaller than the @file{.gz} file. The default is +@code{nil}: no additional switches are passed to @command{znew}. +@end defvar + +@defvar dired-shell-command-history nil +This variable holds the history list for commands that read +dired-shell commands. +@end defvar @node Virtual Dired @chapter Virtual Dired -@cindex Virtual Dired -@cindex Perusing @code{ls} listings -@cindex @code{ls} listings, how to peruse them in Dired +@cindex virtual Dired +@cindex perusing @code{ls} listings +@cindex @command{ls} listings, how to peruse them in Dired Using @dfn{Virtual Dired} means putting a buffer with Dired-like contents in Dired mode. The files described by the buffer contents need not actually exist. This is useful if you want to peruse an @samp{ls -lR} @@ -702,8 +685,8 @@ local-variable files. @table @kbd @item F @kindex F -@cindex Visiting several files at once -@cindex Simultaneous visiting of several files +@cindex visiting several files at once +@cindex simultaneous visiting of several files @findex dired-do-find-marked-files (@code{dired-do-find-marked-files}) Find all marked files at once displaying them simultaneously. If optional @var{noselect} is non-@code{nil} then just @@ -791,41 +774,36 @@ and @file{*.dvi} files for deletion. @node Advanced Cleaning Variables @section Advanced Cleaning Variables -@noindent Variables used by the above cleaning commands (and in the default value for -variable @code{dired-omit-extensions}, @pxref{Omitting Variables}) - -@table @code -@item dired-patch-unclean-extensions -@vindex dired-patch-unclean-extensions -Default: @code{(".rej" ".orig")} - -List of extensions of dispensable files created by the @samp{patch} program. - -@item dired-tex-unclean-extensions -@vindex dired-tex-unclean-extensions -Default: @code{(".toc" ".log" ".aux")} - -List of extensions of dispensable files created by @TeX{}. - -@item dired-texinfo-unclean-extensions -@vindex dired-texinfo-unclean-extensions -Default: @code{(".cp" ".cps" ".fn" ".fns" ".ky" ".kys"} -@code{".pg" ".pgs" ".tp" ".tps" ".vr" ".vrs")} - -List of extensions of dispensable files created by @samp{texinfo}. - -@item dired-latex-unclean-extensions -@vindex dired-latex-unclean-extensions -Default: @code{(".idx" ".lof" ".lot" ".glo")} - -List of extensions of dispensable files created by @LaTeX{}. - -@item dired-bibtex-unclean-extensions -@vindex dired-bibtex-unclean-extensions -Default: @code{(".blg" ".bbl")} - -List of extensions of dispensable files created by Bib@TeX{}. -@end table +Variables used by the above cleaning commands (and in the default value for +variable @code{dired-omit-extensions}, @pxref{Omitting Variables}): + +@defvar dired-patch-unclean-extensions +This variable specifies the list of extensions of dispensable files +created by the @samp{patch} program. The default is @w{@code{(".rej" +".orig")}}. +@end defvar + +@defvar dired-tex-unclean-extensions +This variable specifies the list of extensions of dispensable files +created by @TeX{}. The default is @w{@code{(".toc" ".log" ".aux")}}. +@end defvar + +@defvar dired-texinfo-unclean-extensions +This variable holds the list of extensions of dispensable files +created by @samp{texinfo}. The default is @w{@code{(".cp" ".cps" ".fn" +".fns" ".ky" ".kys"} @code{".pg" ".pgs" ".tp" ".tps" ".vr" ".vrs")}} +@end defvar + +@defvar dired-latex-unclean-extensions +This variable specifies the list of extensions of dispensable files +created by @LaTeX{}. The default is @w{@code{(".idx" ".lof" ".lot" +".glo")}}. +@end defvar + +@defvar dired-bibtex-unclean-extensions +This variable specifies the list of extensions of dispensable files +created by Bib@TeX{}. The default is @w{@code{(".blg" ".bbl")}}. +@end defvar @node Special Marking Function @section Special Marking Function @@ -834,10 +812,11 @@ List of extensions of dispensable files created by Bib@TeX{}. @item M-( @kindex M-( @findex dired-mark-sexp -@cindex Lisp expression, marking files with in Dired -@cindex Mark file by Lisp expression -(@code{dired-mark-sexp}) Mark files for which @var{predicate} returns -non-@code{nil}. With a prefix argument, unflag those files instead. +@cindex lisp expression, marking files with in Dired +@cindex mark file by Lisp expression +Mark files for which @var{predicate} returns non-@code{nil} +(@code{dired-mark-sexp}). With a prefix argument, unflag those files +instead. The @var{predicate} is a Lisp expression that can refer to the following symbols: @@ -886,8 +865,8 @@ to mark all @file{.el} files without a corresponding @file{.elc} file. @node Multiple Dired Directories @chapter Multiple Dired Directories and Non-Dired Commands -@cindex Multiple Dired directories -@cindex Working directory +@cindex multiple Dired directories +@cindex working directory An Emacs buffer can have but one working directory, stored in the buffer-local variable @code{default-directory}. A Dired buffer may have several subdirectories inserted, but it still has only one working @@ -905,8 +884,8 @@ Dired buffers, is like @code{shell-command}, but it runs with @node Find File At Point @chapter Find File At Point -@cindex Visiting a file mentioned in a buffer -@cindex Finding a file at point +@cindex visiting a file mentioned in a buffer +@cindex finding a file at point @file{dired-x} provides a method of visiting or editing a file mentioned in the buffer you are viewing (e.g., a mail buffer, a news article, a @@ -1014,7 +993,7 @@ inserted subdirectories. @item dired-jump @findex dired-jump @kindex C-x C-j -@cindex Jumping to Dired listing containing file. +@cindex jumping to Dired listing containing file. Bound to @kbd{C-x C-j}. Jump back to Dired: If in a file, edit the current directory and move to file's line. If in Dired already, pop up a level and go to old directory's line. In case the proper Dired file line cannot be @@ -1034,7 +1013,7 @@ bound to @kbd{C-x C-j} and @code{dired-jump-other-window} will not be bound to @kbd{C-x 4 C-j}. @item dired-vm -@cindex Reading mail. +@cindex reading mail. @kindex V @findex dired-vm Bound to @kbd{V} if @code{dired-bind-vm} is @code{t}. Run VM on this @@ -1054,14 +1033,14 @@ If the variable @code{dired-bind-vm} is @code{t}, @code{dired-vm} will be bound to @kbd{V}. Otherwise, @code{dired-bind-rmail} will be bound. @item dired-rmail -@cindex Reading mail. +@cindex reading mail. @findex dired-rmail Bound to @kbd{V} if @code{dired-bind-vm} is @code{nil}. Run Rmail on this file (assumed to be mail folder in Rmail format). @item dired-info @kindex I -@cindex Running info. +@cindex running info. @findex dired-info Bound to @kbd{I}. Run Info on this file (assumed to be a file in Info format). @@ -1071,7 +1050,7 @@ If the variable @code{dired-bind-info} is @code{nil}, @code{dired-info} will not be bound to @kbd{I}. @item dired-man -@cindex Running man. +@cindex running man. @kindex N @findex dired-man Bound to @kbd{N}. Run man on this file (assumed to be a file in @code{nroff} @@ -1082,7 +1061,7 @@ If the variable @code{dired-bind-man} is @code{nil}, @code{dired-man} will not be bound to @kbd{N}. @item dired-do-relsymlink -@cindex Relative symbolic links. +@cindex relative symbolic links. @kindex Y @findex dired-do-relsymlink Bound to @kbd{Y}. Relative symlink all marked (or next ARG) files into a @@ -1111,7 +1090,7 @@ info. @node Bugs @chapter Bugs -@cindex Bugs +@cindex bugs @noindent If you encounter a bug in this package, or wish to suggest an From 3a04be20056f19c5ffbf448128ccce067d11e99e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 17 Aug 2019 11:02:52 +0300 Subject: [PATCH 540/567] ; Improve commentary in xdisp.c * src/xdisp.c: Add to the commentary the description of stop_charpos, and how it is used during iteration. --- src/xdisp.c | 97 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 73 insertions(+), 24 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index aa6e1bd2df8d..3b8cfab0592d 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -152,6 +152,8 @@ along with GNU Emacs. If not, see . */ description of the environment in which the text is to be displayed. But this is too early, read on. + Iteration over buffer and strings. + Characters and pixmaps displayed for a range of buffer text depend on various settings of buffers and windows, on overlays and text properties, on display tables, on selective display. The good news @@ -176,6 +178,46 @@ along with GNU Emacs. If not, see . */ current X and Y position, and lots of other stuff you can better see in dispextern.h. + The "stop position". + + Some of the fields maintained by the iterator change relatively + infrequently. These include the face of the characters, whether + text is invisible, the object (buffer or display or overlay string) + being iterated, character composition info, etc. For any given + buffer or string position, these sources of information that + affects the display can be determined by calling the appropriate + primitives, such as Fnext_single_property_change, but both these + calls and the processing of their return values is relatively + expensive. To optimize redisplay, the display engine checks these + sources of display information only when needed. To that end, it + always maintains the position of the next place where it must stop + and re-examine all those potential sources. This is called "stop + position" and is stored in the stop_charpos field of the iterator. + The stop position is updated by compute_stop_pos, which is called + whenever the iteration reaches the current stop position and + processes it. Processing a stop position is done by handle_stop, + which invokes a series of handlers, one each for every potential + source of display-related information; see the it_props array for + those handlers. For example, one handler is handle_face_prop, + which detects changes in face properties, and supplies the face ID + that the iterator will use for all the glyphs it generates up to + the next stop position; this face ID is the result of realizing the + face specified by the relevant text properties at this position. + Each handler called by handle_stop processes the sources of display + information for which it is "responsible", and returns a value + which tells handle_stop what to do next. + + Once handle_stop returns, the information it stores in the iterator + fields will not be refreshed until the iteration reaches the next + stop position, which is computed by compute_stop_pos called at the + end of handle_stop. compute_stop_pos examines the buffer's or + string's interval tree to determine where the text properties + change, finds the next position where overlays and character + composition can change, and stores in stop_charpos the closest + position where any of these factors should be reconsider. + + Producing glyphs. + Glyphs in a desired matrix are normally constructed in a loop calling get_next_display_element and then PRODUCE_GLYPHS. The call to PRODUCE_GLYPHS will fill the iterator structure with pixel @@ -191,23 +233,28 @@ along with GNU Emacs. If not, see . */ Frame matrices. That just couldn't be all, could it? What about terminal types not - supporting operations on sub-windows of the screen? To update the - display on such a terminal, window-based glyph matrices are not - well suited. To be able to reuse part of the display (scrolling - lines up and down), we must instead have a view of the whole - screen. This is what `frame matrices' are for. They are a trick. - - Frames on terminals like above have a glyph pool. Windows on such - a frame sub-allocate their glyph memory from their frame's glyph + supporting operations on sub-windows of the screen (a.k.a. "TTY" or + "text-mode terminal")? To update the display on such a terminal, + window-based glyph matrices are not well suited. To be able to + reuse part of the display (scrolling lines up and down), we must + instead have a view of the whole screen. This is what `frame + matrices' are for. They are a trick. + + Frames on text terminals have a glyph pool. Windows on such a + frame sub-allocate their glyph memory from their frame's glyph pool. The frame itself is given its own glyph matrices. By coincidence---or maybe something else---rows in window glyph matrices are slices of corresponding rows in frame matrices. Thus writing to window matrices implicitly updates a frame matrix which provides us with the view of the whole screen that we originally - wanted to have without having to move many bytes around. To be - honest, there is a little bit more done, but not much more. If you - plan to extend that code, take a look at dispnew.c. The function - build_frame_matrix is a good starting point. + wanted to have without having to move many bytes around. Then + updating all the visible windows on text-terminal frames is done by + using the frame matrices, which allows frame-global optimization of + what is actually written to the glass. + + To be honest, there is a little bit more done, but not much more. + If you plan to extend that code, take a look at dispnew.c. The + function build_frame_matrix is a good starting point. Bidirectional display. @@ -220,9 +267,10 @@ along with GNU Emacs. If not, see . */ concerned, the effect of calling bidi_move_to_visually_next, the main interface of the reordering engine, is that the iterator gets magically placed on the buffer or string position that is to be - displayed next. In other words, a linear iteration through the - buffer/string is replaced with a non-linear one. All the rest of - the redisplay is oblivious to the bidi reordering. + displayed next in the visual order. In other words, a linear + iteration through the buffer/string is replaced with a non-linear + one. All the rest of the redisplay is oblivious to the bidi + reordering. Well, almost oblivious---there are still complications, most of them due to the fact that buffer and string positions no longer @@ -231,7 +279,8 @@ along with GNU Emacs. If not, see . */ monotonously changing with vertical positions. Also, accounting for face changes, overlays, etc. becomes more complex because non-linear iteration could potentially skip many positions with - changes, and then cross them again on the way back... + changes, and then cross them again on the way back (see + handle_stop_backwards)... One other prominent effect of bidirectional display is that some paragraphs of text need to be displayed starting at the right @@ -252,7 +301,7 @@ along with GNU Emacs. If not, see . */ This way, the terminal-specific back-end can still draw the glyphs left to right, even for R2L lines. - Bidirectional display and character compositions + Bidirectional display and character compositions. Some scripts cannot be displayed by drawing each character individually, because adjacent characters change each other's shape @@ -272,15 +321,15 @@ along with GNU Emacs. If not, see . */ Each of these grapheme clusters is then delivered to PRODUCE_GLYPHS in the direction corresponding to the current bidi scan direction (recorded in the scan_dir member of the `struct bidi_it' object - that is part of the buffer iterator). In particular, if the bidi - iterator currently scans the buffer backwards, the grapheme - clusters are delivered back to front. This reorders the grapheme - clusters as appropriate for the current bidi context. Note that - this means that the grapheme clusters are always stored in the - LGSTRING object (see composite.c) in the logical order. + that is part of the iterator). In particular, if the bidi iterator + currently scans the buffer backwards, the grapheme clusters are + delivered back to front. This reorders the grapheme clusters as + appropriate for the current bidi context. Note that this means + that the grapheme clusters are always stored in the LGSTRING object + (see composite.c) in the logical order. Moving an iterator in bidirectional text - without producing glyphs + without producing glyphs. Note one important detail mentioned above: that the bidi reordering engine, driven by the iterator, produces characters in R2L rows From 5f992d1990d9f351cf907dcf2066f573e0fe9407 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 17 Aug 2019 14:21:47 +0300 Subject: [PATCH 541/567] Improve commentary in composite.el * lisp/composite.el (compose-gstring-for-graphic) (compose-gstring-for-terminal): Add comments that explain Unicode General Category mnemonics in human-readable terms. (Bug#14461) --- lisp/composite.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/composite.el b/lisp/composite.el index e50e5d381ec9..76722f93c412 100644 --- a/lisp/composite.el +++ b/lisp/composite.el @@ -554,6 +554,11 @@ All non-spacing characters have this function in ;; This sequence doesn't start with a proper base character. ((memq (get-char-code-property (lgstring-char gstring 0) 'general-category) + ;; "Improper" base characters are of the following general + ;; categories: + ;; Mark (nonspacing, combining, enclosing) + ;; Separator (space, line, paragraph) + ;; Other (control, format, surrogate) '(Mn Mc Me Zs Zl Zp Cc Cf Cs)) nil) @@ -646,6 +651,7 @@ All non-spacing characters have this function in de (+ de yoff))) ((and (= class 0) (eq (get-char-code-property (lglyph-char glyph) + ;; Me = enclosing mark 'general-category) 'Me)) ;; Artificially laying out glyphs in an enclosing ;; mark is difficult. All we can do is to adjust @@ -771,7 +777,8 @@ prepending a space before it." 'general-category) 'Cf) (progn - ;; Compose by replacing with a space. + ;; Compose Cf (format) control characters by + ;; replacing with a space. (lglyph-set-char glyph 32) (lglyph-set-width glyph 1) (setq i (1+ i))) From bcd0115e4db49791a77566b80fabc4384d9ebf57 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Fri, 16 Aug 2019 07:26:40 -0400 Subject: [PATCH 542/567] Fix lisp indent infloop on unfinished strings (Bug#37045) * lisp/emacs-lisp/lisp-mode.el (lisp-indent-calc-next): Stop trying to skip over strings if we've hit the end of buffer. * test/lisp/emacs-lisp/lisp-mode-tests.el (lisp-indent-unfinished-string): New test. --- lisp/emacs-lisp/lisp-mode.el | 15 ++++++++++----- test/lisp/emacs-lisp/lisp-mode-tests.el | 6 +++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 74bf0c87c538..bde0a4ea6d94 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -810,7 +810,7 @@ by more than one line to cross a string literal." (setq last-sexp (nth 2 ppss))) (setq depth (car ppss)) ;; Skip over newlines within strings. - (nth 3 ppss)) + (and (not (eobp)) (nth 3 ppss))) (let ((string-start (nth 8 ppss))) (setq ppss (parse-partial-sexp (point) (point-max) nil nil ppss 'syntax-table)) @@ -826,17 +826,22 @@ by more than one line to cross a string literal." indent-stack))))) (prog1 (let (indent) - (cond ((= (forward-line 1) 1) nil) - ;; Negative depth, probably some kind of syntax error. + (cond ((= (forward-line 1) 1) + ;; Can't move to the next line, apparently end of buffer. + nil) ((null indent-stack) - ;; Reset state. + ;; Negative depth, probably some kind of syntax + ;; error. Reset the state. (setq ppss (parse-partial-sexp (point) (point)))) ((car indent-stack)) ((integerp (setq indent (calculate-lisp-indent ppss))) (setf (car indent-stack) indent)) ((consp indent) ; (COLUMN CONTAINING-SEXP-START) (car indent)) - ;; This only happens if we're in a string. + ;; This only happens if we're in a string, but the + ;; loop should always skip over strings (unless we hit + ;; end of buffer, which is taken care of by the first + ;; clause). (t (error "This shouldn't happen")))) (setf (lisp-indent-state-stack state) indent-stack) (setf (lisp-indent-state-ppss-point state) ppss-point) diff --git a/test/lisp/emacs-lisp/lisp-mode-tests.el b/test/lisp/emacs-lisp/lisp-mode-tests.el index 63632449ca55..e4ba929ecbd0 100644 --- a/test/lisp/emacs-lisp/lisp-mode-tests.el +++ b/test/lisp/emacs-lisp/lisp-mode-tests.el @@ -284,7 +284,11 @@ Expected initialization file: `%s'\" (lisp-indent-line) (should (equal (buffer-string) "prompt> foo")))) - +(ert-deftest lisp-indent-unfinished-string () + "Don't infloop on unfinished string (Bug#37045)." + (with-temp-buffer + (insert "\"\n") + (lisp-indent-region (point-min) (point-max)))) (provide 'lisp-mode-tests) ;;; lisp-mode-tests.el ends here From 3f00db7ca6d40312651a302842561e7fb168ee99 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 17 Aug 2019 18:13:58 +0300 Subject: [PATCH 543/567] Minor update in admin/notes/unicode * admin/notes/unicode: Mention changes to be done in setup-default-fontset in fontset.el. (Bug#14461) --- admin/notes/unicode | 3 +++ 1 file changed, 3 insertions(+) diff --git a/admin/notes/unicode b/admin/notes/unicode index d641e60ff730..da0b0655724c 100644 --- a/admin/notes/unicode +++ b/admin/notes/unicode @@ -49,6 +49,9 @@ of OTF script tags in otf-script-alist, whose source is on this page: https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags Other databases in fontset.el might also need to be updated as needed. +One notable place to check is the function setup-default-fontset, +where new scripts will generally need some addition, most probably to +the list of "simple" scripts (search for "Simple"). The function 'ucs-names', defined in lisp/international/mule-cmds.el, might need to be updated because it knows about used and unused ranges From 0b810ebc9fe65e447e37832db40ccf634e5548d9 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 18 Aug 2019 18:23:06 +0300 Subject: [PATCH 544/567] Fix a typo in char-width-table * lisp/international/characters.el (char-width-table): Fix a typo in zero-width characters. --- lisp/international/characters.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/international/characters.el b/lisp/international/characters.el index cdd8ba7c4037..56829659159f 100644 --- a/lisp/international/characters.el +++ b/lisp/international/characters.el @@ -986,8 +986,8 @@ with L, LRE, or LRO Unicode bidi character type.") (#x1039 . #x103A) (#x103D . #x103E) (#x1058 . #x1059) - (#x105E . #x1160) - (#x1171 . #x1074) + (#x105E . #x1060) + (#x1071 . #x1074) (#x1082 . #x1082) (#x1085 . #x1086) (#x108D . #x108D) From 190565b2396d80178fc5f6757117540e3a1ae9e1 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 18 Aug 2019 19:36:31 +0300 Subject: [PATCH 545/567] Support the new Japanese era name * admin/unidata/NormalizationTest.txt: * admin/unidata/UnicodeData.txt: Add U+32FF SQUARE ERA NAME REIWA. Do not merge to master. * test/lisp/international/ucs-normalize-tests.el (ucs-normalize-tests--failing-lines-part1) (ucs-normalize-tests--failing-lines-part2): Update. Do not merge to master. * etc/NEWS: Mention the change. --- admin/unidata/NormalizationTest.txt | 1 + admin/unidata/UnicodeData.txt | 1 + etc/NEWS | 5 ++ .../lisp/international/ucs-normalize-tests.el | 71 +++++++++---------- 4 files changed, 41 insertions(+), 37 deletions(-) diff --git a/admin/unidata/NormalizationTest.txt b/admin/unidata/NormalizationTest.txt index 72a31bcdf18e..64914028a9d6 100644 --- a/admin/unidata/NormalizationTest.txt +++ b/admin/unidata/NormalizationTest.txt @@ -2149,6 +2149,7 @@ 32FC;32FC;32FC;30F0;30F0; # (㋼; ㋼; ㋼; ヰ; ヰ; ) CIRCLED KATAKANA WI 32FD;32FD;32FD;30F1;30F1; # (㋽; ㋽; ㋽; ヱ; ヱ; ) CIRCLED KATAKANA WE 32FE;32FE;32FE;30F2;30F2; # (㋾; ㋾; ㋾; ヲ; ヲ; ) CIRCLED KATAKANA WO +32FF;32FF;32FF;4EE4 548C;4EE4 548C; # (㋿; ㋿; ㋿; 令和; 令和; ) SQUARE ERA NAME REIWA 3300;3300;3300;30A2 30D1 30FC 30C8;30A2 30CF 309A 30FC 30C8; # (㌀; ㌀; ㌀; アパート; アハ◌゚ート; ) SQUARE APAATO 3301;3301;3301;30A2 30EB 30D5 30A1;30A2 30EB 30D5 30A1; # (㌁; ㌁; ㌁; アルファ; アルファ; ) SQUARE ARUHUA 3302;3302;3302;30A2 30F3 30DA 30A2;30A2 30F3 30D8 309A 30A2; # (㌂; ㌂; ㌂; アンペア; アンヘ◌゚ア; ) SQUARE ANPEA diff --git a/admin/unidata/UnicodeData.txt b/admin/unidata/UnicodeData.txt index ec32fafbce5f..e33f9b32e415 100644 --- a/admin/unidata/UnicodeData.txt +++ b/admin/unidata/UnicodeData.txt @@ -11836,6 +11836,7 @@ 32FC;CIRCLED KATAKANA WI;So;0;L; 30F0;;;;N;;;;; 32FD;CIRCLED KATAKANA WE;So;0;L; 30F1;;;;N;;;;; 32FE;CIRCLED KATAKANA WO;So;0;L; 30F2;;;;N;;;;; +32FF;SQUARE ERA NAME REIWA;So;0;L; 4EE4 548C;;;;N;;;;; 3300;SQUARE APAATO;So;0;L; 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; 3301;SQUARE ARUHUA;So;0;L; 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; 3302;SQUARE ANPEA;So;0;L; 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; diff --git a/etc/NEWS b/etc/NEWS index 1b668628413d..a4bc862d6014 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -30,6 +30,11 @@ This allows disabling the new feature introduced in Emacs 26.1 which loads files during completion of 'C-h f' and 'C-h v' according to 'definition-prefixes'. +--- +** Emacs now supports the new Japanese Era name. +The newly assigned codepoint U+32FF was added to the Unicode Character +Database compiled into Emacs. + * Editing Changes in Emacs 26.3 diff --git a/test/lisp/international/ucs-normalize-tests.el b/test/lisp/international/ucs-normalize-tests.el index d31aa5b4a92a..9f520036165f 100644 --- a/test/lisp/international/ucs-normalize-tests.el +++ b/test/lisp/international/ucs-normalize-tests.el @@ -181,26 +181,25 @@ implementations: (should-not (ucs-normalize-tests--rule1-failing-for-partX 0))) (defconst ucs-normalize-tests--failing-lines-part1 - (list 15131 15132 15133 15134 15135 15136 15137 15138 - 15139 - 16149 16150 16151 16152 16153 16154 16155 16156 - 16157 16158 16159 16160 16161 16162 16163 16164 - 16165 16166 16167 16168 16169 16170 16171 16172 - 16173 16174 16175 16176 16177 16178 16179 16180 - 16181 16182 16183 16184 16185 16186 16187 16188 - 16189 16190 16191 16192 16193 16194 16195 16196 - 16197 16198 16199 16200 16201 16202 16203 16204 - 16205 16206 16207 16208 16209 16210 16211 16212 - 16213 16214 16215 16216 16217 16218 16219 16220 - 16221 16222 16223 16224 16225 16226 16227 16228 - 16229 16230 16231 16232 16233 16234 16235 16236 - 16237 16238 16239 16240 16241 16242 16243 16244 - 16245 16246 16247 16248 16249 16250 16251 16252 - 16253 16254 16255 16256 16257 16258 16259 16260 - 16261 16262 16263 16264 16265 16266 16267 16268 - 16269 16270 16271 16272 16273 16274 16275 16276 - 16277 16278 16279 16280 16281 16282 16283 16284 - 16285 16286 16287 16288 16289)) + (list 2152 15132 15133 15134 15135 15136 15137 15138 + 15139 15140 16150 16151 16152 16153 16154 16155 + 16156 16157 16158 16159 16160 16161 16162 16163 + 16164 16165 16166 16167 16168 16169 16170 16171 + 16172 16173 16174 16175 16176 16177 16178 16179 + 16180 16181 16182 16183 16184 16185 16186 16187 + 16188 16189 16190 16191 16192 16193 16194 16195 + 16196 16197 16198 16199 16200 16201 16202 16203 + 16204 16205 16206 16207 16208 16209 16210 16211 + 16212 16213 16214 16215 16216 16217 16218 16219 + 16220 16221 16222 16223 16224 16225 16226 16227 + 16228 16229 16230 16231 16232 16233 16234 16235 + 16236 16237 16238 16239 16240 16241 16242 16243 + 16244 16245 16246 16247 16248 16249 16250 16251 + 16252 16253 16254 16255 16256 16257 16258 16259 + 16260 16261 16262 16263 16264 16265 16266 16267 + 16268 16269 16270 16271 16272 16273 16274 16275 + 16276 16277 16278 16279 16280 16281 16282 16283 + 16284 16285 16286 16287 16288 16289 16290)) ;; Keep a record of failures, for consulting afterwards (the ert ;; backtrace only shows a truncated version of these lists). @@ -258,23 +257,21 @@ implementations: ucs-normalize-tests--failing-lines-part1))) (defconst ucs-normalize-tests--failing-lines-part2 - (list 17482 17532 17636 18338 18340 18342 18344 18346 - 18348 18350 18352 18354 18356 18358 18360 18362 - 18364 18366 18376 18378 18380 18382 18384 18386 - 18388 18390 18392 18394 18396 18398 18400 18402 - 18404 18406 18408 18410 18412 18414 18416 18418 - 18420 18422 18424 18426 18428 18430 18432 18434 - 18436 18438 18440 18442 18444 18446 18448 18450 - 18452 18454 18456 18458 18460 18462 18464 18466 - 18468 18470 18472 18474 18476 18478 18480 18482 - 18484 18486 18488 18490 18492 18494 18496 18564 - 18566 18568 18570 18572 18574 18576 18578 18580 - 18582 18584 18586 18588 18590 18592 18594 18596 - 18598 18600 18602 18604 18606 18608 18610 18612 - 18614 18616 18618 18620 18622 18624 18626 18628 - 18630 18632 18634 18636 18638 18640 18642 18644 - 18646 18648 18650 18652 18654 18656 18658 18660 - 18662 18664 18666)) + (list 18377 18379 18381 18383 18385 18387 18389 18391 + 18393 18395 18397 18399 18401 18403 18405 18407 + 18409 18411 18413 18415 18417 18419 18421 18423 + 18425 18427 18429 18431 18433 18435 18437 18439 + 18441 18443 18445 18447 18449 18451 18453 18455 + 18457 18459 18461 18463 18465 18467 18469 18471 + 18473 18475 18477 18479 18481 18483 18485 18487 + 18489 18491 18493 18495 18497 18565 18567 18569 + 18571 18573 18575 18577 18579 18581 18583 18585 + 18587 18589 18591 18593 18595 18597 18599 18601 + 18603 18605 18607 18609 18611 18613 18615 18617 + 18619 18621 18623 18625 18627 18629 18631 18633 + 18635 18637 18639 18641 18643 18645 18647 18649 + 18651 18653 18655 18657 18659 18661 18663 18665 + 18667)) (ert-deftest ucs-normalize-part2 () :tags '(:expensive-test) From beb1d22260af2e03d80d34fcc1db212785a9d903 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Mon, 19 Aug 2019 17:32:09 +0200 Subject: [PATCH 546/567] Fix query-replace-regexp undo feature Ensure that non-regexp strings used with `looking-at' are quoted. * lisp/replace.el (perform-replace): Quote regexp (Bug#37073). * test/lisp/replace-tests.el (replace-tests-perform-replace-regexp-flag): New variable. (replace-tests-with-undo): Use it. (query-replace-undo-bug37073): Add tests. --- lisp/replace.el | 7 +++++-- test/lisp/replace-tests.el | 26 +++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lisp/replace.el b/lisp/replace.el index 08feb8eae7ea..0ddebb127043 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -2614,7 +2614,8 @@ It must return a string." (setq real-match-data (save-excursion (goto-char (match-beginning 0)) - (looking-at search-string) + ;; We must quote the string (Bug#37073) + (looking-at (regexp-quote search-string)) (match-data t (nth 2 elt))) noedit (replace-match-maybe-edit @@ -2624,7 +2625,9 @@ It must return a string." real-match-data (save-excursion (goto-char (match-beginning 0)) - (looking-at next-replacement) + (if regexp-flag + (looking-at next-replacement) + (looking-at (regexp-quote next-replacement))) (match-data t (nth 2 elt)))) ;; Set replaced nil to keep in loop (when (eq def 'undo-all) diff --git a/test/lisp/replace-tests.el b/test/lisp/replace-tests.el index cd30633e3770..cd08a522e39e 100644 --- a/test/lisp/replace-tests.el +++ b/test/lisp/replace-tests.el @@ -365,6 +365,9 @@ Each element has the format: (defvar replace-tests-bind-read-string nil "A string to bind `read-string' and avoid the prompt.") +(defvar replace-tests-perform-replace-regexp-flag t + "Value for regexp-flag argument passed to `perform-replace' in undo tests.") + (defmacro replace-tests-with-undo (input from to char-nums def-chr &rest body) "Helper to test `query-replace' undo feature. INPUT is a string to insert in a temporary buffer. @@ -412,7 +415,7 @@ Return the last evalled form in BODY." (if replace-tests-bind-read-string (lambda (&rest args) replace-tests-bind-read-string) (symbol-function 'read-string)))) - (perform-replace ,from ,to t t nil)) + (perform-replace ,from ,to t replace-tests-perform-replace-regexp-flag nil)) ,@body)))) (defun replace-tests--query-replace-undo (&optional comma) @@ -454,5 +457,26 @@ Return the last evalled form in BODY." input "a" "B" ((?\s . (1 2 3)) (?E . (4)) (?U . (5))) ?q (string= input (buffer-string)))))) +(ert-deftest query-replace-undo-bug37073 () + "Test for https://debbugs.gnu.org/37073 ." + (let ((input "theorem 1\ntheorem 2\ntheorem 3")) + (should + (replace-tests-with-undo + input "theorem \\([0-9]+\\)" + "theorem \\\\ref{theo_\\1}" + ((?\s . (1 2)) (?U . (3))) + ?q + (string= input (buffer-string))))) + ;; Now run a test with regexp-flag arg in `perform-replace' set to nil + (let ((input " ^theorem$ 1\n ^theorem$ 2\n ^theorem$ 3") + (replace-tests-perform-replace-regexp-flag nil) + (expected " theo 1\n ^theorem$ 2\n ^theorem$ 3")) + (should + (replace-tests-with-undo + input "^theorem$" + "theo" + ((?\s . (1 2 4)) (?U . (3))) + ?q + (string= expected (buffer-string)))))) ;;; replace-tests.el ends here From 615cff42580a3521c1a4ea7c3ec467eb8259e1c7 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Fri, 26 Jul 2019 23:20:37 -0400 Subject: [PATCH 547/567] Fix process filter documentation (Bug#13400) * doc/lispref/processes.texi (Asynchronous Processes): Note that input may read when sending data as well. (Output from Processes): Note that functions which send data may also trigger reading from processes. (Input to Processes, Filter Functions): Note that filter functions may be called recursively. --- doc/lispref/processes.texi | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index a93f4db42827..bd807cdceefb 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -588,9 +588,8 @@ process}. After an asynchronous process is created, it runs in parallel with Emacs, and Emacs can communicate with it using the functions described in the following sections (@pxref{Input to Processes}, and @pxref{Output from Processes}). Note that process -communication is only partially asynchronous: Emacs sends data to the -process only when certain functions are called, and Emacs accepts data -from the process only while waiting for input or for a time delay. +communication is only partially asynchronous: Emacs sends and receives +data to and from a process only when those functions are called. @cindex pty, when to use for subprocess communications @cindex pipe, when to use for subprocess communications @@ -1200,8 +1199,9 @@ the defaulting mechanism (@pxref{Default Coding Systems}). because the input buffer is full. When this happens, the send functions wait a short while, accepting output from subprocesses, and then try again. This gives the subprocess a chance to read more of its pending -input and make space in the buffer. It also allows filters, sentinels -and timers to run---so take account of that in writing your code. +input and make space in the buffer. It also allows filters (including +the one currently running), sentinels and timers to run---so take +account of that in writing your code. In these functions, the @var{process} argument can be a process or the name of a process, or a buffer or buffer name (which stands @@ -1416,9 +1416,10 @@ output, Emacs won't receive that output. Output from a subprocess can arrive only while Emacs is waiting: when reading terminal input (see the function @code{waiting-for-user-input-p}), -in @code{sit-for} and @code{sleep-for} (@pxref{Waiting}), and in -@code{accept-process-output} (@pxref{Accepting Output}). This -minimizes the problem of timing errors that usually plague parallel +in @code{sit-for} and @code{sleep-for} (@pxref{Waiting}), in +@code{accept-process-output} (@pxref{Accepting Output}), and in +functions which send data to processes (@pxref{Input to Processes}). +This minimizes the problem of timing errors that usually plague parallel programming. For example, you can safely create a process and only then specify its buffer or filter function; no output can arrive before you finish, if the code in between does not call any primitive @@ -1594,14 +1595,10 @@ outputs directly to the process buffer. By default, the error output from the process, if any, is also passed to the filter function, unless the destination for the standard error stream of the process was separated from the standard output -when the process was created (@pxref{Output from Processes}). - - The filter function can only be called when Emacs is waiting for -something, because process output arrives only at such times. Emacs -waits when reading terminal input (see the function -@code{waiting-for-user-input-p}), in @code{sit-for} and -@code{sleep-for} (@pxref{Waiting}), and in -@code{accept-process-output} (@pxref{Accepting Output}). +when the process was created. Emacs will only call the filter +function during certain function calls. @xref{Output from Processes}. +Note that if any of those functions are called by the filter, the +filter may be called recursively. A filter function must accept two arguments: the associated process and a string, which is output just received from it. The function is From e8f176b6423a1b4d456e2c332415c32982ff4553 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Wed, 21 Aug 2019 22:52:46 +0200 Subject: [PATCH 548/567] * etc/NEWS: Delete temporary markup. --- etc/NEWS | 2 -- 1 file changed, 2 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index a4bc862d6014..d672d057bb3c 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -24,13 +24,11 @@ with a prefix argument or by typing 'C-u C-h C-n'. * Changes in Emacs 26.3 -+++ ** New option 'help-enable-completion-auto-load'. This allows disabling the new feature introduced in Emacs 26.1 which loads files during completion of 'C-h f' and 'C-h v' according to 'definition-prefixes'. ---- ** Emacs now supports the new Japanese Era name. The newly assigned codepoint U+32FF was added to the Unicode Character Database compiled into Emacs. From 290fe4d12281a848cb02f51d2dbf874cd30ab441 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 22 Aug 2019 00:13:37 +0200 Subject: [PATCH 549/567] * ; ChangeLog.3 update --- ChangeLog.3 | 545 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 544 insertions(+), 1 deletion(-) diff --git a/ChangeLog.3 b/ChangeLog.3 index d994fcb870df..117b57d73c1a 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,3 +1,546 @@ +2019-08-21 Nicolas Petton + + * etc/NEWS: Delete temporary markup. + +2019-08-20 Noam Postavsky + + Fix process filter documentation (Bug#13400) + + * doc/lispref/processes.texi (Asynchronous Processes): Note that input + may read when sending data as well. + (Output from Processes): Note that functions which send data may also + trigger reading from processes. + (Input to Processes, Filter Functions): Note that filter functions may + be called recursively. + +2019-08-19 Tino Calancha + + Fix query-replace-regexp undo feature + + Ensure that non-regexp strings used with `looking-at' are quoted. + * lisp/replace.el (perform-replace): Quote regexp (Bug#37073). + * test/lisp/replace-tests.el (replace-tests-perform-replace-regexp-flag): + New variable. + (replace-tests-with-undo): Use it. + (query-replace-undo-bug37073): Add tests. + +2019-08-18 Eli Zaretskii + + Support the new Japanese era name + + * admin/unidata/NormalizationTest.txt: + * admin/unidata/UnicodeData.txt: Add U+32FF SQUARE ERA NAME REIWA. + Do not merge to master. + + * test/lisp/international/ucs-normalize-tests.el + (ucs-normalize-tests--failing-lines-part1) + (ucs-normalize-tests--failing-lines-part2): Update. Do not + merge to master. + + * etc/NEWS: Mention the change. + +2019-08-18 Eli Zaretskii + + Fix a typo in char-width-table + + * lisp/international/characters.el (char-width-table): Fix a + typo in zero-width characters. + +2019-08-17 Eli Zaretskii + + Minor update in admin/notes/unicode + + * admin/notes/unicode: Mention changes to be done in + setup-default-fontset in fontset.el. (Bug#14461) + +2019-08-17 Noam Postavsky + + Fix lisp indent infloop on unfinished strings (Bug#37045) + + * lisp/emacs-lisp/lisp-mode.el (lisp-indent-calc-next): Stop trying to + skip over strings if we've hit the end of buffer. + * test/lisp/emacs-lisp/lisp-mode-tests.el + (lisp-indent-unfinished-string): New test. + +2019-08-17 Eli Zaretskii + + Improve commentary in composite.el + + * lisp/composite.el (compose-gstring-for-graphic) + (compose-gstring-for-terminal): Add comments that explain + Unicode General Category mnemonics in human-readable terms. + (Bug#14461) + +2019-08-16 Eli Zaretskii + + Fix markup in dired-x.texi + + * doc/misc/dired-x.texi (Omitting Variables) + (Local Variables, Shell Command Guessing) + (Advanced Cleaning Variables, Special Marking Function): Fix + markup and indexing. (Bug#14212) + +2019-08-10 Eli Zaretskii + + * src/callproc.c (Fcall_process): Doc fix. + +2019-08-10 Eli Zaretskii + + Improve documentation of features that use the fringes + + * doc/emacs/display.texi (Fringes): Add cross-reference to + where indicate-empty-lines is described. + (Useless Whitespace): Add an @anchor for a more accurate + cross-reference in "Fringes". + +2019-08-10 Mauro Aranda + + Fix docstrings in pong + + * lisp/play/pong.el (pong-move-left pong-move-right): Refer to the + right bats and directions of movement. (Bug#36959) + +2019-08-09 Eli Zaretskii + + Improve doc strings of 'append-to-buffer' and friends + + * lisp/simple.el (append-to-buffer, prepend-to-buffer) + (copy-to-buffer): Doc fixes. + +2019-08-08 Mauro Aranda + + Fix octave-mode ElDoc support + + * lisp/progmodes/octave.el (octave-eldoc-function-signatures): Fix the + regexp used, so no match happens when there is no defined function FN. + Also, tweak the regexp to support GNU Octave 4.2.x and newer. (Bug#36459) + +2019-08-08 Eli Zaretskii + + Avoid Groff hanging on MS-Windows when invoked by "M-x man" + + * lisp/man.el (Man-build-man-command): On MS-Windows, redirect + stdin of 'man' to the null device, to make sure Groff exits + immediately after formatting the man page. + +2019-08-07 Philipp Stephani + + Ignore pending_signals when checking for quits. + + pending_signals is often set if no quit is pending. This results in + bugs in module code if the module returns but no quit is actually + pending. + + * src/emacs-module.c (module_should_quit): Use QUITP macro to check + whether the caller should quit. + + * src/eval.c: Remove obsolete comment. + +2019-08-03 Basil L. Contovounesios + + Fix nnmail-expiry-wait docs and custom :types + + * doc/misc/gnus.texi (Group Parameters, Expiring Mail): + * lisp/gnus/gnus-cus.el (gnus-group-parameters): Clarify + descriptions of nnmail-expiry, nnmail-expiry-wait, and + nnmail-expiry-wait-function. + * lisp/gnus/nnmail.el (nnmail-expiry-wait) + (nnmail-expiry-wait-function): Clarify docstrings and fix custom + :types (bug#36850). + +2019-08-03 Eli Zaretskii + + * lisp/simple.el (kill-do-not-save-duplicates): Doc fix. (Bug#36827) + +2019-08-03 Eli Zaretskii + + Improve documentation of debugging Lisp syntax error + + * doc/lispref/debugging.texi (Syntax Errors, Excess Open) + (Excess Close): Name the commands invoked by the key + sequences. Add cross-references to appropriate sections of + the Emacs manual. (Bug#21385) + + (cherry picked from commit faafd467a374c9398ee4668cdc173611d35693ed) + +2019-07-30 Noam Postavsky + + Add index for "\( in strings" (Bug#25195) + + * doc/emacs/programs.texi (Left Margin Paren): Add index for "\( in + strings". + * doc/lispref/positions.texi (List Motion): Add index, and cross + reference. + +2019-07-30 Martin Rudalics + + Fix doc-string of 'fit-window-to-buffer' (Bug#36848) + + * lisp/window.el (fit-window-to-buffer): Fix doc-string. + + Suggested by Drew Adams + +2019-07-26 Tino Calancha + + Update view-mode docstring + + Not all the kill commands save the text in the kill ring + by default (e.g. `kill-rectangle'). + It is more precise to just say that the kill commands save + the text and do not change the buffer (Bug#36741). + * lisp/view.el (view-mode): Update docstring. + +2019-07-26 Noam Postavsky + + Fix subproc listening when setting filter to non-t (Bug#36591) + + * src/process.c (Fset_process_filter): Call add_process_read_fd + according to the state of process filter before it's updated. This + restores the correct functioning as it was before 2016-02-16 "Allow + setting the filter masks later". Inline the set_process_filter_masks + call instead of fixing it that function, because it is also called + from connect_network_socket, and we don't want to change the behavior + of that function so close to release. + * test/src/process-tests.el (set-process-filter-t): New test. + +2019-07-26 Noam Postavsky + + * etc/NEWS.25: Belatedly announce rcirc-reconnect-delay. + +2019-07-26 Noam Postavsky + + Mention term.el's \032 dir tracking in commentary (Bug#19524) + + * lisp/term.el: Mention both forms of directory tracking in + commentary. Remove obsolete ChangeLog comments. Move more relevant + summary comments to the top. + +2019-07-26 Stefan Kangas + + Remove upload functionality of package-x from the elisp manual + + Suggested by Stefan Monnier. + Ref: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=19537#8 + + * doc/lispref/package.texi (Package Archives): Don't document + package-x upload functions in the elisp manual, since they are not + very commonly used. (Bug#19537) + * lisp/emacs-lisp/package-x.el (package-archive-upload-base) + (package-upload-buffer, package-upload-file): Add to the doc strings + any details removed from the elisp manual that would otherwise be + missing. + +2019-07-25 Nicolas Petton + + * etc/AUTHORS: Update. + +2019-07-23 Basil L. Contovounesios + + Clarify Gravatar docs + + For discussion, see the following thread: + https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00528.html + * doc/misc/gnus.texi (X-Face): Fix cross-reference. + (Gravatars): + * lisp/gnus/gnus-gravatar.el (gnus-gravatar-too-ugly): + * lisp/image/gravatar.el (gravatar-cache-ttl, gravatar-rating) + (gravatar-size): Clarify user option descriptions. + (gravatar-retrieve, gravatar-retrieve-synchronously): Document + return value. + +2019-07-22 Alan Mackenzie + + * doc/lispref/display.texi (Defining Faces): Say a face can't be undefined. + +2019-07-21 Noam Postavsky + + Handle completely undecoded input in term (Bug#29918) + + * lisp/term.el (term-emulate-terminal): Avoid errors if the whole + decoded string is eight-bit characters. Don't attempt to save the + string for next iteration in that case. + * test/lisp/term-tests.el (term-decode-partial) + (term-undecodable-input): New tests. + +2019-07-20 N. Jackson (tiny change) + + * doc/misc/forms.texi (Control File Format): Fix a doc error. + + (Bug#36693) + +2019-07-17 Basil L. Contovounesios + + Fix typo in package-alist docstring + + Pointed out by Michael Heerdegen . + * lisp/emacs-lisp/package.el (package-alist): Fix docstring + grammar (bug#17403). + +2019-07-14 Markus Triska + + * doc/lispref/text.texi (Mode-Specific Indent): Fix a typo (bug#36646). + +2019-07-13 Eli Zaretskii + + Improve doc string of 'bidi-display-reordering' + + * src/buffer.c (syms_of_buffer) : + Further doc fix. + +2019-07-13 Stefan Kangas + + Add warning to bidi-display-reordering doc string + + This explanation was given by Eli Zaretskii on emacs-devel. + For discussion, see: + https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00294.html + + * src/buffer.c (syms_of_buffer): Add warning to doc string of + bidi-display-reordering to explain that it should only be used for + debugging. + +2019-07-12 YAMAMOTO Mitsuharu + + Raise required librsvg version so as to match the current use + + * configure.ac: Set RSVG_REQUIRED to 2.14.0 as rsvg_handle_get_dimensions + needs it. + +2019-07-10 Michael Albinus + + * lisp/net/tramp-sh.el (tramp-inline-compress-start-size): Set nil on w32. + +2019-07-09 Stefan Monnier + + * lisp/progmodes/verilog-mode.el: One more ELPA Version: + +2019-07-06 Stefan Monnier + + * lisp/svg.el, lisp/progmodes/ada-mode.el: Fix bug#36360. + + Tell package.el their version number, for better behavior w.r.t the + versions available in GNU ELPA + +2019-07-06 Eli Zaretskii + + Minor copyedit of "Font Lock" in user manual + + * doc/emacs/display.texi (Font Lock): Make the wording about + "enabling Font Lock" crystal clear. (Bug#36529) + +2019-07-06 Eli Zaretskii + + Improve description of image descriptors + + * doc/lispref/display.texi (Image Descriptors): More accurate + description of where image files are looked up. (Bug#36523) + +2019-07-06 Eli Zaretskii + + Improve documentation of secondary selections + + * doc/emacs/killing.texi (Secondary Selection): Improve + wording. Mention that 'M-mouse-1' can be used to cancel + secondary selections. (Bug#36365) + +2019-07-06 Eli Zaretskii + + * src/fns.c (Fmapconcat): Doc fix. (Bug#36418) + +2019-07-06 YAMAMOTO Mitsuharu + + Avoid crash inside CFCharacterSetIsLongCharacterMember (Bug#36507) + + * src/macfont.m (macfont_supports_charset_and_languages_p) + (macfont_has_char): Don't pass integers outside the Unicode codespace to + CFCharacterSetIsLongCharacterMember. Do not merge to master. + +2019-07-06 Noam Postavsky + + Fix python.el docstring (Bug#36458) + + * lisp/progmodes/python.el (python-shell--prompt-calculated-output-regexp): + python-shell-set-prompt-regexp doesn't exist, presumably + python-shell-prompt-set-calculated-regexps was meant. + +2019-07-03 Eli Zaretskii + + * lisp/hi-lock.el (hi-lock-line-face-buffer): Doc fix. (Bug36448) + +2019-06-29 Stefan Kangas + + Fix typo in doc string of file-exists-p (bug#36408) + + * src/fileio.c (Ffile_exists_p): Fix typo in doc string. + +2019-06-28 Juanma Barranquero + + * test/lisp/url/url-file-tests.el (url-file): Fix for POSIX filenames. + +2019-06-28 Stefan Kangas + + Fix typo in windows.texi + + * doc/lispref/windows.texi (Window History): Fix typo. (Bug#36412) + +2019-06-26 Basil L. Contovounesios + + Clarify & update (elisp) Writing Emacs Primitives + + * doc/lispref/internals.texi (Writing Emacs Primitives): Update some + of the sample code listings, fixing argument lists and parentheses. + Replace ... with @dots{}. Describe UNEVALLED special forms as + taking a single argument. (bug#36392) + +2019-06-26 Eli Zaretskii + + Clarify a subtle issue in the Internals chapter of lispref + + * doc/lispref/internals.texi (Writing Emacs Primitives): + Clarify the issue with relocation of buffer or string text as + side effect of Lisp evaluation. (Bug#36392) + +2019-06-26 Noam Postavsky + + Fix sgml-mode handling of quotes within parens (Bug#36347) + + * lisp/textmodes/sgml-mode.el (sgml-syntax-propertize): Use + syntax-ppss-table if set. This is only needed on the release branch, + on master the caller (syntax-propertize) already does this. + (sgml-mode): Set syntax-ppss-table to sgml-tag-syntax-table. This + correctly classifies parens as punctuation, so they won't confuse the + parser. + * test/lisp/textmodes/sgml-mode-tests.el (sgml-tests--quotes-syntax): + New test copied from master, with two cases added for this bug. + +2019-06-21 Juanma Barranquero + + Rename 'make-symbolic-link' argument NEWNAME to LINKNAME + + * src/fileio.c (Fmake_symbolic_link): Fix docstring. + * doc/lispref/files.texi (Changing Files): Doc fix. + +2019-06-20 Robert Pluim + + Check that length of data returned by sysctl is non-zero + + The length of the data returned by sysctl can be zero, which was not + checked for. This could cause crashes, e.g. when querying + non-existent processes. (Bug#36279) + + * src/sysdep.c (list_system_processes) [DARWIN_OS || __FreeBSD__]: + (system_process_attributes) [__FreeBSD__]: + (system_process_attributes) [DARWIN_OS]: + * src/filelock.c (get_boot_time) [CTL_KERN && KERN_BOOTTIME]: Check + for zero length data returned by sysctl. + +2019-06-17 Juanma Barranquero + + * test/lisp/progmodes/python-tests.el (python-virt-bin): Doc fix. + +2019-06-17 Juanma Barranquero + + Fix Python tests depending on system-type + + * test/lisp/progmodes/python-tests.el (python-virt-bin): New function. + (python-shell-calculate-exec-path-2) + (python-shell-calculate-exec-path-3) + (python-shell-calculate-exec-path-4) + (python-shell-with-environment-1, python-shell-with-environment-2): + Use it. + +2019-06-16 Juanma Barranquero + + Fix problem with wdired test when symlinks cannot be created. + + * test/lisp/wdired-tests.el (wdired-test-symlink-name): + Skip test if 'make-symbolic-link' fails for whatever reason; + that's not what's being tested. + +2019-06-16 Eli Zaretskii + + Improve wording of documentation of click events + + * doc/lispref/commands.texi (Click Events, Accessing Mouse): + Improve and clarify wording. (Bug#36232) + +2019-06-16 Mattias Engdegård + + Backport: Fix typo in regexp-opt example code + + * doc/lispref/searching.texi (Regexp Functions): + Fix typo in example code (Bug#34596). + +2019-06-15 Stefan Kangas + + Remove outdated comment in winner.el (Bug#36185) + + * lisp/winner.el: Remove outdated comment. + +2019-06-15 Michael Albinus + + Fix accidential change in tramp-tests; do not merge with master + + * lisp/net/trampver.el: Change version to "2.3.5.26.3". + (customize-package-emacs-version-alist): Add Tramp version + integrated in Emacs 26.3. + + * test/lisp/net/tramp-tests.el (tramp-test42-auto-load): + Add skip for w32. + +2019-06-15 Juanma Barranquero + + tramp-test42-auto-load: Add expected-result. + + * test/lisp/net/tramp-tests.el (tramp-test42-auto-load): + Expect a failed result if remote file access is not enabled, + as it happens while doing the test on Windows. + +2019-06-15 Juanma Barranquero + + * test/lisp/url/url-file-tests.el (url-file): Use file:///, not file://. + +2019-06-15 Juanma Barranquero + + Fix doc of srecompile-compile-split-code (Bug#36200) + + * lisp/cedet/srecode/compile.el (srecode-compile-split-code): + Remove leftover text from docstring. + +2019-06-14 Eric Abrahamsen + + Make sure Gnus imap group names are decoded before searching + + do not merge (fix unnecessary in Emacs 27) + + * lisp/gnus/nnir.el (nnir-run-imap): Ensure that non-ascii group names + have been fully decoded before passing them to imap search. + +2019-06-14 Eli Zaretskii + + Remove failing test erroneously added in backport + + * test/src/thread-tests.el (threads-test-bug33073): Remove + test which cannot work on the emacs-26 branch. Do not merge + to master. Reported by Juanma Barranquero . + +2019-06-14 Juanma Barranquero + + * lisp/net/sieve-manage.el (sieve-manage-parse-capability): Doc fix. + +2019-06-12 Nicolas Petton + + Bump Emacs version to 26.2.90 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version. + +2019-06-12 Nicolas Petton + + * etc/AUTHORS: Update. + 2019-06-12 Martin Rudalics Fix description of 'display-buffer-in-previous-window' again (Bug#36161) @@ -65967,7 +66510,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit eca2677b1db94a126b6d2871526a1d6fce98353d (inclusive). +commit e8f176b6423a1b4d456e2c332415c32982ff4553 (inclusive). See ChangeLog.1 for earlier changes. ;; Local Variables: From a6d0172e8330a5683517eba78356d4c70ad979d7 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 22 Aug 2019 00:15:11 +0200 Subject: [PATCH 550/567] * etc/AUTHORS: Update. --- etc/AUTHORS | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/etc/AUTHORS b/etc/AUTHORS index 9fa657337ad9..7e18fa9ff02d 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -441,10 +441,10 @@ Bartosz Duszel: changed allout.el bib-mode.el cc-cmds.el hexl.el icon.el xscheme.el Basil L. Contovounesios: changed simple.el message.el customize.texi - internals.texi sequences.texi bibtex.el css-mode-tests.el css-mode.el - display.texi electric.el eval.texi functions.texi gnus-art.el - gnus-gravatar.el gnus.texi gravatar.el ibuffer.el image-tests.el - image.el indent.el json-tests.el and 14 other files + gnus.texi internals.texi sequences.texi bibtex.el css-mode-tests.el + css-mode.el display.texi electric.el eval.texi functions.texi + gnus-art.el gnus-cus.el gnus-gravatar.el gravatar.el ibuffer.el + image-tests.el image.el indent.el and 16 other files Bastian Beischer: changed include.el mru-bookmark.el refs.el semantic/complete.el senator.el @@ -3281,8 +3281,8 @@ Matt Swift: changed dired.el editfns.c lisp-mode.el mm-decode.el Mauro Aranda: changed autorevert.el cc-mode.texi control.texi dbus.texi dired-x.texi eudc.texi files.texi functions.texi gnus-faq.texi - gnus.texi info.el modes.texi org.texi os.texi picture.el positions.texi - reftex.texi variables.texi + gnus.texi info.el modes.texi octave.el org.texi os.texi picture.el + pong.el positions.texi reftex.texi variables.texi Maxime Edouard Robert Froumentin: changed gnus-art.el mml.el @@ -3659,11 +3659,11 @@ and changed rsz-mini.el emacs-buffer.gdb comint.el files.el Makefile Noah Lavine: changed tramp.el -Noam Postavsky: changed lisp-mode.el progmodes/python.el xdisp.c - lisp-mode-tests.el cl-macs.el emacs-lisp/debug.el term.el bytecomp.el - data.c simple.el ert.el help-fns.el subr.el modes.texi processes.texi - cl-print.el elisp-mode.el eval.c ffap.el search.c sh-script.el - and 259 other files +Noam Postavsky: changed lisp-mode.el progmodes/python.el + lisp-mode-tests.el xdisp.c cl-macs.el term.el emacs-lisp/debug.el + bytecomp.el data.c simple.el ert.el help-fns.el processes.texi subr.el + modes.texi cl-print.el elisp-mode.el eval.c ffap.el search.c + sh-script.el and 259 other files Nobuyoshi Nakada: co-wrote ruby-mode.el @@ -4512,8 +4512,8 @@ Stefan Bruda: co-wrote prolog.el Stefan Guath: changed find-dired.el -Stefan Kangas: changed bookmark.el buffer.c fileio.c windows.texi - winner.el +Stefan Kangas: changed bookmark.el buffer.c fileio.c package-x.el + package.texi windows.texi winner.el Stefan Merten: co-wrote rst.el @@ -4857,10 +4857,10 @@ Tino Calancha: wrote buff-menu-tests.el ediff-ptch-tests.el em-ls-tests.el ffap-tests.el hi-lock-tests.el ls-lisp-tests.el register-tests.el rmc-tests.el and changed ibuffer.el dired-tests.el ibuf-ext.el dired.el dired-aux.el - simple.el replace.el ibuffer-tests.el ls-lisp.el diff-mode.el - ibuf-macs.el cl-seq.el dired-x.el dired.texi ediff-ptch.el em-ls.el - files.el replace-tests.el buff-menu.el cl.texi ediff-init.el - and 82 other files + replace.el simple.el ibuffer-tests.el ls-lisp.el diff-mode.el + ibuf-macs.el replace-tests.el cl-seq.el dired-x.el dired.texi + ediff-ptch.el em-ls.el files.el buff-menu.el cl.texi ediff-init.el + and 83 other files Titus von der Malsburg: changed simple.el window.el From 70829f8c22b6020321b8e63c74c31f3a4c70e431 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 22 Aug 2019 00:38:06 +0200 Subject: [PATCH 551/567] ; ChangeLog.3 update --- ChangeLog.3 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog.3 b/ChangeLog.3 index 117b57d73c1a..de51077a0e4e 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,3 +1,7 @@ +2019-08-22 Nicolas Petton + + * etc/AUTHORS: Update. + 2019-08-21 Nicolas Petton * etc/NEWS: Delete temporary markup. @@ -66510,7 +66514,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit e8f176b6423a1b4d456e2c332415c32982ff4553 (inclusive). +commit a6d0172e8330a5683517eba78356d4c70ad979d7 (inclusive). See ChangeLog.1 for earlier changes. ;; Local Variables: From 4e59ad59a2ec098cd33294aeba5769ff8cd96110 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 22 Aug 2019 00:38:54 +0200 Subject: [PATCH 552/567] Bump Emacs version to 26.3 * README: * configure.ac: * msdos/sed2v2.inp: * nt/README.W32: Bump Emacs version. --- README | 2 +- configure.ac | 2 +- msdos/sed2v2.inp | 2 +- nt/README.W32 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README b/README index b1e0111028d7..1c4341de0376 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 26.2.90 of GNU Emacs, the extensible, +This directory tree holds version 26.3 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU diff --git a/configure.ac b/configure.ac index a79b322ecdd0..ebf24c8657e1 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ(2.65) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT(GNU Emacs, 26.2.90, bug-gnu-emacs@gnu.org) +AC_INIT(GNU Emacs, 26.3, bug-gnu-emacs@gnu.org) dnl Set emacs_config_options to the options of 'configure', quoted for the shell, dnl and then quoted again for a C string. Separate options with spaces. diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 886fcb1747a7..f0108921295e 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -66,7 +66,7 @@ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ -/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "26.2.90"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "26.3"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/README.W32 b/nt/README.W32 index 501ad45f739d..1ba4081a6821 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 26.2.90 for MS-Windows + Emacs version 26.3 for MS-Windows This README file describes how to set up and run a precompiled distribution of the latest version of GNU Emacs for MS-Windows. You From 96dd0196c28bc36779584e47fffcca433c9309cd Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 22 Aug 2019 00:40:13 +0200 Subject: [PATCH 553/567] * etc/HISTORY: Add Emacs 26.3 release release date. --- etc/HISTORY | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/HISTORY b/etc/HISTORY index bf03692d3ff9..6cda28d15a63 100644 --- a/etc/HISTORY +++ b/etc/HISTORY @@ -218,6 +218,8 @@ GNU Emacs 26.1 (2018-05-28) emacs-26.1 GNU Emacs 26.2 (2019-04-12) emacs-26.2 +GNU Emacs 26.3 (2019-08-28) emacs-26.3 + ---------------------------------------------------------------------- This file is part of GNU Emacs. From 1af1240f5f101ce3a4db30675a665ee70a9f8c81 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 29 Aug 2019 10:59:53 -0700 Subject: [PATCH 554/567] ; Remove empty NEWS sections --- etc/NEWS | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index d672d057bb3c..de42606d2b8b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -15,12 +15,6 @@ in older Emacs versions. You can narrow news to a specific version by calling 'view-emacs-news' with a prefix argument or by typing 'C-u C-h C-n'. - -* Installation Changes in Emacs 26.3 - - -* Startup Changes in Emacs 26.3 - * Changes in Emacs 26.3 @@ -33,24 +27,6 @@ loads files during completion of 'C-h f' and 'C-h v' according to The newly assigned codepoint U+32FF was added to the Unicode Character Database compiled into Emacs. - -* Editing Changes in Emacs 26.3 - - -* Changes in Specialized Modes and Packages in Emacs 26.3 - - -* New Modes and Packages in Emacs 26.3 - - -* Incompatible Lisp Changes in Emacs 26.3 - - -* Lisp Changes in Emacs 26.3 - - -* Changes in Emacs 26.3 on Non-Free Operating Systems - * Installation Changes in Emacs 26.2 From 0c3fc71d3bef37bac6a766d319c4574cd24c20c0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 30 Aug 2019 10:04:23 +0300 Subject: [PATCH 555/567] ; Bump Emacs version to 26.3.50 * README: * etc/NEWS: * configure.ac: * msdos/sed2v2.inp: * nt/README.W32: Bump Emacs version to 26.3.50. --- README | 2 +- configure.ac | 2 +- etc/NEWS | 27 +++++++++++++++++++++++++++ msdos/sed2v2.inp | 2 +- nt/README.W32 | 2 +- 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/README b/README index 1c4341de0376..5462db0400bc 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 26.3 of GNU Emacs, the extensible, +This directory tree holds version 26.3.50 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU diff --git a/configure.ac b/configure.ac index ebf24c8657e1..b4a41ba78cad 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ(2.65) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT(GNU Emacs, 26.3, bug-gnu-emacs@gnu.org) +AC_INIT(GNU Emacs, 26.3.50, bug-gnu-emacs@gnu.org) dnl Set emacs_config_options to the options of 'configure', quoted for the shell, dnl and then quoted again for a C string. Separate options with spaces. diff --git a/etc/NEWS b/etc/NEWS index de42606d2b8b..61d5115cdc5f 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -15,6 +15,33 @@ in older Emacs versions. You can narrow news to a specific version by calling 'view-emacs-news' with a prefix argument or by typing 'C-u C-h C-n'. + +* Installation Changes in Emacs 26.4 + + +* Startup Changes in Emacs 26.4 + + +* Changes in Emacs 26.4 + + +* Editing Changes in Emacs 26.4 + + +* Changes in Specialized Modes and Packages in Emacs 26.4 + + +* New Modes and Packages in Emacs 26.4 + + +* Incompatible Lisp Changes in Emacs 26.4 + + +* Lisp Changes in Emacs 26.4 + + +* Changes in Emacs 26.4 on Non-Free Operating Systems + * Changes in Emacs 26.3 diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index f0108921295e..f2ed3ff98574 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -66,7 +66,7 @@ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ -/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "26.3"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "26.3.50"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/README.W32 b/nt/README.W32 index 1ba4081a6821..47c9bd7aa9d1 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 26.3 for MS-Windows + Emacs version 26.3.50 for MS-Windows This README file describes how to set up and run a precompiled distribution of the latest version of GNU Emacs for MS-Windows. You From 8e420c09bcef1bf2a08b03deb74d5c663d898e33 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Sat, 31 Aug 2019 14:32:13 +0000 Subject: [PATCH 556/567] Clarify the use of left/right-margin-width in determining current margin width * doc/lispref/display.texi (Display-Margins): Clarify that left/right-margin-width can not be used to determine the current margin width, and that window-margins must be used instead. --- doc/lispref/display.texi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 9eb406b3c6a2..853f69fa3301 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -4928,7 +4928,9 @@ means no right marginal area. Setting these variables does not immediately affect the window. These variables are checked when a new buffer is displayed in the window. Thus, you can make changes take effect by calling -@code{set-window-buffer}. +@code{set-window-buffer}. Do not use these variables to try to +determine the current width of the left or right margin. Instead, use +the function @code{window-margins}. You can also set the margin widths immediately. From 7e527af72cae65fdb3f61c7d92907cfdfd1e6ea3 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 22 Aug 2019 20:48:19 -0400 Subject: [PATCH 557/567] Fix non-deterministic process test * test/src/process-tests.el (set-process-filter-t): Don't assume subprocess output will come in a single chunk, keep waiting for more data until next "prompt" is read from subprocess. (cherry picked from commit aa49aa884053d0e8b33efe265f2aade19d1f3f3d) --- test/src/process-tests.el | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/test/src/process-tests.el b/test/src/process-tests.el index 7a6762a9226a..ef057af6b797 100644 --- a/test/src/process-tests.el +++ b/test/src/process-tests.el @@ -154,24 +154,30 @@ (concat invocation-directory invocation-name) "-Q" "--batch" "--eval" (prin1-to-string - '(let (s) - (while (setq s (read-from-minibuffer "$ ")) + '(let ((s nil) (count 0)) + (while (setq s (read-from-minibuffer + (format "%d> " count))) (princ s) - (princ "\n"))))))) + (princ "\n") + (setq count (1+ count)))))))) (set-process-query-on-exit-flag proc nil) (send-string proc "one\n") - (should - (accept-process-output proc 1)) ; Read "one". - (should (equal (buffer-string) "$ one\n$ ")) + (while (not (equal (buffer-substring + (line-beginning-position) (point-max)) + "1> ")) + (accept-process-output proc)) ; Read "one". + (should (equal (buffer-string) "0> one\n1> ")) (set-process-filter proc t) ; Stop reading from proc. (send-string proc "two\n") (should-not (accept-process-output proc 1)) ; Can't read "two" yet. - (should (equal (buffer-string) "$ one\n$ ")) + (should (equal (buffer-string) "0> one\n1> ")) (set-process-filter proc nil) ; Resume reading from proc. - (should - (accept-process-output proc 1)) ; Read "two" from proc. - (should (equal (buffer-string) "$ one\n$ two\n$ "))))) + (while (not (equal (buffer-substring + (line-beginning-position) (point-max)) + "2> ")) + (accept-process-output proc)) ; Read "Two". + (should (equal (buffer-string) "0> one\n1> two\n2> "))))) (ert-deftest start-process-should-not-modify-arguments () "`start-process' must not modify its arguments in-place." From 13b951001c15a78f7f8cb4bff1825cc77b2c8456 Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Thu, 22 Aug 2019 16:14:26 +0200 Subject: [PATCH 558/567] Add description of chinese-sisheng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * doc/emacs/mule.texi (Input Methods): Add description of chinese-sisheng method for entering characters using pīnyīn. --- doc/emacs/mule.texi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index b3e7d218c623..4ed13b8787cb 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -497,6 +497,10 @@ one of them selects that alternative. The keys @kbd{C-f}, @kbd{C-b}, do the highlighting in the buffer showing the possible characters, rather than in the echo area. + To enter characters according to the @dfn{pīnyīn} transliteration +method instead, use the @code{chinese-sisheng} input method. This is +a composition based method, where e.g. @kbd{pi1} results in @samp{pī}. + In Japanese input methods, first you input a whole word using phonetic spelling; then, after the word is in the buffer, Emacs converts it into one or more characters using a large dictionary. One From c596be08f71e8118ddaa3e330997716de4c109ab Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Sat, 7 Sep 2019 18:15:40 +0000 Subject: [PATCH 559/567] Amend the menu caption for page "Display Property" in the Elisp manual. * doc/lispref/display.texi (Emacs Display): Replace a content-free menu caption with one mentioning images, margins and text size. --- doc/lispref/display.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 853f69fa3301..55a0a2f92437 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -25,7 +25,7 @@ that Emacs presents to the user. * Fringes:: Controlling window fringes. * Scroll Bars:: Controlling scroll bars. * Window Dividers:: Separating windows visually. -* Display Property:: Enabling special display features. +* Display Property:: Images, margins, text size, etc. * Images:: Displaying images in Emacs buffers. * Xwidgets:: Displaying native widgets in Emacs buffers. * Buttons:: Adding clickable buttons to Emacs buffers. From 30c4f35a6fc8a6507930923766c3126ac1c2063f Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Mon, 9 Sep 2019 08:21:18 +0200 Subject: [PATCH 560/567] query-replace-regexp undo: Update next-replacement after undo * lisp/replace.el (perform-replace): Rename the local binding to not shadow next-replacement. Update next-replacement after undo (Bug#37287). * test/lisp/replace-tests.el (query-replace-undo-bug37287): Add test. (query-replace-undo-bug37073): Tweak this test. --- lisp/replace.el | 14 ++++++++------ test/lisp/replace-tests.el | 18 +++++++++++++++++- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/lisp/replace.el b/lisp/replace.el index 0ddebb127043..dd24d8ba923b 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -2584,7 +2584,7 @@ It must return a string." (num-replacements 0) (nocasify t) ; Undo must preserve case (Bug#31073). search-string - next-replacement) + last-replacement) (while (and (< stack-idx stack-len) stack (or (null replaced) last-was-act-and-show)) @@ -2595,9 +2595,9 @@ It must return a string." ;; Bind swapped values ;; (search-string <--> replacement) search-string (nth (if replaced 4 3) elt) - next-replacement (nth (if replaced 3 4) elt) + last-replacement (nth (if replaced 3 4) elt) search-string-replaced search-string - next-replacement-replaced next-replacement + last-replacement-replaced last-replacement last-was-act-and-show nil) (when (and (= stack-idx stack-len) @@ -2619,16 +2619,18 @@ It must return a string." (match-data t (nth 2 elt))) noedit (replace-match-maybe-edit - next-replacement nocasify literal + last-replacement nocasify literal noedit real-match-data backward) replace-count (1- replace-count) real-match-data (save-excursion (goto-char (match-beginning 0)) (if regexp-flag - (looking-at next-replacement) - (looking-at (regexp-quote next-replacement))) + (looking-at last-replacement) + (looking-at (regexp-quote last-replacement))) (match-data t (nth 2 elt)))) + (when regexp-flag + (setq next-replacement (nth 4 elt))) ;; Set replaced nil to keep in loop (when (eq def 'undo-all) (setq replaced nil diff --git a/test/lisp/replace-tests.el b/test/lisp/replace-tests.el index cd08a522e39e..2a3f207e47b0 100644 --- a/test/lisp/replace-tests.el +++ b/test/lisp/replace-tests.el @@ -463,7 +463,9 @@ Return the last evalled form in BODY." (should (replace-tests-with-undo input "theorem \\([0-9]+\\)" - "theorem \\\\ref{theo_\\1}" + '(replace-eval-replacement + replace-quote + (format "theorem \\\\ref{theo_%d}" (1+ (string-to-number (match-string 1))))) ((?\s . (1 2)) (?U . (3))) ?q (string= input (buffer-string))))) @@ -479,4 +481,18 @@ Return the last evalled form in BODY." ?q (string= expected (buffer-string)))))) +(ert-deftest query-replace-undo-bug37287 () + "Test for https://debbugs.gnu.org/37287 ." + (let ((input "foo-1\nfoo-2\nfoo-3") + (expected "foo-2\nfoo-2\nfoo-3")) + (should + (replace-tests-with-undo + input "\\([0-9]\\)" + '(replace-eval-replacement + replace-quote + (format "%d" (1+ (string-to-number (match-string 1))))) + ((?\s . (1 2 4)) (?U . (3))) + ?q + (string= expected (buffer-string)))))) + ;;; replace-tests.el ends here From bba9757a1fd7b05f7b18b0666735711d231972fa Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Tue, 17 Sep 2019 18:07:50 +0200 Subject: [PATCH 561/567] Backport: Fix an assignment to free variable warning It fixes a bug introduced by commit 'query-replace-regexp undo: Update next-replacement after undo' (30c4f35a6fc8a6507930923766c3126ac1c2063f) See https://lists.gnu.org/archive/html/emacs-devel/2019-09/msg00364.html * lisp/replace.el(perform-replace): Rename variable to next-replacement-replaced. (cherry picked from commit cbc10ec71e9f189e8d6fd5c6927aec4872e0fd96) --- lisp/replace.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/replace.el b/lisp/replace.el index dd24d8ba923b..6dba7d77a881 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -2597,7 +2597,7 @@ It must return a string." search-string (nth (if replaced 4 3) elt) last-replacement (nth (if replaced 3 4) elt) search-string-replaced search-string - last-replacement-replaced last-replacement + next-replacement-replaced last-replacement last-was-act-and-show nil) (when (and (= stack-idx stack-len) From 73e1727c405214086bb3a0647c91855e1b0853c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Sun, 22 Sep 2019 15:03:02 +0200 Subject: [PATCH 562/567] Fix linear equation system solving in Calc (bug#35374) * lisp/calc/calcalg2.el (math-try-solve-for): To solve Ax^n=0 where A is a nonzero constant and x the variable to solve for, solve x^n=0 instead of solving A=0 (which obviously fails) or something equally stupid. * test/lisp/calc/calc-tests.el (calc-test-solve-linear-system): New. --- lisp/calc/calcalg2.el | 6 ++ test/lisp/calc/calc-tests.el | 103 +++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/lisp/calc/calcalg2.el b/lisp/calc/calcalg2.el index 18243bfc749d..2a716633ae66 100644 --- a/lisp/calc/calcalg2.el +++ b/lisp/calc/calcalg2.el @@ -2417,6 +2417,12 @@ ((= (length math-t1) 2) (apply 'math-solve-linear (car math-t2) math-try-solve-sign math-t1)) + ((= (length math-t1) 1) + ;; Constant polynomial. + (if (eql (nth 2 math-t2) 1) + nil ; No possible solution. + ;; Root of the factor, if any. + (math-try-solve-for (nth 2 math-t2) 0 nil t))) (math-solve-full (math-poly-all-roots (car math-t2) math-t1)) (calc-symbolic-mode nil) diff --git a/test/lisp/calc/calc-tests.el b/test/lisp/calc/calc-tests.el index 8afec593b1eb..3f0b65aeeef7 100644 --- a/test/lisp/calc/calc-tests.el +++ b/test/lisp/calc/calc-tests.el @@ -138,6 +138,109 @@ An existing calc stack is reused, otherwise a new one is created." (nth 1 (calcFunc-cos 1))) 0 4)))))) +(ert-deftest calc-test-solve-linear-system () + "Test linear system solving (bug#35374)." + ;; x + y = 3 + ;; 2x - 3y = -4 + ;; with the unique solution x=1, y=2 + (should (equal + (calcFunc-solve + '(vec + (calcFunc-eq (+ (var x var-x) (var y var-y)) 3) + (calcFunc-eq (- (* 2 (var x var-x)) (* 3 (var y var-y))) -4)) + '(vec (var x var-x) (var y var-y))) + '(vec (calcFunc-eq (var x var-x) 1) + (calcFunc-eq (var y var-y) 2)))) + + ;; x + y = 1 + ;; x + y = 2 + ;; has no solution + (should (equal + (calcFunc-solve + '(vec + (calcFunc-eq (+ (var x var-x) (var y var-y)) 1) + (calcFunc-eq (+ (var x var-x) (var y var-y)) 2)) + '(vec (var x var-x) (var y var-y))) + '(calcFunc-solve + (vec + (calcFunc-eq (+ (var x var-x) (var y var-y)) 1) + (calcFunc-eq (+ (var x var-x) (var y var-y)) 2)) + (vec (var x var-x) (var y var-y))))) + ;; x - y = 1 + ;; x + y = 1 + ;; with the unique solution x=1, y=0 + (should (equal + (calcFunc-solve + '(vec + (calcFunc-eq (- (var x var-x) (var y var-y)) 1) + (calcFunc-eq (+ (var x var-x) (var y var-y)) 1)) + '(vec (var x var-x) (var y var-y))) + '(vec (calcFunc-eq (var x var-x) 1) + (calcFunc-eq (var y var-y) 0)))) + ;; 2x - 3y + z = 5 + ;; x + y - 2z = 0 + ;; -x + 2y + 3z = -3 + ;; with the unique solution x=1, y=-1, z=0 + (should (equal + (calcFunc-solve + '(vec + (calcFunc-eq + (+ (- (* 2 (var x var-x)) (* 3 (var y var-y))) (var z var-z)) + 5) + (calcFunc-eq + (- (+ (var x var-x) (var y var-y)) (* 2 (var z var-z))) + 0) + (calcFunc-eq + (+ (- (* 2 (var y var-y)) (var x var-x)) (* 3 (var z var-z))) + -3)) + '(vec (var x var-x) (var y var-y) (var z var-z))) + ;; The `float' forms in the result are just artefacts of Calc's + ;; current solver; it should be fixed to produce exact (integral) + ;; results in this case. + '(vec (calcFunc-eq (var x var-x) (float 1 0)) + (calcFunc-eq (var y var-y) (float -1 0)) + (calcFunc-eq (var z var-z) 0)))) + ;; x = y + 1 + ;; x = y + ;; has no solution + (should (equal + (calcFunc-solve + '(vec + (calcFunc-eq (var x var-x) (+ (var y var-y) 1)) + (calcFunc-eq (var x var-x) (var y var-y))) + '(vec (var x var-x) (var y var-y))) + '(calcFunc-solve + (vec + (calcFunc-eq (var x var-x) (+ (var y var-y) 1)) + (calcFunc-eq (var x var-x) (var y var-y))) + (vec (var x var-x) (var y var-y))))) + ;; x + y + z = 6 + ;; x + y = 3 + ;; x - y = 1 + ;; with the unique solution x=2, y=1, z=3 + (should (equal + (calcFunc-solve + '(vec + (calcFunc-eq (+ (+ (var x var-x) (var y var-y)) (var z var-z)) 6) + (calcFunc-eq (+ (var x var-x) (var y var-y)) 3) + (calcFunc-eq (- (var x var-x) (var y var-y)) 1)) + '(vec (var x var-x) (var y var-y) (var z var-z))) + '(vec + (calcFunc-eq (var x var-x) 2) + (calcFunc-eq (var y var-y) 1) + (calcFunc-eq (var z var-z) 3)))) + ;; x = 3 + ;; x + 4y^2 = 3 (ok, so this one isn't linear) + ;; with the unique (double) solution x=3, y=0 + (should (equal + (calcFunc-solve + '(vec + (calcFunc-eq (var x var-x) 3) + (calcFunc-eq (+ (var x var-x) (* 4 (^ (var y var-y) 2))) 3)) + '(vec (var x var-x) (var y var-y))) + '(vec (calcFunc-eq (var x var-x) 3) + (calcFunc-eq (var y var-y) 0))))) + (provide 'calc-tests) ;;; calc-tests.el ends here From bd0f173199c112b2b146e727f80e973e7fc12143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Wed, 10 Jul 2019 19:24:58 +0200 Subject: [PATCH 563/567] Fix trig simplification crash (bug#33052) * lisp/calc/calc-alg.el (calcFunc-sec, calcFunc-csc, calcFunc-cot): Check that `math-known-sin' and `math-known-tan' succeeded before using their value in arithmetic. * test/lisp/calc/calc-tests.el (calc-test-trig): Add regression tests. Backport from master. --- lisp/calc/calc-alg.el | 18 ++++++++++++------ test/lisp/calc/calc-tests.el | 30 ++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/lisp/calc/calc-alg.el b/lisp/calc/calc-alg.el index 8e3476d191e5..b41749ca775b 100644 --- a/lisp/calc/calc-alg.el +++ b/lisp/calc/calc-alg.el @@ -847,11 +847,13 @@ (and (eq calc-angle-mode 'rad) (let ((n (math-linear-in (nth 1 math-simplify-expr) '(var pi var-pi)))) (and n - (math-div 1 (math-known-sin (car n) (nth 1 n) 120 300))))) + (let ((s (math-known-sin (car n) (nth 1 n) 120 300))) + (and s (math-div 1 s)))))) (and (eq calc-angle-mode 'deg) (let ((n (math-integer-plus (nth 1 math-simplify-expr)))) (and n - (math-div 1 (math-known-sin (car n) (nth 1 n) '(frac 2 3) 300))))) + (let ((s (math-known-sin (car n) (nth 1 n) '(frac 2 3) 300))) + (and s (math-div 1 s)))))) (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arcsin) (math-div 1 @@ -872,11 +874,13 @@ (and (eq calc-angle-mode 'rad) (let ((n (math-linear-in (nth 1 math-simplify-expr) '(var pi var-pi)))) (and n - (math-div 1 (math-known-sin (car n) (nth 1 n) 120 0))))) + (let ((s (math-known-sin (car n) (nth 1 n) 120 0))) + (and s (math-div 1 s)))))) (and (eq calc-angle-mode 'deg) (let ((n (math-integer-plus (nth 1 math-simplify-expr)))) (and n - (math-div 1 (math-known-sin (car n) (nth 1 n) '(frac 2 3) 0))))) + (let ((s (math-known-sin (car n) (nth 1 n) '(frac 2 3) 0))) + (and s (math-div 1 s)))))) (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arcsin) (math-div 1 (nth 1 (nth 1 math-simplify-expr)))) (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arccos) @@ -977,11 +981,13 @@ (and (eq calc-angle-mode 'rad) (let ((n (math-linear-in (nth 1 math-simplify-expr) '(var pi var-pi)))) (and n - (math-div 1 (math-known-tan (car n) (nth 1 n) 120))))) + (let ((tn (math-known-tan (car n) (nth 1 n) 120))) + (and tn (math-div 1 tn)))))) (and (eq calc-angle-mode 'deg) (let ((n (math-integer-plus (nth 1 math-simplify-expr)))) (and n - (math-div 1 (math-known-tan (car n) (nth 1 n) '(frac 2 3)))))) + (let ((tn (math-known-tan (car n) (nth 1 n) '(frac 2 3)))) + (and tn (math-div 1 tn)))))) (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arcsin) (math-div (list 'calcFunc-sqrt (math-sub 1 (math-sqr (nth 1 (nth 1 math-simplify-expr))))) diff --git a/test/lisp/calc/calc-tests.el b/test/lisp/calc/calc-tests.el index 3f0b65aeeef7..1c89857a1858 100644 --- a/test/lisp/calc/calc-tests.el +++ b/test/lisp/calc/calc-tests.el @@ -138,6 +138,36 @@ An existing calc stack is reused, otherwise a new one is created." (nth 1 (calcFunc-cos 1))) 0 4)))))) +(ert-deftest calc-test-trig () + "Trigonometric simplification; bug#33052." + (let ((calc-angle-mode 'rad)) + (let ((calc-symbolic-mode t)) + (should (equal (math-simplify '(calcFunc-sin (/ (var pi var-pi) 4))) + '(/ (calcFunc-sqrt 2) 2))) + (should (equal (math-simplify '(calcFunc-cos (/ (var pi var-pi) 4))) + '(/ (calcFunc-sqrt 2) 2))) + (should (equal (math-simplify '(calcFunc-sec (/ (var pi var-pi) 4))) + '(calcFunc-sqrt 2))) + (should (equal (math-simplify '(calcFunc-csc (/ (var pi var-pi) 4))) + '(calcFunc-sqrt 2))) + (should (equal (math-simplify '(calcFunc-tan (/ (var pi var-pi) 3))) + '(calcFunc-sqrt 3))) + (should (equal (math-simplify '(calcFunc-cot (/ (var pi var-pi) 3))) + '(/ (calcFunc-sqrt 3) 3)))) + (let ((calc-symbolic-mode nil)) + (should (equal (math-simplify '(calcFunc-sin (/ (var pi var-pi) 4))) + '(calcFunc-sin (/ (var pi var-pi) 4)))) + (should (equal (math-simplify '(calcFunc-cos (/ (var pi var-pi) 4))) + '(calcFunc-cos (/ (var pi var-pi) 4)))) + (should (equal (math-simplify '(calcFunc-sec (/ (var pi var-pi) 4))) + '(calcFunc-sec (/ (var pi var-pi) 4)))) + (should (equal (math-simplify '(calcFunc-csc (/ (var pi var-pi) 4))) + '(calcFunc-csc (/ (var pi var-pi) 4)))) + (should (equal (math-simplify '(calcFunc-tan (/ (var pi var-pi) 3))) + '(calcFunc-tan (/ (var pi var-pi) 3)))) + (should (equal (math-simplify '(calcFunc-cot (/ (var pi var-pi) 3))) + '(calcFunc-cot (/ (var pi var-pi) 3))))))) + (ert-deftest calc-test-solve-linear-system () "Test linear system solving (bug#35374)." ;; x + y = 3 From 55dcd32ad2209dc34bfb6b713bf73be9bf4c4cb2 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Mon, 7 Oct 2019 18:52:33 +0800 Subject: [PATCH 564/567] Fix rcirc not to interpret nil as nickname (bug#37344) * lisp/net/rcirc.el (rcirc-send-privmsg): Type check `target'. (rcirc-cmd-me): Send CTCP only when `target' exists. --- lisp/net/rcirc.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index de524d9ef108..d95db26cae9b 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -825,6 +825,7 @@ Function is called with PROCESS, COMMAND, SENDER, ARGS and LINE.") (process-send-string process string))) (defun rcirc-send-privmsg (process target string) + (cl-check-type target string) (rcirc-send-string process (format "PRIVMSG %s :%s" target string))) (defun rcirc-send-ctcp (process target request &optional args) @@ -2337,8 +2338,8 @@ With a prefix arg, prompt for new topic." (let ((timestamp (format-time-string "%s"))) (rcirc-send-ctcp process target "PING" timestamp))) -(defun rcirc-cmd-me (args &optional process target) - (rcirc-send-ctcp process target "ACTION" args)) +(defun rcirc-cmd-me (args process target) + (when target (rcirc-send-ctcp process target "ACTION" args))) (defun rcirc-add-or-remove (set &rest elements) (dolist (elt elements) From 52e2682f015d70b0945d9037686eec5fb8761571 Mon Sep 17 00:00:00 2001 From: Andrii Kolomoiets Date: Wed, 27 Nov 2019 14:13:12 +0200 Subject: [PATCH 565/567] Call vc-setup-buffer in vc-hg-log-incoming and vc-hg-log-outgoing * lisp/vc/vc-hg.el (vc-hg-log-incoming, vc-hg-log-outgoing): Call vc-setup-buffer. --- lisp/vc/vc-hg.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index eab7e566b274..a05815288c56 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -1289,10 +1289,12 @@ REV is the revision to check out into WORKFILE." ))) (defun vc-hg-log-incoming (buffer remote-location) + (vc-setup-buffer buffer) (vc-hg-command buffer 1 nil "incoming" "-n" (unless (string= remote-location "") remote-location))) (defun vc-hg-log-outgoing (buffer remote-location) + (vc-setup-buffer buffer) (vc-hg-command buffer 1 nil "outgoing" "-n" (unless (string= remote-location "") remote-location))) From 7497ee44b471f69ce59d131a6dece261e871534f Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Wed, 27 Nov 2019 14:16:33 +0200 Subject: [PATCH 566/567] Revert "Call vc-setup-buffer in vc-hg-log-incoming and vc-hg-log-outgoing" This reverts commit 52e2682f015d70b0945d9037686eec5fb8761571. --- lisp/vc/vc-hg.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index a05815288c56..eab7e566b274 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -1289,12 +1289,10 @@ REV is the revision to check out into WORKFILE." ))) (defun vc-hg-log-incoming (buffer remote-location) - (vc-setup-buffer buffer) (vc-hg-command buffer 1 nil "incoming" "-n" (unless (string= remote-location "") remote-location))) (defun vc-hg-log-outgoing (buffer remote-location) - (vc-setup-buffer buffer) (vc-hg-command buffer 1 nil "outgoing" "-n" (unless (string= remote-location "") remote-location))) From a6632fee28d5c0befa192c92692e4204656a29a0 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 9 Mar 2021 11:22:59 -0800 Subject: [PATCH 567/567] Port alternate signal stack to upcoming glibc 2.34 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * src/sysdep.c (sigsegv_stack): Increase size to 64 KiB and align it to max_align_t. This copies from Gnulib’s c-stack.c, and works around a portability bug in draft glibc 2.34, which no longer defines SIGSTKSZ when _GNU_SOURCE is defined. (cherry picked from commit f97e07ea807cc6d38774a3888a15091b20645ac6) --- src/sysdep.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/sysdep.c b/src/sysdep.c index b2aecc0ddac5..1f7f02cb003a 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -1792,7 +1792,15 @@ handle_arith_signal (int sig) /* Alternate stack used by SIGSEGV handler below. */ -static unsigned char sigsegv_stack[SIGSTKSZ]; +/* Storage for the alternate signal stack. + 64 KiB is not too large for Emacs, and is large enough + for all known platforms. Smaller sizes may run into trouble. + For example, libsigsegv 2.6 through 2.8 have a bug where some + architectures use more than the Linux default of an 8 KiB alternate + stack when deciding if a fault was caused by stack overflow. */ +static max_align_t sigsegv_stack[(64 * 1024 + + sizeof (max_align_t) - 1) + / sizeof (max_align_t)]; /* Return true if SIGINFO indicates a stack overflow. */