commit 490f279c7e05e81bcc07e03c315aead27524f0a7 (HEAD, refs/remotes/origin/master) Author: Eli Zaretskii Date: Thu Apr 16 09:14:07 2020 +0300 File-handling cleanup in w32image.c * src/w32image.c (w32_load_image): Encode the image file name and convert it via 'map_w32_filename'. No need to do anything special when 'w32_unicode_filenames' is zero, since file names are in UTF-8 internally, and this code will never run on Windows 9X. * src/w32.h (map_w32_filename): Add prototype; removed prototypes from all *.c files. diff --git a/src/w32.c b/src/w32.c index 80178029bd..42c832a593 100644 --- a/src/w32.c +++ b/src/w32.c @@ -3441,8 +3441,6 @@ is_fat_volume (const char * name, const char ** pPath) /* Convert all slashes in a filename to backslashes, and map filename to a valid 8.3 name if necessary. The result is a pointer to a static buffer, so CAVEAT EMPTOR! */ -const char *map_w32_filename (const char *, const char **); - const char * map_w32_filename (const char * name, const char ** pPath) { diff --git a/src/w32.h b/src/w32.h index cf1dadf64c..1afb8ad087 100644 --- a/src/w32.h +++ b/src/w32.h @@ -194,6 +194,7 @@ extern void syms_of_ntproc (void); extern void syms_of_ntterm (void); extern void dostounix_filename (register char *); extern void unixtodos_filename (register char *); +extern const char *map_w32_filename (const char *, const char **); extern int filename_from_ansi (const char *, char *); extern int filename_to_ansi (const char *, char *); extern int filename_from_utf16 (const wchar_t *, char *); diff --git a/src/w32fns.c b/src/w32fns.c index 4f7cbed249..e595b0285a 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -80,7 +80,6 @@ along with GNU Emacs. If not, see . */ extern int w32_console_toggle_lock_key (int, Lisp_Object); extern void w32_menu_display_help (HWND, HMENU, UINT, UINT); extern void w32_free_menu_strings (HWND); -extern const char *map_w32_filename (const char *, const char **); #ifndef IDC_HAND #define IDC_HAND MAKEINTRESOURCE(32649) diff --git a/src/w32image.c b/src/w32image.c index fb36dc9a9f..80c3247e97 100644 --- a/src/w32image.c +++ b/src/w32image.c @@ -32,6 +32,9 @@ along with GNU Emacs. If not, see . */ #include #include "w32common.h" #include "w32term.h" +#ifdef WINDOWSNT +#include "w32.h" /* for map_w32_filename, filename_to_utf16 */ +#endif #include "frame.h" #include "coding.h" @@ -334,17 +337,11 @@ w32_load_image (struct frame *f, struct image *img, and succeeded. We have a valid token and GDI+ is active. */ if (STRINGP (spec_file)) { - if (w32_unicode_filenames) - { - wchar_t filename[MAX_PATH]; - filename_to_utf16 (SSDATA (spec_file), filename); - status = GdipCreateBitmapFromFile (filename, &pBitmap); - } - else - { - add_to_log ("GDI+ requires w32-unicode-filenames to be T"); - status = GenericError; - } + spec_file = ENCODE_FILE (spec_file); + const char *fn = map_w32_filename (SSDATA (spec_file), NULL); + wchar_t filename_w[MAX_PATH]; + filename_to_utf16 (fn, filename_w); + status = GdipCreateBitmapFromFile (filename_w, &pBitmap); } else if (STRINGP (spec_data)) { commit e16374507f8c51c61f0f1a276308144baf8d6489 Author: Eli Zaretskii Date: Wed Apr 15 23:15:03 2020 +0300 Fix retrieval of frame delay when using GDI+ * src/w32image.c (enum PropertyItem_type): New enumeration. (decode_delay): New function. (w32_frame_delay): Call 'decode_delay' to retrieve the frame delay from image data. diff --git a/src/w32image.c b/src/w32image.c index 6a3e37ce0e..fb36dc9a9f 100644 --- a/src/w32image.c +++ b/src/w32image.c @@ -200,6 +200,43 @@ w32_can_use_native_image_api (Lisp_Object type) return gdiplus_startup (); } +enum PropertyItem_type { + PI_BYTE = 1, + PI_ASCIIZ = 2, + PI_USHORT = 3, + PI_ULONG = 4, + PI_ULONG_PAIR = 5, + PI_BYTE_ANY = 6, + PI_LONG = 7, + PI_LONG_PAIR = 10 +}; + +static unsigned long +decode_delay (PropertyItem *propertyItem, int frame) +{ + enum PropertyItem_type type = propertyItem[0].type; + unsigned long delay; + + switch (type) + { + case PI_BYTE: + case PI_BYTE_ANY: + delay = ((unsigned char *)propertyItem[0].value)[frame]; + break; + case PI_USHORT: + delay = ((unsigned short *)propertyItem[0].value)[frame]; + break; + case PI_ULONG: + case PI_LONG: /* delay should always be positive */ + delay = ((unsigned long *)propertyItem[0].value)[frame]; + break; + default: + emacs_abort (); + } + + return delay; +} + static double w32_frame_delay (GpBitmap *pBitmap, int frame) { @@ -217,13 +254,14 @@ w32_frame_delay (GpBitmap *pBitmap, int frame) { /* Get the property item. */ GdipGetPropertyItem (pBitmap, PropertyTagFrameDelay, size, propertyItem); - delay = propertyItem[frame].length / 100.0; - if (delay == 0) + delay = decode_delay (propertyItem, frame); + if (delay <= 0) { /* In GIF files, unfortunately, delay is only specified for the first frame. */ - delay = propertyItem[0].length / 100.0; + delay = decode_delay (propertyItem, 0); } + delay /= 100.0; free (propertyItem); } return delay; commit 97e48510ad4fec9ca5f576a750018a231523f7a6 Merge: afa542c914 a5f7c26907 Author: Glenn Morris Date: Wed Apr 15 07:50:15 2020 -0700 Merge from origin/emacs-27 a5f7c26907 (origin/emacs-27) * admin/authors.el: Add an author alias. d87a4d1f4e Limit RLIMIT_NOFILE to FD_SETSIZE on macOS e5ca8e5e73 Fix Elisp manual entry on 'set-window-configuration' 485f24223f ; Update ChangeLog.3 8f200254fb ; Update etc/AUTHORS c7adc851ad * admin/authors.el: Add missing author aliases. 4acdd7fe58 Fix edge case errors in filename-matching regexps 5f36e21fe5 Clarify the doc string of 'yank' 13301d4266 New function erc-track-switch-buffer-other-window 38f7538d8f New function erc-switch-to-buffer-other-window # Conflicts: # etc/NEWS commit afa542c914379538f986f1428f176ffe42f62609 Author: Eli Zaretskii Date: Wed Apr 15 16:54:38 2020 +0300 Fix small glitches in documenting the native image API feature * etc/NEWS: Fix wording of the entry for native image API support. Reported by Juanma Barranquero . * configure.ac (native-image-api): Fix the "--help" description. diff --git a/configure.ac b/configure.ac index b0a2cc466b..8cd754bd56 100644 --- a/configure.ac +++ b/configure.ac @@ -433,7 +433,7 @@ OPTION_DEFAULT_ON([libsystemd],[don't compile with libsystemd support]) OPTION_DEFAULT_ON([cairo],[don't compile with Cairo drawing]) OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support]) OPTION_DEFAULT_OFF([imagemagick],[compile with ImageMagick image support]) -OPTION_DEFAULT_ON([native-image-api], [use native image APIs (GDI+ on Windows)]) +OPTION_DEFAULT_ON([native-image-api], [don't use native image APIs (GDI+ on Windows)]) OPTION_DEFAULT_ON([json], [don't compile with native JSON support]) OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts]) diff --git a/etc/NEWS b/etc/NEWS index 1bfaf655b1..396c757e70 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -390,8 +390,7 @@ current IME activation status. ** On MS-Windows, Emacs can now use the native image API to display images. Emacs can now use the MS-Windows GDI+ library to load and display images in JPEG, PNG, GIF and TIFF formats. This support is enabled -with --with-native-image-api, which automatically disables the use of -optional third party libraries for those formats. +unless Emacs was configured --without-native-image-api. This feature is experimental, and needs to be turned on to be used. To turn this on, set the variable 'w32-use-native-image-API' to a commit bedb3cb66541fd4dd35cf15261c6d99f132e7d2c Author: Eli Zaretskii Date: Wed Apr 15 14:28:21 2020 +0300 Avoid infloop in redisplay when wrap-prefix is too wide * src/xdisp.c (move_it_to): Avoid infloop due to wrap-prefix that is wide enough to leave no space to display even the first character of the continuation line. (Bug#40632) diff --git a/src/xdisp.c b/src/xdisp.c index 193cc372b0..cce434e666 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -9662,9 +9662,13 @@ move_it_to (struct it *it, ptrdiff_t to_charpos, int to_x, int to_y, int to_vpos int line_height, line_start_x = 0, reached = 0; int max_current_x = 0; void *backup_data = NULL; + ptrdiff_t orig_charpos = -1; + enum it_method orig_method = NUM_IT_METHODS; for (;;) { + orig_charpos = IT_CHARPOS (*it); + orig_method = it->method; if (op & MOVE_TO_VPOS) { /* If no TO_CHARPOS and no TO_X specified, stop at the @@ -9898,7 +9902,17 @@ move_it_to (struct it *it, ptrdiff_t to_charpos, int to_x, int to_y, int to_vpos } } else - it->continuation_lines_width += it->current_x; + { + /* Make sure we do advance, otherwise we might infloop. + This could happen when the first display element is + wider than the window, or if we have a wrap-prefix + that doesn't leave enough space after it to display + even a single character. */ + if (IT_CHARPOS (*it) == orig_charpos + && it->method == orig_method) + set_iterator_to_next (it, false); + it->continuation_lines_width += it->current_x; + } break; default: commit a5f7c269075180e4531f0a784201a09b49731a27 Author: Nicolas Petton Date: Wed Apr 15 13:20:48 2020 +0200 * admin/authors.el: Add an author alias. diff --git a/admin/authors.el b/admin/authors.el index d046eb59eb..fd17a3394d 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -211,6 +211,7 @@ files.") ("Nitish Chinta" "nitishch") ("Carlos Pita" "memeplex") ("Vinicius Jose Latorre" "viniciusjl") + ("Gaby Launay" "galaunay") ) "Alist of author aliases. commit d87a4d1f4e1a84b2a527ebe5a04516f47d4717ea Author: YAMAMOTO Mitsuharu Date: Wed Apr 15 10:04:21 2020 +0200 Limit RLIMIT_NOFILE to FD_SETSIZE on macOS * src/nsterm.m ([EmacsApp applicationDidFinishLaunching:]): Call CoreFoundation functions that increase RLIMIT_NOFILE behind our back during startup, and then set RLIMIT_NOFILE back to FD_SETSIZE to avoid crashes in setup_process_coding_system (Bug#39164). diff --git a/src/nsterm.m b/src/nsterm.m index e92e3d5a6f..ac467840a2 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -5812,6 +5812,21 @@ - (void)applicationDidFinishLaunching: (NSNotification *)notification #endif #ifdef NS_IMPL_COCOA + /* Some functions/methods in CoreFoundation/Foundation increase the + maximum number of open files for the process in their first call. + We make dummy calls to them and then reduce the resource limit + here, since pselect cannot handle file descriptors that are + greater than or equal to FD_SETSIZE. */ + CFSocketGetTypeID (); + CFFileDescriptorGetTypeID (); + [[NSFileHandle alloc] init]; + struct rlimit rlim; + if (getrlimit (RLIMIT_NOFILE, &rlim) == 0 + && rlim.rlim_cur > FD_SETSIZE) + { + rlim.rlim_cur = FD_SETSIZE; + setrlimit (RLIMIT_NOFILE, &rlim); + } if ([NSApp activationPolicy] == NSApplicationActivationPolicyProhibited) { /* Set the app's activation policy to regular when we run outside of a bundle. This is already done for us by Info.plist when we commit e5ca8e5e73acbe9147203d1365365626fc35441e Author: Martin Rudalics Date: Wed Apr 15 10:18:15 2020 +0200 Fix Elisp manual entry on 'set-window-configuration' * doc/lispref/windows.texi (Window Configurations): Fix description of 'set-window-configuration'. diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index c9301c9d18..a19f123c65 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -5861,25 +5861,26 @@ which window parameters (if any) are saved by this function. @defun set-window-configuration configuration This function restores the configuration of windows and buffers as -specified by @var{configuration}, for the frame that @var{configuration} -was created for. - -The argument @var{configuration} must be a value that was previously -returned by @code{current-window-configuration}. The configuration is -restored in the frame from which @var{configuration} was made, whether -that frame is selected or not. In some rare cases this may trigger -execution of the @code{window-size-change-functions} (@pxref{Window -Hooks}) even if the size of windows did not change at all. The -@code{window-configuration-change-hook} functions will be called if and -only if at least one window was added to or deleted from the frame. - -If the frame from which @var{configuration} was saved is dead, all this -function does is restore the three variables @code{window-min-height}, -@code{window-min-width} and @code{minibuffer-scroll-window}. In this -case, the function returns @code{nil}. Otherwise, it returns @code{t}. - -Here is a way of using this function to get the same effect -as @code{save-window-excursion}: +specified by @var{configuration}, for the frame that +@var{configuration} was created for, regardless of whether that frame +is selected or not. The argument @var{configuration} must be a value +that was previously returned by @code{current-window-configuration} +for that frame. + +If the frame from which @var{configuration} was saved is dead, all +this function does is to restore the value of the variable +@code{minibuffer-scroll-window} and to adjust the value returned by +@code{minibuffer-selected-window}. In this case, the function returns +@code{nil}. Otherwise, it returns @code{t}. + +If the buffer of a window of @var{configuration} has been killed since +@var{configuration} was made, that window is, as a rule, removed from +the restored configuration. However, if that window is the last +window remaining in the restored configuration, another live buffer is +shown in it. + +Here is a way of using this function to get the same effect as +@code{save-window-excursion}: @example @group commit 485f24223fdca91d439b7beaaac33f66cb3bc2af Author: Nicolas Petton Date: Tue Apr 14 18:34:30 2020 +0200 ; Update ChangeLog.3 diff --git a/ChangeLog.3 b/ChangeLog.3 index fc41c1f7dc..c5bc7b3120 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,3 +1,1091 @@ +2020-04-14 Mattias Engdegård + + Fix edge case errors in filename-matching regexps + + These changes fix actual or latent bugs in regexps that match + file names, such as PATTERN arguments to 'directory-files'. See + https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00265.html + + * admin/authors.el (authors-obsolete-files-regexps) + (authors-renamed-files-regexps): + * lisp/auth-source-pass.el (auth-source-pass-entries): + * lisp/calendar/todo-mode.el (todo-show, todo-find-filtered-items-file) + (todo-filter-items, todo-reset-nondiary-marker, todo-reset-done-string) + (todo-reset-comment-string, todo-reset-highlight-item): + * lisp/cedet/semantic/db-ebrowse.el (semanticdb-load-ebrowse-caches): + * lisp/cedet/semantic/texi.el (semantic-texi-associated-files): + * lisp/cedet/srecode/map.el (srecode-map-update-map): + * lisp/dired.el (dired-re-no-dot): + * lisp/emacs-lisp/autoload.el (update-directory-autoloads): + * lisp/emacs-lisp/shadow.el (load-path-shadows-find): + * lisp/files.el (auto-mode-alist, directory-files-no-dot-files-regexp): + * lisp/finder.el (finder-compile-keywords): + * lisp/generic-x.el (inetd-conf-generic-mode, named-boot-generic-mode) + (resolve-conf-generic-mode, etc-modules-conf-generic-mode): + * lisp/gnus/gnus-agent.el (gnus-agent-read-agentview) + (gnus-agent-regenerate-group, gnus-agent-update-files-total-fetched-for): + * lisp/gnus/gnus-cache.el (gnus-cache-articles-in-group): + * lisp/gnus/gnus-score.el (gnus-score-search-global-directories): + * lisp/gnus/gnus-util.el (gnus-delete-directory): + * lisp/gnus/gnus-uu.el (gnus-uu-dir-files): + * lisp/gnus/nndraft.el (nndraft-request-group): + * lisp/gnus/nnmh.el (nnmh-request-group, nnmh-request-create-group): + (nnmh-request-delete-group, nnmh-active-number, nnmh-update-gnus-unreads): + * lisp/gnus/nnspool.el (nnspool-request-group): + * lisp/gnus/spam-stat.el (spam-stat-process-directory) + (spam-stat-test-directory): + * lisp/help-fns.el (help-fns--first-release): + * lisp/help.el (view-emacs-news): + * lisp/international/quail.el (quail-update-leim-list-file): + * lisp/international/titdic-cnv.el (batch-titdic-convert): + * lisp/mail/mspools.el (mspools-set-vm-spool-files) + (mspools-get-spool-files): + * lisp/mail/rmail.el (rmail-secondary-file-regexp) + (rmail-speedbar-match-folder-regexp): + * lisp/net/ange-ftp.el (ange-ftp-delete-directory): + * lisp/net/tramp.el (tramp-use-absolute-autoload-file-names): + * lisp/obsolete/gulp.el (gulp-send-requests): + * lisp/obsolete/vc-arch.el (vc-arch-trim-revlib): + * lisp/org/ob-core.el (org-babel-remove-temporary-directory): + * lisp/progmodes/ebnf2ps.el (ebnf-file-suffix-regexp, ebnf-style-database): + * lisp/progmodes/executable.el (executable-command-find-posix-p): + * lisp/startup.el (command-line): + * lisp/textmodes/refer.el (refer-get-bib-files): + * lisp/url/url-about.el (url-probe-protocols): + * lisp/vc/vc-rcs.el (vc-rcs-register, vc-rcs-unregister): + * test/lisp/net/tramp-archive-tests.el + (tramp-archive-test19-directory-files-and-attributes): + * test/lisp/net/tramp-tests.el (tramp-test19-directory-files-and-attributes): + Replace ^ and $ with \` and \', respectively. + Use (rx (or (not ".") "...")), translated into "[^.]\\|\\.\\.\\.", + to match anything but "." and "..", instead of several incorrect + regexps. + +2020-04-14 Eli Zaretskii + + Clarify the doc string of 'yank' + + * lisp/simple.el (yank): Mention 'current-kill' in the doc string, + so that people could find all the gory details of what is "the most + recent kill" for this purpose. (Bug#40375) + +2020-04-14 Amin Bandali + + New function erc-track-switch-buffer-other-window + + * lisp/erc/erc-track.el (erc-track-switch-buffer): Factor out the + implementation from here ... + (erc-track--switch-buffer): ... to here. + (erc-track-switch-buffer-other-window): New function, like + `erc-track-switch-buffer', but uses `switch-to-buffer-other-window' + instead, to open the buffer in another window. + +2020-04-14 Amin Bandali + + New function erc-switch-to-buffer-other-window + + * lisp/erc/erc.el (erc-switch-to-buffer): Factor out the buffer choice + implementation from here ... + (erc--switch-to-buffer): ... to here. + (erc-switch-to-buffer-other-window): New function, like + `erc-switch-to-buffer', but uses `switch-to-buffer-other-window' + instead, to open the buffer in another window. + +2020-04-13 Štěpán Němec + + Clarify documentation on inhibit-modification-hooks intended usage + + Cf. bug#40332 and the discussion at + https://lists.gnu.org/archive/html/emacs-devel/2020-03/msg00921.html + + * doc/lispref/text.texi (Change Hooks): + * src/insdel.c (syms_of_insdel): Clarify the intended usage of + 'inhibit-modification-hooks'. + +2020-04-13 Štěpán Němec + + gnus-shorten-url: Improve and avoid args-out-of-range error + + 'gnus-shorten-url' (used by 'gnus-summary-browse-url') ignored + fragment identifiers and didn't check substring bounds, in some cases + leading to runtime errors, e.g.: + + (gnus-shorten-url "https://some.url.with/path/and#also_a_long_target" 40) + ;; => Lisp error: (args-out-of-range "/path/and" -18 nil) + + This commit makes it account for #fragments and fixes faulty string + computation. (bug#39980) + + Do not merge to master, where the helper is put to subr-x.el. + + * lisp/gnus/gnus-sum.el (gnus--string-truncate-left): New helper + function (copied from 'ediff-truncate-string-left'). + (gnus-shorten-url): Use it and don't drop #fragments. + +2020-04-13 Eli Zaretskii + + Minor wording change in Introduction to Programming in Emacs Lisp + + * doc/lispintro/emacs-lisp-intro.texi (Prevent confusion): Mention + that dynamic scoping is only the default in Emacs Lisp, not the + only scoping rule. (Bug#40594) + +2020-04-13 Eli Zaretskii + + Fix 'flymake-show-diagnostics-buffer' when line numbers are displayed + + * lisp/progmodes/flymake.el (flymake--diagnostics-buffer-entries): + Do nothing if 'flymake--diagnostics-buffer-source' is not a + buffer. (Bug#40529) + +2020-04-12 Eli Zaretskii + + Fix last changes describing mail commands + + * doc/emacs/sending.texi (Sending Mail): Fix the description of + the behavior of 'C-x m' without prefix argument. (Bug#40561) + +2020-04-12 João Távora + + Do setup Flymake in file-less Elisp buffers + + (Bug#40573) + + * lisp/progmodes/elisp-mode.el (emacs-lisp-mode): Change + condition for setting flymake-diagnostic-functions. + +2020-04-12 Philipp Stephani + + Fix error message for ‘cl-struct-unknown-slot’ (bug#39995) + + * lisp/emacs-lisp/cl-macs.el (cl-struct-unknown-slot): Remove spurious + format specifiers. + +2020-04-12 Eli Zaretskii + + Fix and improve documentation of mail-related features + + * lisp/simple.el (compose-mail): Clarify the effect of the + CONTINUE argument. + * lisp/mail/sendmail.el (mail-from-style): Update the RFC value in + the obsolescence warning text. + + * doc/emacs/sending.texi (Sending Mail): Fix the description of + the behavior of 'C-x m' wrt prefix argument. + (Mail Headers): Remove the description of 'mail-from-style'. + + * etc/NEWS: Mention that 'mail-from-style' is obsolete. + + (Bug#40561) + +2020-04-12 Martin Rudalics + + Fix build failure with Fx_gtk_debug + + * src/xfns.c (Fx_gtk_debug, Sx_gtk_debug): Define only for GTK + versions >= 3.14.0 so gtk_window_set_interactive_debugging is + defined. Reported by Andreas Schwab . + +2020-04-11 Alan Mackenzie + + Mention jit-lock deferred as an alternative to fast-but-imprecise-scrolling + + * doc/emacs/display.texi (Scrolling): Add a paragraph on using jit-lock + deferred fontification as a way of obviating Emacs hanging after + auto-repeated scrolling. + +2020-04-10 Stefan Monnier + + * doc/lispref/keymaps.texi (Extended Menu Items): Tweak :key-sequence + + Don't make it sound like `:key-sequence nil` is any different than the + absence of `:key-sequence`. And the performance advantage of + `:key-sequence` disappeared long ago. + +2020-04-10 Eli Zaretskii + + Fix redisplay when scrolling under redisplay-dont-pause + + * src/dispnew.c (update_window): Reset the window's + 'must_be_updated_p' flag if the window's update was completed + without interruption. This fixes redisplay glitches when + 'redisplay-dont-pause' is nil, at least on MS-Windows, because + 'expose_window' doesn't redraw the exposed rectangle when the + window's 'must_be_updated_p' flag is set. + +2020-04-09 Eli Zaretskii + + Fix face extension in pulse.el + + * lisp/cedet/pulse.el (pulse-reset-face): Propagate the :extend + attribute of FACE to the face used for displaying the pulse. + Reported by Adam Porter . + +2020-04-09 Michael Albinus + + * doc/misc/tramp.texi (Bug Reports): Avoid line breaks in traces. + +2020-04-09 Eli Zaretskii + + Avoid assertion violation in intervals.c + + * src/intervals.c (delete_interval): Allow negative values of + LENGTH (i). This happens when delete_interval is called from + set_intervals_multibyte_1, because the caller zeroes out the + total_length field of the interval to be deleted. See + https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00131.html + for more details. See also a related old discussion at + https://lists.gnu.org/archive/html/emacs-devel/2012-07/msg00399.html. + +2020-04-08 Eli Zaretskii + + Improve documentation of 'jit-lock-contextually' + + * lisp/jit-lock.el (jit-lock-contextually): Clarify the jit-lock + operation when 'jit-lock-contextually' is non-nil and non-t. + + * doc/lispref/modes.texi (Syntactic Font Lock) + (Other Font Lock Variables): Document the relation between + 'jit-lock-register', 'font-lock-keywords-only', and syntactic + refontification. + +2020-04-08 Dmitry Gutov + + Speed up 'resize-mode' child frames a little + + * src/gtkutil.c (xg_frame_set_char_size): Skip resizing if the + target dimensions are unchanged for child frames with + 'resize-mode' resize policy as well. + +2020-04-06 Martin Rudalics + + Fix some problems with moving and resizing child frames + + (1) Provide new option 'x-gtk-resize-child-frames' which allows + to either hide a child frame during resizing or asks GTK to + resize it "immediately". This is needed because desktops like + GNOME shell otherwise won't allow resizing child frames at all. + (2) Do not try to synchronize the position of a child frame + after moving it. Needed because the present implementation + introduces a 0.5 secs delay which makes dragging child frames + virtually impossible with Lucid and Motif toolkits on desktops + like GNOME shell that use invisible outer frame borders. + + For further information see the thread starting with + https://lists.gnu.org/archive/html/emacs-devel/2020-01/msg00343.html + + * src/frame.c (syms_of_frame): New symbol Qxg_frame_set_char_size_4. + * src/gtkutil.c (xg_frame_set_char_size): Hide child frame + during resizing when 'x-gtk-resize-child-frames' equals 'hide'. + * src/xfns.c (x_set_parent_frame, Fx_create_frame): Set + gtk_container_resize_mode to GTK_RESIZE_IMMEDIATE for child + frames when'x-gtk-resize-child-frames' equals 'resize-mode'. + (Fx_gtk_debug): New function to toggle interactive GTK debugging + from within Emacs. + (syms_of_xfns): New symbols Qhide and Qresize_mode. + (x-gtk-resize-child-frames): New option that allows to resize + child frames on desktops like GNOME shell (with the mutter WM) + that otherwise refuse to resize them. + * src/xterm.c (x_set_offset): Don't x_sync_with_move for child + frames, it makes moving child frames virtually impossible with + the Lucid and Motif toolkits. + +2020-04-05 Philipp Stephani + + Fix syntax error in man page. + + * doc/man/emacs.1.in: Fix syntax of --script argument. The Info + manual states that --script has to be followed by a space, and the + syntax with the equals sign doesn't actually work. + +2020-04-05 Noam Postavsky + + Handle filling of indented ChangeLog function entries + + * lisp/vc/log-edit.el (log-edit-fill-entry): Relax regexp a bit to + recognize function entries with leading blanks. + * test/lisp/vc/log-edit-tests.el: New test. + +2020-04-05 Noam Postavsky + + Fix void-variable n-reb in re-builder (Bug#40409) + + * lisp/emacs-lisp/re-builder.el (reb-while): Take the current value of + the counter instead of its name. + (reb-mark-non-matching-parenthesis): Bind n-reb to 0 at the start and + don't wrongly treat it as dynamicly bound. + +2020-04-03 Philipp Stephani + + Fix small bug in copy_string_contents. + + * src/emacs-module.c (module_copy_string_contents): Fix incorrect + variable use. In this branch 'lisp_str_utf8' is always nil, so it + makes little sense to add it as error data. + +2020-04-03 Eli Zaretskii + + Fix invocations of gpg from Gnus + + * lisp/epg-config.el (epg-config--make-gpg-configuration): Bind + coding-system-for-read/write to 'undecided', to countermand + possible values of 'no-conversion' or somesuch by the callers. + (Bug#40248) + +2020-04-03 Martin Rudalics + + Don't draw GTK's internal border and tab bar on top of each other + + * src/xterm.c (x_clear_under_internal_border): For GTK builds + have 'margin' count in the height of the tab bar to avoid that + tab bar and internal border are drawn on top of each other. + +2020-04-03 Amin Bandali + + Tweak htmlfontify's generated output + + * lisp/htmlfontify.el (hfy-default-header): declare the character + encoding for the generated HTML file. This helps browsers display + UTF-8 characters like the copyright symbol correctly. + (hfy-sprintf-stylesheet): apply the default style to all of the text + consistently, so that unstyled bits (which are not wrapped in span + tags and are directly part of the surrounding pre tag's "innerHTML") + have a look consistent with the rest of the document. + +2020-03-30 Dmitry Gutov + + Handle project--files-in-directory finding no files better + + * lisp/progmodes/project.el (project--find-regexp-in-files): + Signal user-error when passed an empty list of files. + + * lisp/progmodes/xref.el (xref-matches-in-files): + Make sure FILES is not empty. + +2020-03-30 Alan Mackenzie + + Let imenu to work on the menu bar when its list is a single non-nested member. + + * lisp/imenu.el (imenu-update-menubar): No longer accept a list of length 1 as + being sufficient evidence for a nested list structure. Instead, additionally + check whether or not certain elements are atoms. + +2020-03-30 Juri Linkov + + * lisp/image/image-converter.el: Fix customization of image-converter. + + * lisp/image/image-converter.el (image-convert-p): Update + image-converter-regexp when image-converter was customized (bug#39994). + +2020-03-29 Andreas Schwab + + Fix url-cookie.el for lexical binding + + * lisp/url/url-cookie.el (url-cookie-handle-set-cookie): Use setq + instead of set to modify lexical binding. + +2020-03-29 Noam Postavsky + + Don't suggest setting face-remapping-alist to a literal (Bug#39812) + + * src/xfaces.c (syms_of_xfaces) : Use copy-tree + in the costring example code, and note why. + +2020-03-27 Mattias Engdegård + + Calc: don't treat nil as an integer (bug#40155) + + Make Math-num-integerp return false for nil, following Math-integerp + which was changed in the bignum reform. This fixes a crash in + calc-graph-fast. + + Reported by Narendra Joshi. + + * lisp/calc/calc-macs.el (Math-num-integerp): Not true for nil. + * test/lisp/calc/calc-tests.el (calc-Math-integerp): New tests. + +2020-03-25 Eli Zaretskii + + * lisp/files.el (directory-files-recursively): Doc fix. (Bug#40202) + +2020-03-25 Michael Albinus + + Document how to disable Tramp file archives + + * doc/misc/tramp.texi (Archive file names): Explain how to disable + file archives. + +2020-03-24 Lars Ingebrigtsen + + Don't add repeated xlmns:xlink declarations in svg-create + + * lisp/svg.el (svg-create): Fix previous unconditional addition of + the xmlns:xlink declaration -- callers may already add one, and + having it twice is something most svg libraries doesn't like. + +2020-03-23 Mattias Engdegård + + Calc: Declare dynamic variable bound in lexbind code (bug#40185) + + * lisp/calc/calc.el: Declare math-comp-selected as dynamic. + +2020-03-23 Eli Zaretskii + + Don't build the Gnulib 'utimens' module on MinGW + + * nt/gnulib-cfg.mk (OMIT_GNULIB_MODULE_utimens): Omit the + 'utimens' module in the MinGW build: 'utimens' is not used by + Emacs, and 'fdutimens' is implemented in w32.c. + +2020-03-23 Phillip Lord + + Add Harfbuzz dependency + + * admin/nt/dist-build/build-dep-zips.py: Add harfbuzz as a dependency. + +2020-03-23 Noam Postavsky + + Don't signal during backtrace unrewind (Bug#40088) + + backtrace_eval_unrewind is used to temporarily reverse + let-bindings (it's called with a positive argument to reverse + bindings, and then a negative argument to re-apply them) by + backtrace--locals and backtrace-eval. For the SPECPDL_LET_DEFAULT and + SPECPDL_LET_LOCAL cases (which occur for let-bindings on buffer-local + variables), the code calls Fdefault_value and Fbuffer_local_value on + the symbol. + + For symbols which are unbound at top-level, the first (with positive + argument) call to backtrace_eval_unrewind will set the symbol's value + to unbound (putting the current value in the specpdl's "old value" + slot). On the second (with negative argument) call, + backtrace_eval_unrewind attempts to retrieve the symbol's value with + Fdefault_value or Fbuffer_local_value, but that raises a void-variable + signal. This interrupts the restoration of the let-bindings, so any + other variables more recent on the stack will now have the wrong + value. + + * src/data.c (default_value): Make non-static. + * src/lisp.h: Declare it. + * src/eval.c (backtrace_eval_unrewind): Replace the calls to + Fdefault_value and Fbuffer_local_value with default_value and + buffer_local_value, respectively. The latter do exactly the same as + the former, except if the symbol's value is Qunbound they just return + it instead of signaling void-variable. + +2020-03-23 Noam Postavsky + + Fix a couple of problems in changelog generating functions + + * lisp/vc/diff-mode.el (diff-add-log-current-defuns): If there is a + scan-error when calling end-of-defun, go to end of hunk. This can + easily happen since we are calling end-of-defun on a partial code + fragment from a diff. + * lisp/vc/log-edit.el (log-edit-generate-changelog-from-diff): Bind + display-buffer-overriding-action around the log-edit-show-diff call + only. Otherwise, it can affect, for example, debugger windows + triggered by the diff-add-log-current-defuns call. + +2020-03-23 Noam Postavsky + + Fix cl-concatenate (Bug#40180) + + * lisp/emacs-lisp/cl-extra.el (cl-concatenate): Use apply, to avoid + adding extra nesting of args. + * test/lisp/emacs-lisp/cl-extra-tests.el (cl-concatenate): New test. + +2020-03-21 Eli Zaretskii + + Improve documentation of project.el commands + + * lisp/progmodes/project.el (project-find-regexp): Require 'grep' + to be able to call 'grep-read-files'. + (project-search, project-query-replace-regexp): Doc fixes. + + * doc/emacs/maintaining.texi (Projects): New section. + * doc/emacs/emacs.texi (Top): Add "Projects" to the detailed menu. + +2020-03-20 Zhu Zihao (tiny change) + + Make svg images with links valid + + * lisp/svg.el (svg-create): Specify xlink namespace for svg images + (bug#40010). + +2020-03-20 Juri Linkov + + * lisp/tab-line.el (tab-line-new-button-show): New defcustom. + + * lisp/tab-line.el (tab-line-format-template): Use tab-line-new-button-show. + (tab-line-new-tab-choice): Remove choice 'nil' with "No button". + (tab-line-separator): Add docstring. + +2020-03-19 Lars Ingebrigtsen + + Don't have exif bugging out on short strings + + * lisp/image/exif.el (exif--direct-ascii-value): New function + (bug#40127). + (exif--parse-directory): Use it to get the correct values for + in-directory (i.e., shorter than 4 octets) strings. + +2020-03-19 Robert Pluim + + Use correct registry name for windows-1251 charset + + * src/ftfont.c (fc_charset_table): The registry to use to lookup + windows-1251 charset is microsoft-cp1251, not windows-1251. + (Bug#40097) + +2020-03-19 Amin Bandali + + ERC: Update maintainer address + +2020-03-18 Philipp Stephani + + Remove raw carriage return characters from test file. + + This protects against tools that mangle newline characters in text + files. + + * test/lisp/electric-tests.el (electric-pair-mode-newline-between-parens) + (electric-layout-mode-newline-between-parens-without-e-p-m) + (electric-layout-mode-newline-between-parens-without-e-p-m-2): Escape + carriage return characters. + +2020-03-17 Robert Pluim + + Recalculate default font when switching font backend + + This is an updated version of the patch by Dmitry Antipov + in + . + + Fixes Bug#23386 + + * src/dispextern.h (struct redisplay_interface): New member + default_font_parameter. + * src/xterm.h: Add prototype for x_default_font_parameter. + * src/xterm.c (x_redisplay_interface): Initialize + default_font_parameter member. + * src/xfns.c (x_default_font_parameter): Make non-static. + * src/w32term.h: Add prototype for w32_default_font_parameter + * src/w32fns.c (w32_default_font_parameter): Make non-static. + * src/w32term.c (w32_redisplay_interface): Initialize + default_font_parameter member. + * src/nsterm.m (ns_redisplay_interface): Add dummy + ns_default_font_parameter (there is currently only one possible font + backend on macOS). Initialize default_font_parameter member. + * src/frame.c (gui_set_font_backend): Recalculate default font using + RIF default_font_parameter to avoid crash when changing font backend. + +2020-03-17 Juri Linkov + + * lisp/tab-line.el: Fix tab-line-format and tab-line-format-template. + + * lisp/tab-line.el (tab-line-format): Use buffer-name in the cache key + instead of just buffer object to invalidate the cache on buffer renaming. + (tab-line-format-template): Always leave the separator after the last tab + like tab-bar.el already does. + +2020-03-16 Stefan Monnier + + * etc/NEWS: Make the `--eval` example slightly more precise + +2020-03-15 Juri Linkov + + * lisp/image/image-converter.el: Support more ImageMagick versions (bug#39994) + + * lisp/image/image-converter.el (image-converter--probe): Match + a possible additional second column in some ImageMagick versions + of "convert -list format". + +2020-03-14 Eli Zaretskii + + Support Unicode 13.0 + + * admin/unidata/BidiBrackets.txt: + * admin/unidata/BidiMirroring.txt: + * admin/unidata/Blocks.txt: + * admin/unidata/NormalizationTest.txt: + * admin/unidata/SpecialCasing.txt: + * admin/unidata/UnicodeData.txt: + * admin/unidata/copyright.html: + * test/manual/BidiCharacterTest.txt: Updated files imported from + Unicode v13.0. + + * admin/unidata/blocks.awk: Add "Symbols for Legacy Computing" to + known aliases. + + * lisp/international/fontset.el (script-representative-chars) + (setup-default-fontset): Add new scripts. + * lisp/international/characters.el: Set syntax for Symbols for + Legacy Computing characters. Update setting of char-width-table. + * lisp/international/mule-cmds.el (ucs-names): Update ranges of + characters for which we want names in 'ucs-names'. + + * test/lisp/international/ucs-normalize-tests.el + (ucs-normalize-tests--failing-lines-part1) + (ucs-normalize-tests--failing-lines-part2): Update according to + 'ucs-normalize-check-failing-lines'. + +2020-03-14 Lars Ingebrigtsen + + Fix regression in wisent-total-conflicts + + * lisp/cedet/semantic/wisent/comp.el (wisent-total-conflicts): + There may not be a current source file. In that case, don't try + to keep track of the number of expected conflicts (bug#39911). + +2020-03-14 Alan Mackenzie + + * lisp/progmodes/cc-defs.el (c-version): update to 5.34.1 for Emacs 27.1 + + Don't merge to master. + +2020-03-14 Philipp Stephani + + * lisp/textmodes/fill.el (fill-nobreak-predicate): Fix documentation. + +2020-03-14 Stefan Kangas + + Improve Package Menu hiding docstrings + + * lisp/emacs-lisp/package.el (package-menu-toggle-hiding): Add + reference to 'package-menu-hidden-regexps'. + * lisp/emacs-lisp/package.el (package-menu-hide-package): Improve + docstring to say that hiding is saved in a user option. Fix a + typo. (Bug#39436) + +2020-03-14 Eli Zaretskii + + Fix display of Big5 characters when using Fontconfig + + * src/ftfont.c (fc_charset_table): Fix the value of the big-5 + representative codepoint. Reported by Brian Schack + . (Bug#40057) + + * src/macfont.m (cf_charset_table): Adjust the comment. + +2020-03-13 Eli Zaretskii + + Fix a recent documentation change + + * doc/emacs/frames.texi (Mouse Commands): More detailed + description of how tilting the mouse-wheel works. + + * lisp/mwheel.el (mouse-wheel-tilt-scroll) + (mouse-wheel-flip-direction): Fix the wording of doc strings. + (Bug#39979) + +2020-03-13 Eli Zaretskii + + Fix last change + + * lisp/tab-bar.el (tab-bar-new-button-show): Fix wording of the + doc string. + +2020-03-13 Juri Linkov + + * lisp/tab-bar.el: Last-minute changes. + + * lisp/tab-bar.el (tab-bar-mode): Check for non-nil + tab-bar-new-button and tab-bar-close-button. + (tab-bar-new-button-show): New defcustom. + (tab-bar-make-keymap-1): Check for tab-bar-new-button-show. + (tab-bar-separator): Add docstring. + +2020-03-12 Stefan Monnier + + * lisp/subr.el (cancel-change-group): Fix bug#39680 + + Don't re-use an existing `pending-undo-list` even if (eq last-command 'undo) + since there might have been changes to the buffer since that `undo` command + and the `pending-undo-list` can hence be invalid for the current + buffer contents. + +2020-03-12 İ. Göktuğ Kayaalp + + Improve docs for horizontal scrolling with mouse and touchpad (Bug#39979) + + * lisp/mwheel.el (mouse-wheel-tilt-scroll, + mouse-wheel-flip-direction): Improve docstrings. + * doc/emacs/frames.texi (Mouse Commands): Mention touchpads. + +2020-03-10 Juri Linkov + + * lisp/emacs-lisp/package.el (package-install): Fix typo in docstring. + +2020-03-09 Paul Eggert + + Port .gdbinit to clang with -gdwarf-4 + + * src/.gdbinit (xgetsym): Port to clang with -gdwarf-4, which + doesn’t output the type of lispsym anywhere other than emacs.o + (Bug#39962). + +2020-03-09 Mattias Engdegård + + Simplify rx example in manual + + * doc/lispref/searching.texi (Rx Notation): + Use the 'not' shorthand introduced in Emacs 27. + +2020-03-09 Paul Eggert + + * src/timefns.c: Add comments. + +2020-03-08 Paul Eggert + + * src/timefns.c: Add comments. + +2020-03-08 Andrew Eggenberger (tiny change) + + Eliminate use of cl-concatenate in 'seq' package + + Fixes (Bug#39761) by making cl-extra dependent on seq rather than + vice versa. + * lisp/emacs-lisp/seq.el (seq-concatenate): Move cl-concatenate's + code here instead of calling it. + * lisp/emacs-lisp/cl-extra.el (cl-concatenate): Use cl-concatenate. + +2020-03-07 Paul Eggert + + Fix bug with JIT stealth timers + + * lisp/emacs-lisp/timer.el (run-at-time): Don’t assume that Lisp + time values must be conses (Bug#39944). + +2020-03-07 Paul Eggert + + * doc/lispref/os.texi (time-subtract): Doc fix. + +2020-03-07 Alan Third + + NS port documentation updates + + * doc/emacs/macos.texi (Mac / GNUstep Customization): Document some + more of the ns- variables and remove incorrect font back-end + information. + * etc/NEWS: Update the documentation status of macOS news entries. + +2020-03-07 João Távora + + Let fido-mode users force a minibuffer-exit + + * lisp/icomplete.el (icomplete-fido-exit): + Add FORCE arg. Rewrite docstring. (bug#38992) + +2020-03-07 Dmitry Gutov + + icomplete-fido-exit: New command for the M-j binding + + * lisp/icomplete.el (icomplete-fido-exit): New command. + (icomplete-fido-mode-map): Use it (bug#38992). + +2020-03-07 Dmitry Gutov + + minibuffer-force-complete-and-exit: Allow input with no matches + + * lisp/minibuffer.el (minibuffer--require-match): New variable. + (completing-read-default): Bind it to the REQUIRE-MATCH value. + (minibuffer-force-complete-and-exit): Consult it to allow input + with no matches when a match is not required (bug#38992). + + * lisp/icomplete.el (icomplete-exhibit): Use it to render the + correct parens around matches. + +2020-03-07 Eli Zaretskii + + Document that 'byte-compile-dynamic' is obsolete + + * doc/lispref/compile.texi (Dynamic Loading): Document that this + is deprecated. + + * etc/NEWS: mark the 'byte-compile-dynamic' entry as documented. + +2020-03-07 Eli Zaretskii + + Document the changes in 'read-answer' + + * doc/lispref/minibuf.texi (Multiple Queries): Document the + fact that 'read-answer' can now accept non-character input + events. + +2020-03-07 Eli Zaretskii + + Document changes in lexical-binding + + * doc/lispref/variables.texi (Using Lexical Binding): Document + that lexical-binding is now turned on by default in more cases. + + * etc/NEWS: Fix wording of the NEWS entry about the above, and mark it + as fully documented. + +2020-03-06 Amin Bandali + + Update ERC mailing list address + + * lisp/erc/erc.el (erc-official-location): As part of bringing ERC + under the Emacs umbrella, erc-discuss has been renamed to emacs-erc, + and will be *the* mailing list for discussions and announcements about + ERC going forward. The other two lists, erc-announce and erc-commit, + are now retired. For more details, see the announcement at + . + +2020-03-06 Roland Winkler + + Use regexp-opt to define bibtex-autokey-transcriptions. (Bug#39686) + +2020-03-06 Eli Zaretskii + + Improve documentation of 'table-generate-source' + + * lisp/textmodes/table.el (table-generate-source): Doc fix. + (Bug#39935) + + * etc/NEWS: Fix wording of the 'table-generate-source' entry and + mark it as documented. + +2020-03-06 Eli Zaretskii + + Attempt to avoid rare segfaults in show_mouse_face + + * src/xdisp.c (show_mouse_face): Don't display the active region + if called on a frame different from the one recorded in HLINFO. + (Bug#37671) + +2020-03-05 Eli Zaretskii + + Avoid crashes when a fontset has strange entries + + * src/fontset.c (reorder_font_vector): Skip nil entries in the + loop that assigns scores to rfont_def's. + (fontset_compare_rfontdef): Cope with nil. This has the effect of + moving any nil entries to the end of the font-group, and avoids + crashing if an element other than the last in the font-group is + nil. (Bug#39892) + +2020-03-05 Mattias Engdegård + + Fix rx error with ? and ?? + + The ? and ?? rx operators are special in that they can be written as + characters (space and '?' respectively). This confused the definition + look-up mechanism in rare cases. + + * lisp/emacs-lisp/rx.el (rx--expand-def): Don't look up non-symbols. + * test/lisp/emacs-lisp/rx-tests.el (rx-charset-or): Test. + +2020-03-05 Mattias Engdegård + + * lisp/emacs-lisp/rx.el (rx--string-to-intervals): Fix error string. + +2020-03-05 Justin Burkett (tiny change) + + Fix args in 'window-text-pixel-size' call in 'fit-window-to-buffer' + + * lisp/window.el (fit-window-to-buffer): Fix arguments in + 'window-text-pixel-size' call. + +2020-03-04 João Távora + + Have pulse.el preserve existing overlay priorities + + (Bug#39821) + + * lisp/cedet/pulse.el (pulse-momentary-highlight-overlay): Save + overlay priority. + (pulse-momentary-unhighlight): Restore. + +2020-03-04 Alan Mackenzie + + CC Mode: Fix the handling of two adjacent after-change-functionses. + + The bug involved failing to set c-new-END correctly, which lead to an + args-out-of-range error when after-change-functions was invoked twice without + an intervening invocation of before-change-functions. + + * lisp/progmodes/cc-mode.el (c-after-change): Correct a coding error in the + handling of c-just-done-before-change. + +2020-03-04 Alan Mackenzie + + Fix combine-change-calls-1 for when buffer-undo-list is t + + * lisp/subr.el (combine-change-calls-1): Bind before/after-change-functions to + nil also when buffer-undo-list is t. + +2020-03-04 Mattias Engdegård + + Don't misinterpret doc string as initial value + + * lisp/loadhist.el (loadhist--restore-autoload): + * lisp/progmodes/vhdl-mode.el (vhdl-font-lock-keywords-0): + Prevent the doc string from being used as initial value. + +2020-03-04 Stefan Kangas + + Bump checkdoc-version to match library header + + * lisp/emacs-lisp/checkdoc.el (checkdoc-version): Bump version. + +2020-03-04 Noam Postavsky + + Explain how to unset mode bindings (Bug#39802) + + * doc/emacs/custom.texi (Init Rebinding): Explain that passing nil to + define-key will unbind keys, and extend the example accordingly. + +2020-03-04 Noam Postavsky + + Fix describe-variable on values with circular syntax (Bug#39805) + + * lisp/help-fns.el (describe-variable): Set syntax tables before + calling pp-buffer. + +2020-03-04 Juri Linkov + + Improve documentation of next-error-highlight-no-select (bug#38778) + + * doc/emacs/building.texi (Compilation Mode): + Mention next-error-highlight-no-select. + + * lisp/simple.el (next-error-highlight): Add reference to + next-error-highlight-no-select. + (next-error-highlight-no-select): Add reference to + next-error-highlight. + +2020-03-03 Andreas Schwab + + Fix implicit declaration of getenv and atol + + * src/gtkutil.c: Include . + +2020-03-03 Eli Zaretskii + + Fix handling MS-Windows keyboard input above the BMP + + * src/w32term.c (w32_read_socket): If we get a WM_UNICHAR message + with a surrogate codepoint, assemble the corresponding character + code above the BMP from its UTF-16 encoding, communicated in two + consecutive WM_UNICHAR messages. + +2020-03-03 Mattias Engdegård + + * etc/NEWS: More complete description of rx 'not' changes. + +2020-03-02 Juri Linkov + + * doc/emacs/mini.texi (Yes or No Prompts): 'y-or-n-p' now uses the minibuffer. + +2020-03-02 Robert Pluim + + Don't attempt to cache glyph metrics for FONT_INVALID_CODE + + This was causing massive slowdown in redisplay when eg #xfe0f + (VARIATION SELECTOR-16) was present, as the cache ended up very large, + unused, and being recreated on every call to font_fill_lglyph_metrics + (Bug#39133). + + * src/composite.c (fill_gstring_body): Hoist FONT_OBJECT_P check out + of loop. Calculate glyph code and check for FONT_INVALID_CODE before + calling font_fill_lglyph_metrics. Pass glyph code to it. + + * src/font.c (font_fill_lglyph_metrics): Add code parameter, move + glyph code calculation up the call stack into fill_gstring_body. + + * src/font.h: Adjust font_fill_lglyph_metrics prototype. + +2020-03-01 Sergey Trofimov (tiny change) + + Fix fit-frame-to-buffer for multi-monitor setup + + * lisp/window.el (fit-frame-to-buffer): Call + 'frame-monitor-attributes' instead of + 'display-monitor-attributes-list'. Fix geometry calculations for + multiple monitors. + +2020-03-01 Mattias Engdegård + + rx: Improve 'or' compositionality (bug#37659) + + Perform 'regexp-opt' on nested 'or' forms, and after expansion of + user-defined and 'eval' forms. Characters are now turned into strings + for wider 'regexp-opt' scope. This preserves the longest-match + semantics for string in 'or' forms over composition. + + * doc/lispref/searching.texi (Rx Constructs): Document. + * lisp/emacs-lisp/rx.el (rx--normalise-or-arg) + (rx--all-string-or-args): New. + (rx--translate-or): Normalise arguments first, and check for strings + in subforms. + (rx--expand-eval): Extracted from rx--translate-eval. + (rx--translate-eval): Call rx--expand-eval. + * test/lisp/emacs-lisp/rx-tests.el (rx-or, rx-def-in-or): Add tests. + * etc/NEWS: Announce. + +2020-02-29 Juri Linkov + + * lisp/tab-line.el: Fix auto-hscrolling (bug#39649) + + Distinguish offsets between manual-vs-automatic scrolling + as integers-vs-floats instead of positive-vs-negative integers. + + * lisp/tab-line.el (tab-line-format-template): Use 'numberp' + instead of 'integerp', and 'truncate' instead of 'abs'. + (tab-line-format): When the window-buffer was updated, set window-parameter + to float to enable auto-hscroll after it was disabled on manual scrolling. + (tab-line-auto-hscroll-buffer): New variable with internal buffer. + (tab-line-auto-hscroll): Erase in tab-line-auto-hscroll-buffer. + Use 'numberp' instead of 'integerp', 'truncate' instead of 'abs', + and 'float' instead of '-'. + (tab-line-hscroll): Use 'numberp' instead of 'integerp', + and 'truncate' instead of 'abs'. + +2020-02-29 Mattias Engdegård + + Fix rx charset generation + + * lisp/emacs-lisp/rx.el (rx--charset-p): Don't overquote. + (rx--generate-alt): Generate '.' for negated newline. + * test/lisp/emacs-lisp/rx-tests.el (rx-any, rx-charset-or): Test. + +2020-02-28 Mattias Engdegård + + Fix overquoting in mule.el + + * lisp/international/mule.el (sgml-xml-auto-coding-function): + Remove accidental quote. + +2020-02-28 Paul Eggert + + * src/timefns.c (time_arith): Omit incorrect comment. + +2020-02-28 Mattias Engdegård + + * lisp/vc/vc-cvs.el (vc-cvs-ignore): Copy-edit doc string + +2020-02-28 Štěpán Němec + + checkdoc: Don't mistake "cf." for sentence end + + * lisp/emacs-lisp/checkdoc.el (checkdoc-sentencespace-region-engine): + Recognize "cf." as an abbreviation, not a sentence end. + +2020-02-27 Nicolas Petton + + Bump Emacs version to 27.0.90 + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version. + +2020-02-27 Nicolas Petton + + * etc/AUTHORS: Update. + 2020-02-27 Nicolas Petton * admin/authors.el (authors-ignored-files): Fix entries. @@ -139450,7 +140538,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit 9261b1ed49755284bb9dc194b6c2a9b407151ee5 (inclusive). +commit 4acdd7fe58ae9f94102afeca67b0383141d597da (inclusive). See ChangeLog.2 for earlier changes. ;; Local Variables: commit 8f200254fbe46e46034b15061dafb32e86e89b52 Author: Nicolas Petton Date: Tue Apr 14 18:33:50 2020 +0200 ; Update etc/AUTHORS diff --git a/etc/AUTHORS b/etc/AUTHORS index ab0cbeefc8..aff24a8d8d 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -97,11 +97,11 @@ 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 follow.el display.texi subr.el +and changed cc-mode.texi bytecomp.el display.texi follow.el subr.el edebug.el progmodes/compile.el programs.texi syntax.texi modes.texi font-lock.el isearch.el text.texi help.el ispell.el lread.c syntax.c windows.texi .dir-locals.el control.texi cus-start.el - and 147 other files + and 148 other files Alan Modra: changed unexelf.c @@ -113,9 +113,9 @@ Alan Shutko: changed diary-lib.el calendar.el bindings.el cal-hebrew.el Alan Third: wrote dabbrev-tests.el image-transforms-tests.el and changed nsterm.m nsterm.h nsfns.m nsmenu.m ns-win.el nsimage.m - image.c macfont.m configure.ac frame.el xdisp.c display.texi image.el - macos.texi xterm.c Info.plist.in conf_post.h dispextern.h frame.c - frame.h frames.texi and 21 other files + image.c macfont.m configure.ac frame.el xdisp.c macos.texi display.texi + image.el xterm.c Info.plist.in conf_post.h dispextern.h frame.c frame.h + frames.texi and 21 other files Alastair Burt: changed gnus-art.el smiley.el @@ -235,12 +235,11 @@ Alp Aker: changed nsfont.m nsterm.m buff-menu.el nsfns.m nsmenu.m Ami Fischman: changed bindings.el calendar.el diary-lib.el print.c savehist.el vc-git.el -Amin Bandali: changed erc-button.el erc-desktop-notifications.el - erc-autoaway.el erc-compat.el erc-fill.el erc-ibuffer.el erc-imenu.el - erc-join.el erc-lang.el erc-list.el erc-log.el erc-match.el - erc-notify.el erc-pcomplete.el erc-replace.el erc-ring.el - erc-services.el erc-sound.el erc-speedbar.el erc-spelling.el - erc-stamp.el and 4 other files +Amin Bandali: changed erc.el erc-button.el erc-desktop-notifications.el + erc-track.el erc-autoaway.el erc-compat.el erc-fill.el erc-ibuffer.el + erc-imenu.el erc-join.el erc-lang.el erc-list.el erc-log.el + erc-match.el erc-notify.el erc-pcomplete.el erc-replace.el erc-ring.el + erc-services.el erc-sound.el erc-speedbar.el and 5 other files Anand Mitra: changed gnus-sum.el @@ -298,7 +297,7 @@ Andreas Rottmann: changed emacsclient.1 emacsclient.c misc.texi server.el Andreas Schwab: changed configure.ac lisp.h xdisp.c process.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 650 other files + and 651 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 @@ -332,6 +331,8 @@ and changed nnir.el gnus-sum.el nnimap.el gnus-msg.el gnus.texi Andrew Csillag: wrote m4-mode.el +Andrew Eggenberger: changed cl-extra.el seq.el + Andrew G Cohen: changed gnus-sum.el gnus-art.el Andrew Hall: changed paren.el @@ -695,8 +696,8 @@ Carl Edman: co-wrote ns-win.el Carl Henrik Lunde: changed format-spec.el -Carlos Pita: changed erc-pcomplete.el image-mode.el progmodes/python.el - sh-script.el +Carlos Pita: changed progmodes/python.el erc-pcomplete.el fringe.c + gtkutil.c image-mode.el keyboard.c sh-script.el Carsten Bormann: changed ibmrs6000.h latin-post.el @@ -1354,9 +1355,9 @@ Dmitry Gutov: wrote elisp-mode-tests.el jit-lock-tests.el json-tests.el vc-hg-tests.el xref-tests.el and changed ruby-mode.el xref.el project.el vc-git.el elisp-mode.el etags.el ruby-mode-tests.el js.el package.el vc-hg.el vc.el - symref/grep.el log-edit.el dired-aux.el simple.el menu-bar.el - minibuffer.el package-test.el progmodes/grep.el vc-svn.el eldoc.el - and 110 other files + symref/grep.el log-edit.el dired-aux.el simple.el minibuffer.el + menu-bar.el package-test.el progmodes/grep.el vc-svn.el eldoc.el + and 111 other files Dmitry Kurochkin: changed isearch.el @@ -1444,7 +1445,7 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c] and changed xdisp.c msdos.c w32.c display.texi w32fns.c simple.el files.el fileio.c keyboard.c w32term.c w32proc.c emacs.c files.texi text.texi dispnew.c frames.texi lisp.h dispextern.h window.c process.c - term.c and 1184 other files + term.c and 1187 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 @@ -2039,7 +2040,7 @@ Ian Lance Taylor: changed sco4.h Ian T Zimmerman: wrote gametree.el and changed ange-ftp.el desktop.el tex-mode.el -İ. Göktuğ Kayaalp: changed eww.el vc-rcs.el +İ. Göktuğ Kayaalp: changed eww.el frames.texi mwheel.el vc-rcs.el Igor Kuzmin: wrote cconv.el @@ -2433,7 +2434,7 @@ and changed flymake.el flymake-proc.el icomplete.el minibuffer.el flymake-tests.el flymake.texi elisp-mode.el flymake-elisp.el electric.el flymake-ui.el text.texi json-tests.el tex-mode.el errors-and-warnings.c json.c xref.el auth-source-pass.el linum.el - maintaining.texi message.el progmodes/python.el and 29 other files + maintaining.texi message.el progmodes/python.el and 30 other files Jochen Hein: changed gnus-art.el @@ -2713,13 +2714,15 @@ Juri Linkov: wrote files-x.el misearch.el replace-tests.el tab-bar.el and changed isearch.el info.el simple.el replace.el dired.el dired-aux.el progmodes/grep.el progmodes/compile.el startup.el subr.el diff-mode.el files.el menu-bar.el faces.el bindings.el display.texi image-mode.el - desktop.el comint.el minibuffer.el search.texi and 418 other files + desktop.el comint.el minibuffer.el search.texi and 419 other files Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h w32console.c w32heap.c w32inevt.c w32term.h Justin Bogner: changed fortune.el +Justin Burkett: changed window.el + Justin Gordon: changed ox-md.el Justin Sheehy: changed gnus-sum.el nntp.el @@ -3119,8 +3122,6 @@ Liam Stitt: changed url-file.el url-vars.el Liang Wang: changed etags.el -Lin Sun: changed makefile-edit.el - Lixin Chin: changed bibtex.el Lloyd Zusman: changed mml.el pgg-gpg.el @@ -3348,9 +3349,9 @@ Martin Neitzel: changed supercite.el Martin Pohlack: changed iimage.el pc-select.el Martin Rudalics: changed window.el window.c windows.texi frame.c xdisp.c - w32fns.c frames.texi xterm.c w32term.c frame.el xfns.c display.texi + w32fns.c xterm.c frames.texi w32term.c xfns.c frame.el display.texi help.el buffer.c window.h cus-start.el frame.h dispnew.c mouse.el - nsfns.m dired.el and 209 other files + nsfns.m gtkutil.c and 209 other files Martin Stjernholm: wrote cc-bytecomp.el and co-wrote cc-align.el cc-cmds.el cc-compat.el cc-defs.el cc-engine.el @@ -3450,10 +3451,10 @@ Matt Hodges: changed textmodes/table.el faces.el iswitchb.el simple.el locate.el paragraphs.el pcomplete.el repeat.el and 3 other files Mattias Engdegård: changed rx.el searching.texi rx-tests.el autorevert.el - regexp-opt.el calc-tests.el filenotify.el subr.el progmodes/compile.el - files.el mouse.el bytecomp.el compile-tests.el autorevert-tests.el - byte-opt.el bytecomp-tests.el calc-alg.el compilation.txt font.c - regex-emacs.c regexp-opt-tests.el and 121 other files + calc-tests.el regexp-opt.el filenotify.el subr.el files.el + progmodes/compile.el mouse.el bytecomp.el compile-tests.el + autorevert-tests.el byte-opt.el bytecomp-tests.el calc-alg.el + compilation.txt dired.el font.c regex-emacs.c and 161 other files 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 @@ -3854,7 +3855,7 @@ Nil Geisweiller: changed flymake.el Nils Ackermann: changed message.el nnmh.el reftex-vars.el -Nitish Chandra: changed simple.el +Nitish Chinta: changed progmodes/python.el sendmail.el simple.el N. Jackson: changed emacs.texi forms.texi @@ -3870,10 +3871,10 @@ Noah Lavine: changed tramp.el Noah Swainland: changed calc.el Noam Postavsky: changed progmodes/python.el lisp-mode.el bytecomp.el - lisp-mode-tests.el term.el xdisp.c cl-macs.el eval.c - emacs-lisp/debug.el simple.el data.c modes.texi subr.el elisp-mode.el - ert.el help-fns.el isearch.el processes.texi cl-print.el ffap.el - print.c and 357 other files + lisp-mode-tests.el term.el xdisp.c eval.c cl-macs.el data.c + emacs-lisp/debug.el simple.el help-fns.el modes.texi subr.el + elisp-mode.el ert.el isearch.el processes.texi cl-print.el diff-mode.el + ffap.el and 359 other files Nobuyoshi Nakada: co-wrote ruby-mode.el and changed ruby-mode-tests.el @@ -4168,15 +4169,15 @@ Philipp Stephani: wrote callint-tests.el checkdoc-tests.el lread-tests.el mouse-tests.el xt-mouse-tests.el and changed emacs-module.c emacs-module-tests.el json.c json-tests.el eval.c mod-test.c lisp.h lread.c nsterm.m configure.ac bytecomp.el - internals.texi gtkutil.c emacs-module.h.in files.el alloc.c electric.el - test/Makefile.in editfns.c electric-tests.el emacs.c - and 126 other files + internals.texi gtkutil.c emacs-module.h.in files.el alloc.c + electric-tests.el electric.el test/Makefile.in editfns.c emacs.c + and 127 other files Phillip Lord: wrote ps-print-tests.el -and changed build-zips.sh lisp/Makefile.in undo.c simple.el - build-dep-zips.py test/Makefile.in Makefile Makefile.in emacs.nsi - keyboard.c viper-cmd.el README-windows-binaries README.W32 - elisp-mode-tests.el ldefs-clean.el loadup.el README-scripts autoload.el +and changed build-zips.sh lisp/Makefile.in undo.c build-dep-zips.py + simple.el test/Makefile.in Makefile Makefile.in emacs.nsi keyboard.c + viper-cmd.el README-windows-binaries README.W32 elisp-mode-tests.el + ldefs-clean.el loadup.el README-scripts autoload.el automated/Makefile.in cmds.c dired.el and 171 other files Phil Sainty: wrote autoload-longlines-mode-tests.el @@ -4412,11 +4413,11 @@ Roberto Rodríguez: changed glossary.texi widget.texi Robert P. Goldman: changed org.texi ob-exp.el org.el ox-latex.el Robert Pluim: wrote nsm-tests.el -and changed process.c gtkutil.c processes.texi vc-git.el configure.ac - ftfont.c network-stream.el nsm.el process-tests.el files.texi font.c - ftcrfont.c gnus-icalendar.el gnutls.el gtkutil.h - network-stream-tests.el text.texi w32.c xfns.c xftfont.c auth.texi - and 83 other files +and changed process.c ftfont.c gtkutil.c processes.texi vc-git.el + configure.ac font.c network-stream.el nsm.el process-tests.el xfns.c + dispextern.h files.texi ftcrfont.c gnus-icalendar.el gnutls.el + gtkutil.h network-stream-tests.el nsterm.m text.texi w32.c + and 90 other files Robert Thorpe: changed cus-start.el indent.el @@ -4649,6 +4650,8 @@ and changed ob-maxima.el ob-octave.el Sergey Poznyakoff: changed rmail.el mh-mime.el rmail.texi smtpmail.el +Sergey Trofimov: changed window.el + Sergey Vinokurov: changed emacs-module-tests.el emacs-module.c mod-test.c Sergio Durigan Junior: changed eudcb-bbdb.el gdb-mi.el @@ -4772,7 +4775,7 @@ Stefan Kangas: wrote bookmark-tests.el delim-col-tests.el morse-tests.el and changed bookmark.el package.el efaq.texi package.texi ibuffer.el mwheel.el cperl-mode.el fns.c gud.el simple.el subr.el autoinsert.el comint-tests.el cus-edit.el delim-col.el dired-aux.el dired-x.el - em-term.el ert.texi flow-fill.el frames.texi and 146 other files + em-term.el ert.texi flow-fill.el frames.texi and 147 other files Stefan Merten: co-wrote rst.el @@ -4806,10 +4809,11 @@ Stefan Wiens: changed gnus-sum.el Steinar Bang: changed gnus-setup.el imap.el -Štěpán Němec: changed INSTALL calc-ext.el cl.texi comint.el edebug.texi - font-lock.el functions.texi leim-ext.el loading.texi maps.texi - mark.texi message.texi mini.texi minibuf.texi misc.texi programs.texi - subr.el tips.texi url-vars.el url.texi vc-git.el and 3 other files +Štěpán Němec: changed INSTALL calc-ext.el checkdoc.el cl.texi comint.el + edebug.texi font-lock.el functions.texi gnus-sum.el insdel.c + leim-ext.el loading.texi maps.texi mark.texi message.texi mini.texi + minibuf.texi misc.texi programs.texi subr.el text.texi + and 7 other files Stephan Stahl: changed which-func.el buff-menu.el buffer.c dired-x.texi ediff-mult.el @@ -5567,6 +5571,8 @@ Zhang Weize: wrote ob-plantuml.el Zhongwei Yao: changed tramp-adb.el +Zhu Zihao: changed svg.el + Zoltan Kemenczy: changed gud.el Zoran Milojevic: changed avoid.el commit c7adc851ad5e45d5095743b0da7eaed733775ba8 Author: Nicolas Petton Date: Tue Apr 14 18:33:28 2020 +0200 * admin/authors.el: Add missing author aliases. diff --git a/admin/authors.el b/admin/authors.el index 6cf7b95449..d046eb59eb 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -207,6 +207,10 @@ files.") ("Yoshinori Koseki" "KOSEKI Yoshinori" "小関 吉則") ("Yutaka NIIBE" "NIIBE Yutaka") (nil "stardiviner") + (nil "lin.sun") + ("Nitish Chinta" "nitishch") + ("Carlos Pita" "memeplex") + ("Vinicius Jose Latorre" "viniciusjl") ) "Alist of author aliases. commit 4acdd7fe58ae9f94102afeca67b0383141d597da Author: Mattias Engdegård Date: Tue Apr 14 12:17:40 2020 +0200 Fix edge case errors in filename-matching regexps These changes fix actual or latent bugs in regexps that match file names, such as PATTERN arguments to 'directory-files'. See https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00265.html * admin/authors.el (authors-obsolete-files-regexps) (authors-renamed-files-regexps): * lisp/auth-source-pass.el (auth-source-pass-entries): * lisp/calendar/todo-mode.el (todo-show, todo-find-filtered-items-file) (todo-filter-items, todo-reset-nondiary-marker, todo-reset-done-string) (todo-reset-comment-string, todo-reset-highlight-item): * lisp/cedet/semantic/db-ebrowse.el (semanticdb-load-ebrowse-caches): * lisp/cedet/semantic/texi.el (semantic-texi-associated-files): * lisp/cedet/srecode/map.el (srecode-map-update-map): * lisp/dired.el (dired-re-no-dot): * lisp/emacs-lisp/autoload.el (update-directory-autoloads): * lisp/emacs-lisp/shadow.el (load-path-shadows-find): * lisp/files.el (auto-mode-alist, directory-files-no-dot-files-regexp): * lisp/finder.el (finder-compile-keywords): * lisp/generic-x.el (inetd-conf-generic-mode, named-boot-generic-mode) (resolve-conf-generic-mode, etc-modules-conf-generic-mode): * lisp/gnus/gnus-agent.el (gnus-agent-read-agentview) (gnus-agent-regenerate-group, gnus-agent-update-files-total-fetched-for): * lisp/gnus/gnus-cache.el (gnus-cache-articles-in-group): * lisp/gnus/gnus-score.el (gnus-score-search-global-directories): * lisp/gnus/gnus-util.el (gnus-delete-directory): * lisp/gnus/gnus-uu.el (gnus-uu-dir-files): * lisp/gnus/nndraft.el (nndraft-request-group): * lisp/gnus/nnmh.el (nnmh-request-group, nnmh-request-create-group): (nnmh-request-delete-group, nnmh-active-number, nnmh-update-gnus-unreads): * lisp/gnus/nnspool.el (nnspool-request-group): * lisp/gnus/spam-stat.el (spam-stat-process-directory) (spam-stat-test-directory): * lisp/help-fns.el (help-fns--first-release): * lisp/help.el (view-emacs-news): * lisp/international/quail.el (quail-update-leim-list-file): * lisp/international/titdic-cnv.el (batch-titdic-convert): * lisp/mail/mspools.el (mspools-set-vm-spool-files) (mspools-get-spool-files): * lisp/mail/rmail.el (rmail-secondary-file-regexp) (rmail-speedbar-match-folder-regexp): * lisp/net/ange-ftp.el (ange-ftp-delete-directory): * lisp/net/tramp.el (tramp-use-absolute-autoload-file-names): * lisp/obsolete/gulp.el (gulp-send-requests): * lisp/obsolete/vc-arch.el (vc-arch-trim-revlib): * lisp/org/ob-core.el (org-babel-remove-temporary-directory): * lisp/progmodes/ebnf2ps.el (ebnf-file-suffix-regexp, ebnf-style-database): * lisp/progmodes/executable.el (executable-command-find-posix-p): * lisp/startup.el (command-line): * lisp/textmodes/refer.el (refer-get-bib-files): * lisp/url/url-about.el (url-probe-protocols): * lisp/vc/vc-rcs.el (vc-rcs-register, vc-rcs-unregister): * test/lisp/net/tramp-archive-tests.el (tramp-archive-test19-directory-files-and-attributes): * test/lisp/net/tramp-tests.el (tramp-test19-directory-files-and-attributes): Replace ^ and $ with \` and \', respectively. Use (rx (or (not ".") "...")), translated into "[^.]\\|\\.\\.\\.", to match anything but "." and "..", instead of several incorrect regexps. diff --git a/admin/authors.el b/admin/authors.el index dc42bc72ef..6cf7b95449 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -278,7 +278,7 @@ If REALNAME is nil, ignore that author.") (defvar authors-obsolete-files-regexps - '(".*loaddefs.el$" ; not obsolete, but auto-generated + '(".*loaddefs\\.el$" ; not obsolete, but auto-generated "\\.\\(bzr\\|cvs\\|git\\)ignore$" ; obsolete or uninteresting "\\.arch-inventory$" "ChangeLog\\(\\.[0-9]+\\)?\\'" @@ -288,9 +288,9 @@ If REALNAME is nil, ignore that author.") "\\`\\(indent\\|automated\\)\\'" "indent/" "mod-test/" "-resources/" "unidata/.*\\.txt\\'" - "BidiCharacterTest.txt" + "BidiCharacterTest\\.txt" ;; TODO lib/? Matches other things? - "build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'" + "build-aux/" "m4/" "Emacs\\.xcodeproj" "mapfiles" "\\.map\\'" "preferences\\.\\(nib\\|gorm\\)" ;; Generated files that have since been removed. "\\(refcard\\(-de\\|-pl\\)?\\|calccard\\|dired-ref\\|orgcard\\|\ @@ -1183,7 +1183,7 @@ ediff\\|emerge\\|log-edit\\|log-view\\|pcvs\\|smerge-mode\\|vc\\)\\.el\\'" ("\\`org-\\(ascii\\|beamer\\|html\\|icalendar\\|jsinfo\\|latex\ \\|odt\\|publish\\)\\.el\\'" "ox-\\1.el") ;; From test/ to test/automated/. - ("comint-testsuite.el" "automated/\\&") + ("comint-testsuite\\.el" "automated/\\&") ("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\ -testsuite\\.el" "\\1-tests.el") ("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'" diff --git a/lisp/auth-source-pass.el b/lisp/auth-source-pass.el index e2a6bfefb5..ba66d0bb5d 100644 --- a/lisp/auth-source-pass.el +++ b/lisp/auth-source-pass.el @@ -190,7 +190,7 @@ CONTENTS is the contents of a password-store formatted file." (let ((store-dir (expand-file-name auth-source-pass-filename))) (mapcar (lambda (file) (file-name-sans-extension (file-relative-name file store-dir))) - (directory-files-recursively store-dir "\\.gpg$")))) + (directory-files-recursively store-dir "\\.gpg\\'")))) (defun auth-source-pass--find-match (host user port) "Return password-store entry data matching HOST, USER and PORT. diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el index 6d8fe9c998..a49f428a3c 100644 --- a/lisp/calendar/todo-mode.el +++ b/lisp/calendar/todo-mode.el @@ -707,7 +707,7 @@ and done items are always shown on visiting a category." shortf todo-show-first))) (when (eq todo-show-first 'regexp) (let ((rxfiles (directory-files todo-directory t - ".*\\.todr$" t))) + "\\.todr\\'" t))) (when (and rxfiles (> (length rxfiles) 1)) (let ((rxf (mapcar #'todo-short-file-name rxfiles))) (setq fi-file (todo-absolute-file-name @@ -4054,7 +4054,7 @@ regexp items." (defun todo-find-filtered-items-file () "Choose a filtered items file and visit it." (interactive) - (let ((files (directory-files todo-directory t "\\.tod[rty]$" t)) + (let ((files (directory-files todo-directory t "\\.tod[rty]\\'" t)) falist file) (dolist (f files) (let ((sf-name (todo-short-file-name f)) @@ -4187,7 +4187,7 @@ multifile commands for further details." (regexp ".todr"))))) (multi (> (length flist) 1)) (rxfiles (when regexp - (directory-files todo-directory t ".*\\.todr$" t))) + (directory-files todo-directory t "\\.todr\\'" t))) (file-exists (or (file-exists-p fname) rxfiles)) bufname) (cond ((and top new (natnump new)) @@ -6154,7 +6154,7 @@ the empty string (i.e., no time string)." "The :set function for user option `todo-nondiary-marker'." (let* ((oldvalue (symbol-value symbol)) (files (append todo-files todo-archives - (directory-files todo-directory t "\\.tod[rty]$" t)))) + (directory-files todo-directory t "\\.tod[rty]\\'" t)))) (custom-set-default symbol value) ;; Need to reset these to get font-locking right. (setq todo-nondiary-start (nth 0 todo-nondiary-marker) @@ -6207,7 +6207,7 @@ the empty string (i.e., no time string)." "The :set function for user option `todo-done-string'." (let ((oldvalue (symbol-value symbol)) (files (append todo-files todo-archives - (directory-files todo-directory t "\\.todr$" t)))) + (directory-files todo-directory t "\\.todr\\'" t)))) (custom-set-default symbol value) ;; Need to reset this to get font-locking right. (setq todo-done-string-start @@ -6236,7 +6236,7 @@ the empty string (i.e., no time string)." "The :set function for user option `todo-comment-string'." (let ((oldvalue (symbol-value symbol)) (files (append todo-files todo-archives - (directory-files todo-directory t "\\.todr$" t)))) + (directory-files todo-directory t "\\.todr\\'" t)))) (custom-set-default symbol value) (when (not (equal value oldvalue)) (dolist (f files) @@ -6262,7 +6262,7 @@ the empty string (i.e., no time string)." "The :set function for user option `todo-highlight-item'." (let ((oldvalue (symbol-value symbol)) (files (append todo-files todo-archives - (directory-files todo-directory t "\\.tod[rty]$" t)))) + (directory-files todo-directory t "\\.tod[rty]\\'" t)))) (custom-set-default symbol value) (when (not (equal value oldvalue)) (dolist (f files) diff --git a/lisp/cedet/semantic/db-ebrowse.el b/lisp/cedet/semantic/db-ebrowse.el index 55e755dc36..a3219af7d3 100644 --- a/lisp/cedet/semantic/db-ebrowse.el +++ b/lisp/cedet/semantic/db-ebrowse.el @@ -181,7 +181,9 @@ is specified by `semanticdb-default-save-directory'." "Load all semanticdb controlled EBROWSE caches." (interactive) (let ((f (directory-files semanticdb-default-save-directory - t (concat semanticdb-ebrowse-default-file-name "-load.el$") t))) + t (concat semanticdb-ebrowse-default-file-name + "-load\\.el\\'") + t))) (while f (load (car f) nil t) (setq f (cdr f))) diff --git a/lisp/cedet/semantic/texi.el b/lisp/cedet/semantic/texi.el index 760cb19215..8e8d362ceb 100644 --- a/lisp/cedet/semantic/texi.el +++ b/lisp/cedet/semantic/texi.el @@ -495,7 +495,7 @@ that start with that symbol." (setq tabs (cdr tabs))) r)) (t - (directory-files default-directory nil "\\.texi$")) + (directory-files default-directory nil "\\.texi\\'")) ))) ;; Turns out this might not be useful. diff --git a/lisp/cedet/srecode/map.el b/lisp/cedet/srecode/map.el index 784ebffe17..dc94920096 100644 --- a/lisp/cedet/srecode/map.el +++ b/lisp/cedet/srecode/map.el @@ -327,7 +327,7 @@ if that file is NEW, otherwise assume the mode has not changed." ;; 4) - Find new files and add them to the map. (dolist (dir srecode-map-load-path) (when (file-exists-p dir) - (dolist (f (directory-files dir t "\\.srt$")) + (dolist (f (directory-files dir t "\\.srt\\'")) (when (and (not (backup-file-name-p f)) (not (auto-save-file-name-p f)) (file-readable-p f)) diff --git a/lisp/dired.el b/lisp/dired.el index 689ad1fbfa..f2d478e83c 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -3171,7 +3171,7 @@ Any other value means to ask for each directory." :group 'dired) ;; Match anything but `.' and `..'. -(defvar dired-re-no-dot "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*") +(defvar dired-re-no-dot (rx (or (not ".") "..."))) ;; Delete file, possibly delete a directory and all its files. ;; This function is useful outside of dired. One could change its name diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 785e350e0e..dc7461d93e 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el @@ -1047,7 +1047,7 @@ write its autoloads into the specified file instead." ;; what is the suffix for the underlying OS. (unless (string-match "\\.\\(elc\\|so\\|dll\\)" suf) (push suf tmp))) - (concat "^[^=.].*" (regexp-opt tmp t) "\\'"))) + (concat "\\`[^=.].*" (regexp-opt tmp t) "\\'"))) (files (apply #'nconc (mapcar (lambda (dir) (directory-files (expand-file-name dir) diff --git a/lisp/emacs-lisp/shadow.el b/lisp/emacs-lisp/shadow.el index f0a4870a69..4ff129e367 100644 --- a/lisp/emacs-lisp/shadow.el +++ b/lisp/emacs-lisp/shadow.el @@ -99,7 +99,8 @@ See the documentation for `list-load-path-shadows' for further information." (setq true-names (append true-names (list dir))) (setq dir (directory-file-name (or pp "."))) (setq curr-files (if (file-accessible-directory-p dir) - (directory-files dir nil ".\\.elc?\\(\\.gz\\)?$" t))) + (directory-files dir nil + "\\.elc?\\(?:\\.gz\\)?\\'" t))) (and curr-files (not noninteractive) (message "Checking %d files in %s..." (length curr-files) dir)) diff --git a/lisp/files.el b/lisp/files.el index 01da2a985b..3e4ad7c0d4 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -2671,7 +2671,7 @@ since only a single case-insensitive search through the alist is made." ("\\.pas\\'" . pascal-mode) ("\\.\\(dpr\\|DPR\\)\\'" . delphi-mode) ("\\.ad[abs]\\'" . ada-mode) - ("\\.ad[bs].dg\\'" . ada-mode) + ("\\.ad[bs]\\.dg\\'" . ada-mode) ("\\.\\([pP]\\([Llm]\\|erl\\|od\\)\\|al\\)\\'" . perl-mode) ("Imakefile\\'" . makefile-imake-mode) ("Makeppfile\\(?:\\.mk\\)?\\'" . makefile-makepp-mode) ; Put this before .mk @@ -2822,7 +2822,7 @@ ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|CBR\\|7Z\\)\\'" . archive-mo ("\\.properties\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" . conf-javaprop-mode) ("\\.toml\\'" . conf-toml-mode) ("\\.desktop\\'" . conf-desktop-mode) - ("/\\.redshift.conf\\'" . conf-windows-mode) + ("/\\.redshift\\.conf\\'" . conf-windows-mode) ("\\`/etc/\\(?:DIR_COLORS\\|ethers\\|.?fstab\\|.*hosts\\|lesskey\\|login\\.?de\\(?:fs\\|vperm\\)\\|magic\\|mtab\\|pam\\.d/.*\\|permissions\\(?:\\.d/.+\\)?\\|protocols\\|rpc\\|services\\)\\'" . conf-space-mode) ("\\`/etc/\\(?:acpid?/.+\\|aliases\\(?:\\.d/.+\\)?\\|default/.+\\|group-?\\|hosts\\..+\\|inittab\\|ksysguarddrc\\|opera6rc\\|passwd-?\\|shadow-?\\|sysconfig/.+\\)\\'" . conf-mode) ;; ChangeLog.old etc. Other change-log-mode entries are above; @@ -5754,7 +5754,7 @@ If called interactively, then PARENTS is non-nil." (write-region "" nil filename nil 0)) (defconst directory-files-no-dot-files-regexp - "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*" + "[^.]\\|\\.\\.\\." "Regexp matching any file name except \".\" and \"..\".") (defun files--force (no-such fn &rest args) diff --git a/lisp/finder.el b/lisp/finder.el index 96359b0b4f..71f8ac740e 100644 --- a/lisp/finder.el +++ b/lisp/finder.el @@ -188,7 +188,7 @@ from; the default is `load-path'." ;; Allow compressed files also. (setq package--builtins nil) (setq finder-keywords-hash (make-hash-table :test 'eq)) - (let* ((el-file-regexp "^\\([^=].*\\)\\.el\\(\\.\\(gz\\|Z\\)\\)?$") + (let* ((el-file-regexp "\\`\\([^=].*\\)\\.el\\(\\.\\(gz\\|Z\\)\\)?\\'") (file-count 0) (files (cl-loop for d in (or dirs load-path) when (file-exists-p (directory-file-name d)) diff --git a/lisp/generic-x.el b/lisp/generic-x.el index d49193ccfc..cd24f497c9 100644 --- a/lisp/generic-x.el +++ b/lisp/generic-x.el @@ -1430,7 +1430,7 @@ like an INI file. You can add this hook to `find-file-hook'." "nowait" "internal") '(("^\\([-A-Za-z0-9_]+\\)" 1 font-lock-type-face)) - '("/etc/inetd.conf\\'") + '("/etc/inetd\\.conf\\'") (list (function (lambda () @@ -1630,7 +1630,7 @@ like an INI file. You can add this hook to `find-file-hook'." (2 font-lock-variable-name-face) (3 font-lock-constant-face))) ;; List of additional automode-alist expressions - '("/etc/named.boot\\'") + '("/etc/named\\.boot\\'") ;; List of set up functions to call nil)) @@ -1667,7 +1667,7 @@ like an INI file. You can add this hook to `find-file-hook'." ;; List of additional font-lock-expressions nil ;; List of additional auto-mode-alist expressions - '("/etc/resolv[e]?.conf\\'") + '("/etc/resolve?\\.conf\\'") ;; List of set up functions to call nil)) @@ -1803,7 +1803,7 @@ like an INI file. You can add this hook to `find-file-hook'." ;; List of additional font-lock-expressions nil ;; List of additional automode-alist expressions - '("/etc/modules.conf" "/etc/conf.modules") + '("/etc/modules\\.conf" "/etc/conf\\.modules") ;; List of set up functions to call nil)) diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el index 9f22b7df0f..cf705ae5dc 100644 --- a/lisp/gnus/gnus-agent.el +++ b/lisp/gnus/gnus-agent.el @@ -2074,7 +2074,7 @@ doesn't exist, to valid the overview buffer." (file-attributes (directory-files-and-attributes (gnus-agent-article-name "" gnus-agent-read-agentview) - nil "^[0-9]+$" t))) + nil "\\`[0-9]+\\'" t))) (while file-attributes (let ((fa (pop file-attributes))) (unless (file-attribute-type (cdr fa)) @@ -3850,7 +3850,8 @@ If REREAD is not nil, downloaded articles are marked as unread." (sort (delq nil (mapcar (lambda (name) (and (not (file-directory-p (nnheader-concat dir name))) (string-to-number name))) - (directory-files dir nil "^[0-9]+$" t))) + (directory-files + dir nil "\\`[0-9]+\\'" t))) '>) (progn (gnus-make-directory dir) nil))) nov-arts @@ -4110,7 +4111,7 @@ agent has fetched." (setq delta sum)) (let ((sum (- (nth 2 entry))) (info (directory-files-and-attributes - path nil "^-?[0-9]+$" t)) + path nil "\\`-?[0-9]+\\'" t)) file) (while (setq file (pop info)) (cl-incf sum (float (or (file-attribute-size (cdr file)) 0)))) diff --git a/lisp/gnus/gnus-cache.el b/lisp/gnus/gnus-cache.el index 8b9acfe051..02a8ea723d 100644 --- a/lisp/gnus/gnus-cache.el +++ b/lisp/gnus/gnus-cache.el @@ -501,7 +501,7 @@ Returns the list of articles removed." (when (file-exists-p dir) (setq articles (sort (mapcar (lambda (name) (string-to-number name)) - (directory-files dir nil "^[0-9]+$" t)) + (directory-files dir nil "\\`[0-9]+\\'" t)) '<)) ;; Update the cache active file, just to synch more. (if articles diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el index 41b63e2323..46b70eaf27 100644 --- a/lisp/gnus/gnus-score.el +++ b/lisp/gnus/gnus-score.el @@ -2981,7 +2981,7 @@ The list is determined from the variable `gnus-score-file-alist'." (if (file-directory-p (car files)) (setq out (nconc (directory-files (car files) t - (concat (gnus-score-file-regexp) "$")))) + (concat (gnus-score-file-regexp) "\\'")))) (push (car files) out)) (setq files (cdr files))) (setq gnus-internal-global-score-files out))) diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index 23c62b4f93..3429d6560b 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el @@ -768,7 +768,7 @@ nil. See also `gnus-bind-print-variables'." If there's no subdirectory, delete DIRECTORY as well." (when (file-directory-p directory) (let ((files (directory-files - directory t "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")) + directory t (rx (or (not ".") "...")))) file dir) (while files (setq file (pop files)) diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el index d40ba9cef4..5902f2b37a 100644 --- a/lisp/gnus/gnus-uu.el +++ b/lisp/gnus/gnus-uu.el @@ -1674,7 +1674,7 @@ Gnus might fail to display all of it.") did-unpack)) (defun gnus-uu-dir-files (dir) - (let ((dirs (directory-files dir t "[^/][^\\.][^\\.]?$")) + (let ((dirs (directory-files dir t (rx (or (not ".") "...")))) files file) (while dirs (if (file-directory-p (setq file (car dirs))) diff --git a/lisp/gnus/nndraft.el b/lisp/gnus/nndraft.el index 3ee86a696c..a1337e8d7f 100644 --- a/lisp/gnus/nndraft.el +++ b/lisp/gnus/nndraft.el @@ -219,7 +219,7 @@ are generated if and only if they are also in `message-draft-headers'." (nnheader-re-read-dir pathname) (setq dir (mapcar (lambda (name) (string-to-number (substring name 1))) (ignore-errors (directory-files - pathname nil "^#[0-9]+#$" t)))) + pathname nil "\\`#[0-9]+#\\'" t)))) (dolist (n dir) (unless (file-exists-p (setq file (expand-file-name (int-to-string n) pathname))) diff --git a/lisp/gnus/nnmh.el b/lisp/gnus/nnmh.el index c075f29898..8e7f0565e6 100644 --- a/lisp/gnus/nnmh.el +++ b/lisp/gnus/nnmh.el @@ -172,7 +172,7 @@ as unread by Gnus.") (setq dir (sort (mapcar 'string-to-number - (directory-files pathname nil "^[0-9]+$" t)) + (directory-files pathname nil "\\`[0-9]+\\'" t)) '<)) (cond (dir @@ -360,7 +360,7 @@ as unread by Gnus.") (nnmh-possibly-change-directory group server) (let ((articles (mapcar 'string-to-number (directory-files - nnmh-current-directory nil "^[0-9]+$")))) + nnmh-current-directory nil "\\`[0-9]+\\'")))) (when articles (setcar active (apply 'min articles)) (setcdr active (apply 'max articles)))))) @@ -371,7 +371,7 @@ as unread by Gnus.") ;; Delete all articles in GROUP. (if (not force) () ; Don't delete the articles. - (let ((articles (directory-files nnmh-current-directory t "^[0-9]+$"))) + (let ((articles (directory-files nnmh-current-directory t "\\`[0-9]+\\'"))) (while articles (when (file-writable-p (car articles)) (nnheader-message 5 "Deleting article %s in %s..." @@ -485,7 +485,7 @@ as unread by Gnus.") ;; Find the highest number in the group. (let ((files (sort (mapcar 'string-to-number - (directory-files dir nil "^[0-9]+$")) + (directory-files dir nil "\\`[0-9]+\\'")) '>))) (when files (setcdr active (car files))))) @@ -509,7 +509,7 @@ as unread by Gnus.") (let* ((dir nnmh-current-directory) (files (sort (mapcar 'string-to-number (directory-files nnmh-current-directory - nil "^[0-9]+$" t)) + nil "\\`[0-9]+\\'" t)) '<)) (nnmh-file (concat dir ".nnmh-articles")) new articles) diff --git a/lisp/gnus/nnspool.el b/lisp/gnus/nnspool.el index da13a56001..33b68fa989 100644 --- a/lisp/gnus/nnspool.el +++ b/lisp/gnus/nnspool.el @@ -260,7 +260,7 @@ there.") t) ;; Yes, completely empty spool directories *are* possible. ;; Fix by Sudish Joseph - (when (setq dir (directory-files pathname nil "^[0-9]+$" t)) + (when (setq dir (directory-files pathname nil "\\`[0-9]+\\'" t)) (setq dir (sort (mapcar 'string-to-number dir) '<))) (if dir (nnheader-insert diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el index 2e03608b5d..3da45a2b62 100644 --- a/lisp/gnus/spam-stat.el +++ b/lisp/gnus/spam-stat.el @@ -557,7 +557,7 @@ check the variable `spam-stat-score-data'." (defun spam-stat-process-directory (dir func) "Process all the regular files in directory DIR using function FUNC." - (let* ((files (directory-files dir t "^[^.]")) + (let* ((files (directory-files dir t "\\`[^.]")) (max (/ (length files) 100.0)) (count 0)) (with-temp-buffer @@ -601,7 +601,7 @@ If VERBOSE is non-nil display names of files detected as spam or non-spam in a temporary buffer. If it is the symbol `ham', display non-spam files; otherwise display spam files." (interactive "DDirectory: ") - (let* ((files (directory-files dir t "^[^.]")) + (let* ((files (directory-files dir t "\\`[^.]")) display-files buffer-score (total (length files)) diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 1be8e0ab08..c7d0112cb6 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -623,7 +623,7 @@ FILE is the file where FUNCTION was probably defined." ;; of the *packages* in which the function is defined. (let* ((name (symbol-name symbol)) (re (concat "\\_<" (regexp-quote name) "\\_>")) - (news (directory-files data-directory t "\\`NEWS.[1-9]")) + (news (directory-files data-directory t "\\`NEWS\\.[1-9]")) (place nil) (first nil)) (with-temp-buffer diff --git a/lisp/help.el b/lisp/help.el index 45cbaad4e8..0f1991e318 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -361,7 +361,7 @@ With argument, display info only for the selected version." (setq res (cons (match-string-no-properties 1) res))))) (cons "NEWS" (directory-files data-directory nil - "^NEWS\\.[0-9][-0-9]*$" nil))) + "\\`NEWS\\.[0-9][-0-9]*\\'" nil))) (sort (delete-dups res) #'string>))) (current (car all-versions))) (setq version (completing-read diff --git a/lisp/international/quail.el b/lisp/international/quail.el index 193b1d7c2c..3299cc55a2 100644 --- a/lisp/international/quail.el +++ b/lisp/international/quail.el @@ -3059,7 +3059,7 @@ of each directory." (while quail-dirs (setq dirname (car quail-dirs)) (when dirname - (setq pkg-list (directory-files dirname 'full "\\.el$")) + (setq pkg-list (directory-files dirname 'full "\\.el\\'")) (while pkg-list (with-temp-buffer (insert-file-contents (car pkg-list)) diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el index 2a80d75fe7..4f1bcf2f94 100644 --- a/lisp/international/titdic-cnv.el +++ b/lisp/international/titdic-cnv.el @@ -553,7 +553,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\"." (if (file-directory-p filename) (progn (message "Converting all tit files in the directory %s" filename) - (setq files (directory-files filename t "\\.tit$"))) + (setq files (directory-files filename t "\\.tit\\'"))) (setq files (list filename))) (while files (setq file (expand-file-name (car files))) diff --git a/lisp/mail/mspools.el b/lisp/mail/mspools.el index 9c0c3fe5ca..94b0886c75 100644 --- a/lisp/mail/mspools.el +++ b/lisp/mail/mspools.el @@ -223,7 +223,7 @@ your primary spool is. If this fails, set it to something like ;; So I create a vm-spool-files entry for each of those mail drops (mapcar 'file-name-sans-extension (directory-files mspools-folder-directory nil - (format "^[^.]+\\.%s" mspools-suffix))) + (format "\\`[^.]+\\.%s" mspools-suffix))) )) )) @@ -357,7 +357,7 @@ nil." (if (null mspools-folder-directory) (error "Set `mspools-folder-directory' to where the spool files are")) (setq folders (directory-files mspools-folder-directory nil - (format "^[^.]+\\.%s$" mspools-suffix))) + (format "\\`[^.]+\\.%s\\'" mspools-suffix))) (setq folders (mapcar 'mspools-size-folder folders)) (setq folders (delq nil folders)) (setq mspools-files folders) diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index d798ffa051..3feff803e3 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -474,7 +474,7 @@ the frame where you have the RMAIL buffer displayed." :type 'directory :group 'rmail-files) ;;;###autoload -(defcustom rmail-secondary-file-regexp (purecopy "\\.xmail$") +(defcustom rmail-secondary-file-regexp (purecopy "\\.xmail\\'") "Regexp for which files are secondary Rmail files." :type 'regexp :group 'rmail-files) @@ -4354,7 +4354,8 @@ This has an effect only if a summary buffer exists." (font-lock-fontify-region (point-min) (point-max))))))) ;;; Speedbar support for RMAIL files. -(defcustom rmail-speedbar-match-folder-regexp "^[A-Z0-9]+\\(\\.[A-Z0-9]+\\)?$" +(defcustom rmail-speedbar-match-folder-regexp + "\\`[A-Z0-9]+\\(\\.[A-Z0-9]+\\)?\\'" "Regexp matching Rmail folder names to be displayed in Speedbar. Enabling this permits Speedbar to display your folders for easy browsing, and moving of messages." diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index 1d45604490..92ed98b2a8 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -4170,8 +4170,7 @@ directory, so that Emacs will know its current contents." (ange-ftp-delete-directory file recursive trash) (delete-file file trash))) ;; We do not want to delete "." and "..". - (directory-files - dir 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))) + (directory-files dir 'full (rx (or (not ".") "..."))))) (if parsed (let* ((host (nth 0 parsed)) (user (nth 1 parsed)) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 0ad65fb8bd..4f3249d966 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -2458,7 +2458,7 @@ remote file names." (regexp-opt (mapcar #'file-name-sans-extension - (directory-files dir nil "^tramp.+\\.elc?$")) + (directory-files dir nil "\\`tramp.+\\.elc?\\'")) 'paren)))) (mapatoms (lambda (atom) diff --git a/lisp/obsolete/gulp.el b/lisp/obsolete/gulp.el index 6589ede69d..08ab3884d4 100644 --- a/lisp/obsolete/gulp.el +++ b/lisp/obsolete/gulp.el @@ -94,7 +94,7 @@ is left in the `*gulp*' buffer at the end." (interactive "DRequest updates for Lisp directory: \nP") (with-current-buffer (get-buffer-create gulp-tmp-buffer) (let ((m-p-alist (gulp-create-m-p-alist - (directory-files dir nil "^[^=].*\\.el$" t) + (directory-files dir nil "\\`[^=].*\\.el\\'" t) dir)) ;; Temporarily inhibit undo in the *gulp* buffer. (buffer-undo-list t) diff --git a/lisp/obsolete/vc-arch.el b/lisp/obsolete/vc-arch.el index b186a5c52a..bcdefac518 100644 --- a/lisp/obsolete/vc-arch.el +++ b/lisp/obsolete/vc-arch.el @@ -597,18 +597,20 @@ CALLBACK expects (ENTRIES &optional MORE-TO-COME); see (unless (file-writable-p rl-dir) (error "No writable revlib directory found")) (message "Revlib at %s" rl-dir) - (let* ((archives (directory-files rl-dir 'full "[^.]\\|...")) + (let* ((archives (directory-files rl-dir 'full (rx (or (not ".") "...")))) (categories (apply 'append (mapcar (lambda (dir) (when (file-directory-p dir) - (directory-files dir 'full "[^.]\\|..."))) + (directory-files dir 'full + (rx (or (not ".") "..."))))) archives))) (branches (apply 'append (mapcar (lambda (dir) (when (file-directory-p dir) - (directory-files dir 'full "[^.]\\|..."))) + (directory-files dir 'full + (rx (or (not ".") "..."))))) categories))) (versions (apply 'append diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el index 651561a201..7654c7ebe4 100644 --- a/lisp/org/ob-core.el +++ b/lisp/org/ob-core.el @@ -3055,7 +3055,7 @@ of `org-babel-temporary-directory'." (delete-file file))) ;; We do not want to delete "." and "..". (directory-files org-babel-temporary-directory 'full - "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")) + (rx (or (not ".") "...")))) (delete-directory org-babel-temporary-directory)) (error (message "Failed to remove temporary Org-babel directory %s" diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el index d5820bbfe0..640cb576ef 100644 --- a/lisp/progmodes/ebnf2ps.el +++ b/lisp/progmodes/ebnf2ps.el @@ -1898,7 +1898,7 @@ It's only used when `ebnf-syntax' is `iso-ebnf'." :group 'ebnf-syntactic) -(defcustom ebnf-file-suffix-regexp "\\.[Bb][Nn][Ff]$" +(defcustom ebnf-file-suffix-regexp "\\.[Bb][Nn][Ff]\\'" "Specify file name suffix that contains EBNF. See `ebnf-eps-directory' command." @@ -2731,7 +2731,7 @@ Used in functions `ebnf-reset-style', `ebnf-push-style' and (ebnf-syntax . 'ebnf) (ebnf-iso-alternative-p . nil) (ebnf-iso-normalize-p . nil) - (ebnf-file-suffix-regexp . "\\.[Bb][Nn][Ff]$") + (ebnf-file-suffix-regexp . "\\.[Bb][Nn][Ff]\\'") (ebnf-eps-prefix . "ebnf--") (ebnf-eps-header-font . '(11 Helvetica "Black" "White" bold)) (ebnf-eps-header . nil) diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el index b42e6f73ab..bae2bb6640 100644 --- a/lisp/progmodes/executable.el +++ b/lisp/progmodes/executable.el @@ -155,7 +155,7 @@ See `compilation-error-regexp-alist'.") If PROGRAM is non-nil, use that instead of \"find\"." ;; Pick file to search from location we know (let* ((dir (file-truename data-directory)) - (file (car (directory-files dir nil "^[^.]")))) + (file (car (directory-files dir nil "\\`[^.]")))) (with-temp-buffer (call-process (or program "find") nil diff --git a/lisp/startup.el b/lisp/startup.el index 1f545c6692..5af264e3ef 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1373,10 +1373,10 @@ please check its value") ((not (eq system-type 'windows-nt)) (concat "~" init-file-user "/.emacs")) ;; Else deal with the Windows situation. - ((directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$") + ((directory-files "~" nil "\\`\\.emacs\\(\\.elc?\\)?\\'") ;; Prefer .emacs on Windows. "~/.emacs") - ((directory-files "~" nil "^_emacs\\(\\.elc?\\)?$") + ((directory-files "~" nil "\\`_emacs\\(\\.elc?\\)?\\'") ;; Also support _emacs for compatibility, but warn about it. (push `(initialization ,(format-message diff --git a/lisp/textmodes/refer.el b/lisp/textmodes/refer.el index 2865b42273..8d8223a732 100644 --- a/lisp/textmodes/refer.el +++ b/lisp/textmodes/refer.el @@ -377,7 +377,7 @@ found on the last `refer-find-entry' or `refer-find-next-entry'." dir files) (while (setq dir (car dirs)) (setq files - (append (directory-files dir t "\\.bib$") + (append (directory-files dir t "\\.bib\\'") files)) (setq dirs (cdr dirs))) files)) diff --git a/lisp/url/url-about.el b/lisp/url/url-about.el index fd83ac3436..dde47e94de 100644 --- a/lisp/url/url-about.el +++ b/lisp/url/url-about.el @@ -37,7 +37,7 @@ (mapc (lambda (f) (if (string-match "url-\\(.*\\).el$" f) (push (match-string 1 f) schemes))) - (directory-files d nil "^url-.*\\.el$"))) + (directory-files d nil "\\`url-.*\\.el\\'"))) load-path) (put 'url-extension-protocols 'schemes schemes) schemes))))) diff --git a/lisp/vc/vc-rcs.el b/lisp/vc/vc-rcs.el index 00796e5d63..273f37c10d 100644 --- a/lisp/vc/vc-rcs.el +++ b/lisp/vc/vc-rcs.el @@ -247,7 +247,7 @@ to the RCS command." (setq subdir (expand-file-name "RCS" (file-name-directory file))))) (not (directory-files (file-name-directory file) - nil ".*,v$" t)) + nil ",v\\'" t)) (yes-or-no-p "Create RCS subdirectory? ") (make-directory subdir)) (apply #'vc-do-command "*vc*" 0 "ci" file @@ -312,8 +312,7 @@ whether to remove it." (and (string= (file-name-nondirectory (directory-file-name dir)) "RCS") ;; check whether RCS dir is empty, i.e. it does not ;; contain any files except "." and ".." - (not (directory-files dir nil - "^\\([^.]\\|\\.[^.]\\|\\.\\.[^.]\\).*")) + (not (directory-files dir nil (rx (or (not ".") "...")))) (yes-or-no-p (format "Directory %s is empty; remove it? " dir)) (delete-directory dir))))) diff --git a/test/lisp/net/tramp-archive-tests.el b/test/lisp/net/tramp-archive-tests.el index 3229d2b650..95e41a3f03 100644 --- a/test/lisp/net/tramp-archive-tests.el +++ b/test/lisp/net/tramp-archive-tests.el @@ -669,7 +669,7 @@ This tests also `access-file', `file-readable-p' and `file-regular-p'." (setq attr (directory-files-and-attributes tmp-name 'full)) (dolist (elt attr) (should (equal (file-attributes (car elt)) (cdr elt)))) - (setq attr (directory-files-and-attributes tmp-name nil "^b")) + (setq attr (directory-files-and-attributes tmp-name nil "\\`b")) (should (equal (mapcar #'car attr) '("bar")))) ;; Cleanup. diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 47d51767c5..544bdb5c05 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -3331,7 +3331,7 @@ They might differ only in time attributes or directory size." (tramp--test-file-attributes-equal-p (file-attributes (car elt)) (cdr elt)))) - (setq attr (directory-files-and-attributes tmp-name2 nil "^b")) + (setq attr (directory-files-and-attributes tmp-name2 nil "\\`b")) (should (equal (mapcar #'car attr) '("bar" "boz")))) ;; Cleanup. commit 5f36e21fe519fe98784d230dd65ca2af78444d14 Author: Eli Zaretskii Date: Tue Apr 14 08:38:00 2020 +0300 Clarify the doc string of 'yank' * lisp/simple.el (yank): Mention 'current-kill' in the doc string, so that people could find all the gory details of what is "the most recent kill" for this purpose. (Bug#40375) diff --git a/lisp/simple.el b/lisp/simple.el index da9e04d16a..ea16d1400c 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -5109,10 +5109,11 @@ property, in the way that `yank' does." (defun yank (&optional arg) "Reinsert (\"paste\") the last stretch of killed text. -More precisely, reinsert the most recent kill, which is the -stretch of killed text most recently killed OR yanked. Put point -at the end, and set mark at the beginning without activating it. -With just \\[universal-argument] as argument, put point at beginning, and mark at end. +More precisely, reinsert the most recent kill, which is the stretch of +text most recently killed OR yanked, as returned by `current-kill' (which +see). Put point at the end, and set mark at the beginning without +activating it. With just \\[universal-argument] as argument, put point +at beginning, and mark at end. With argument N, reinsert the Nth most recent kill. This command honors the `yank-handled-properties' and commit 13301d4266d26882f9fe7efe3046accd315d7c55 Author: Amin Bandali Date: Tue Apr 14 00:23:56 2020 -0400 New function erc-track-switch-buffer-other-window * lisp/erc/erc-track.el (erc-track-switch-buffer): Factor out the implementation from here ... (erc-track--switch-buffer): ... to here. (erc-track-switch-buffer-other-window): New function, like `erc-track-switch-buffer', but uses `switch-to-buffer-other-window' instead, to open the buffer in another window. diff --git a/etc/NEWS b/etc/NEWS index f3ef798a42..aba3028184 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1652,6 +1652,11 @@ which better handles surrounding pair of parentheses. which is like 'erc-switch-to-buffer', but opens the buffer in another window. +--- +*** New function 'erc-track-switch-buffer-other-window' +which is like 'erc-track-switch-buffer', but opens the buffer in +another window. + ** EUDC --- diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el index db8ccbb4a7..41d8fc1a98 100644 --- a/lisp/erc/erc-track.el +++ b/lisp/erc/erc-track.el @@ -921,11 +921,7 @@ is relative to `erc-track-switch-direction'." (setq offset 0))) (car (nth offset erc-modified-channels-alist)))) -(defun erc-track-switch-buffer (arg) - "Switch to the next active ERC buffer, or if there are no active buffers, -switch back to the last non-ERC buffer visited. Next is defined by -`erc-track-switch-direction', a negative argument will reverse this." - (interactive "p") +(defun erc-track--switch-buffer (fun arg) (if (not erc-track-mode) (message (concat "Enable the ERC track module if you want to use the" " tracking minor mode")) @@ -934,12 +930,30 @@ switch back to the last non-ERC buffer visited. Next is defined by (unless (eq major-mode 'erc-mode) (setq erc-track-last-non-erc-buffer (current-buffer))) ;; and jump to the next active channel - (switch-to-buffer (erc-track-get-active-buffer arg))) + (funcall fun (erc-track-get-active-buffer arg))) ;; if no active channels, switch back to what we were doing before ((and erc-track-last-non-erc-buffer - erc-track-switch-from-erc - (buffer-live-p erc-track-last-non-erc-buffer)) - (switch-to-buffer erc-track-last-non-erc-buffer))))) + erc-track-switch-from-erc + (buffer-live-p erc-track-last-non-erc-buffer)) + (funcall fun erc-track-last-non-erc-buffer))))) + +(defun erc-track-switch-buffer (arg) + "Switch to the next active ERC buffer. +If there are no active ERC buffers, switch back to the last +non-ERC buffer visited. The order of buffers is defined by +`erc-track-switch-direction', and a negative argument will +reverse it." + (interactive "p") + (erc-track--switch-buffer 'switch-to-buffer arg)) + +(defun erc-track-switch-buffer-other-window (arg) + "Switch to the next active ERC buffer in another window. +If there are no active ERC buffers, switch back to the last +non-ERC buffer visited. The order of buffers is defined by +`erc-track-switch-direction', and a negative argument will +reverse it." + (interactive "p") + (erc-track--switch-buffer 'switch-to-buffer-other-window arg)) (provide 'erc-track) commit 38f7538d8f62ee287e8271d048f1230d840c11a0 Author: Amin Bandali Date: Mon Apr 13 23:21:34 2020 -0400 New function erc-switch-to-buffer-other-window * lisp/erc/erc.el (erc-switch-to-buffer): Factor out the buffer choice implementation from here ... (erc--switch-to-buffer): ... to here. (erc-switch-to-buffer-other-window): New function, like `erc-switch-to-buffer', but uses `switch-to-buffer-other-window' instead, to open the buffer in another window. diff --git a/etc/NEWS b/etc/NEWS index f4edfaf9be..f3ef798a42 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1647,6 +1647,11 @@ adjacent to an apostrophe, like "nick's". *** Set 'erc-button-url-regexp' to 'browse-url-button-regexp' which better handles surrounding pair of parentheses. +--- +*** New function 'erc-switch-to-buffer-other-window' +which is like 'erc-switch-to-buffer', but opens the buffer in another +window. + ** EUDC --- diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 5c63382d86..cc5226bf6e 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -1762,29 +1762,38 @@ nil." res))) (define-obsolete-function-alias 'erc-iswitchb 'erc-switch-to-buffer "25.1") +(defun erc--switch-to-buffer (&optional arg) + (read-buffer "Switch to ERC buffer: " + (when (boundp 'erc-modified-channels-alist) + (buffer-name (caar (last erc-modified-channels-alist)))) + t + ;; Only allow ERC buffers in the same session. + (let ((proc (unless arg erc-server-process))) + (lambda (bufname) + (let ((buf (if (consp bufname) + (cdr bufname) (get-buffer bufname)))) + (when buf + (erc--buffer-p buf (lambda () t) proc) + (with-current-buffer buf + (and (derived-mode-p 'erc-mode) + (or (null proc) + (eq proc erc-server-process)))))))))) (defun erc-switch-to-buffer (&optional arg) - "Prompt for a ERC buffer to switch to. -When invoked with prefix argument, use all erc buffers. Without prefix -ARG, allow only buffers related to same session server. + "Prompt for an ERC buffer to switch to. +When invoked with prefix argument, use all ERC buffers. Without +prefix ARG, allow only buffers related to same session server. If `erc-track-mode' is in enabled, put the last element of `erc-modified-channels-alist' in front of the buffer list." (interactive "P") - (switch-to-buffer - (read-buffer "Switch to ERC buffer: " - (when (boundp 'erc-modified-channels-alist) - (buffer-name (caar (last erc-modified-channels-alist)))) - t - ;; Only allow ERC buffers in the same session. - (let ((proc (unless arg erc-server-process))) - (lambda (bufname) - (let ((buf (if (consp bufname) - (cdr bufname) (get-buffer bufname)))) - (when buf - (erc--buffer-p buf (lambda () t) proc) - (with-current-buffer buf - (and (derived-mode-p 'erc-mode) - (or (null proc) - (eq proc erc-server-process))))))))))) + (switch-to-buffer (erc--switch-to-buffer arg))) +(defun erc-switch-to-buffer-other-window (&optional arg) + "Prompt for an ERC buffer to switch to in another window. +When invoked with prefix argument, use all ERC buffers. Without +prefix ARG, allow only buffers related to same session server. +If `erc-track-mode' is in enabled, put the last element of +`erc-modified-channels-alist' in front of the buffer list." + (interactive "P") + (switch-to-buffer-other-window (erc--switch-to-buffer arg))) (defun erc-channel-list (proc) "Return a list of channel buffers.