commit 0c8abe8bb5072c46a93585cb325c249f85f3d9c2 (HEAD, refs/remotes/origin/master) Author: Jared Finder Date: Wed Feb 19 09:41:44 2025 +0200 * lisp/subr.el (read-key): Add 'tab-line' (bug#76408). diff --git a/lisp/subr.el b/lisp/subr.el index fc438832340..e9b49ae5376 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -3448,7 +3448,7 @@ only unbound fallback disabled is downcasing of the last event." nil nil t))) (key (aref keys 0))) (if (and (> (length keys) 1) - (memq key '(mode-line header-line + (memq key '(mode-line header-line tab-line left-fringe right-fringe))) (aref keys 1) key))) commit 23bf94a0111474419ca84145c8ede95c6915bd35 Author: Gerd Möllmann Date: Wed Feb 19 08:33:32 2025 +0100 Don't call x-popup-function for non-tty frames * src/menu.c (x_popup_menu_1): Don't call x-popup-function for non-tty frames (syms_of_menu): Remove Qx_popup_menu_function because unused, extend doc string of x-popup-menu-function. diff --git a/src/menu.c b/src/menu.c index 11a0a10d87d..d98135afbfd 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1111,9 +1111,6 @@ into menu items. */) Lisp_Object x_popup_menu_1 (Lisp_Object position, Lisp_Object menu) { - if (!NILP (Vx_popup_menu_function)) - return calln (Vx_popup_menu_function, position, menu); - Lisp_Object keymap, tem, tem2 = Qnil; int xpos = 0, ypos = 0; Lisp_Object title; @@ -1411,8 +1408,13 @@ x_popup_menu_1 (Lisp_Object position, Lisp_Object menu) doesn't have its hooks set (e.g., in a batch session), because such a frame cannot display menus. */ if (!FRAME_INITIAL_P (f)) - selection = FRAME_TERMINAL (f)->menu_show_hook (f, xpos, ypos, menuflags, - title, &error_name); + { + if (FRAME_TERMCAP_P (f) && !NILP (Vx_popup_menu_function)) + selection = calln (Vx_popup_menu_function, position, menu); + else + selection = FRAME_TERMINAL (f)->menu_show_hook (f, xpos, ypos, menuflags, + title, &error_name); + } unbind_to (specpdl_count, Qnil); @@ -1617,7 +1619,6 @@ syms_of_menu (void) DEFSYM (Qhide, "hide"); DEFSYM (Qx_pre_popup_menu_hook, "x-pre-popup-menu-hook"); - DEFSYM (Qx_popup_menu_function, "x-popup-menu-function"); DEFVAR_LISP ("x-pre-popup-menu-hook", Vx_pre_popup_menu_hook, doc: /* Hook run before `x-popup-menu' displays a popup menu. @@ -1627,8 +1628,9 @@ won't be run if `x-popup-menu' fails or returns for some other reason Vx_pre_popup_menu_hook = Qnil; DEFVAR_LISP ("x-popup-menu-function", Vx_popup_menu_function, - doc: /* Function to call to pop up a menu. -The function is called like `x-popup-menu'. */); + doc : /* Function to call to pop up a menu. + The function is called like `x-popup-menu'. This is currently only + used for frames on text terminals. */); Vx_popup_menu_function = Qnil; defsubr (&Sx_popup_menu); commit 4fb5ff5426a994aa139614639f60333fd07c06b4 Merge: 1194ebe3a71 e97be722d39 Author: Po Lu Date: Wed Feb 19 15:36:08 2025 +0800 Merge from savannah/emacs-30 e97be722d39 Properly move existing tooltips on Android 0cf3d341522 ; * ChangeLog.4: Reformat down to 28 March 2024. ccaa0be8e71 ; * ChangeLog.4: Check in ommitted change. b5410cbea2e ; * ChangeLog.4: Fix log entries down to the 1 May 2024. be7625cae73 ; Fix typos d447cd9fcc0 ; * ChangeLog.4: Update. 5dc2a573750 ; * admin/authors.el (authors-ignored-files): Ignore gnus... commit e97be722d392056b6ef9e47664273ee2ca7df374 (refs/remotes/origin/emacs-30) Author: Po Lu Date: Wed Feb 19 15:34:51 2025 +0800 Properly move existing tooltips on Android * java/org/gnu/emacs/EmacsWindow.java (requestViewLayout): If an override redirect window, additionally notify the window manager of layout changes. diff --git a/java/org/gnu/emacs/EmacsWindow.java b/java/org/gnu/emacs/EmacsWindow.java index fec95526835..2f4e378fb78 100644 --- a/java/org/gnu/emacs/EmacsWindow.java +++ b/java/org/gnu/emacs/EmacsWindow.java @@ -365,8 +365,17 @@ private static class Coordinate run () { if (overrideRedirect) - /* Set the layout parameters again. */ - view.setLayoutParams (getWindowLayoutParams ()); + { + WindowManager.LayoutParams params; + + /* Set the layout parameters again. */ + params = getWindowLayoutParams (); + view.setLayoutParams (params); + + /* Announce this update to the window server. */ + if (windowManager != null) + windowManager.updateViewLayout (view, params); + } view.mustReportLayout = true; view.requestLayout (); commit 0cf3d3415224204c82efda373ffc7055163b1893 Author: Po Lu Date: Wed Feb 19 15:33:59 2025 +0800 ; * ChangeLog.4: Reformat down to 28 March 2024. diff --git a/ChangeLog.4 b/ChangeLog.4 index 9b553d2c24e..6d894d68f2b 100644 --- a/ChangeLog.4 +++ b/ChangeLog.4 @@ -190,7 +190,7 @@ 2025-01-30 Eli Zaretskii - * src/puresize.h (BASE_PURESIZE): Increase (bug#75907). + * src/puresize.h (BASE_PURESIZE): Increase. (bug#75907) 2025-01-28 Stefan Kangas @@ -398,7 +398,7 @@ Add "text" as a thing in tsx-ts-mode * lisp/progmodes/typescript-ts-mode.el (tsx-ts-mode): Add - definition of "text" (bug#75422). + definition of "text". (bug#75422) 2025-01-09 Nikolaos Chatzikonstantinou @@ -16197,23 +16197,23 @@ (INTERVAL_GENERALLY_WRITABLE_P, INTERVAL_EXPRESSLY_WRITABLE_P): ... two new macros. - * src/textprop.c (verify_interval_modification): If the buffer - is read only, verify not that there is only a single exempting - interval spanning the area of a multiple-character operation, - but that every intervening interval in such an operation exempts - it from write restrictions, either by providing a read-only - property that appears in Vinhibit_read_only, or by providing an + * src/textprop.c (verify_interval_modification): If the buffer is + read only, verify not that there is only a single exempting + interval spanning the area of a multiple-character operation, but + that every intervening interval in such an operation exempts it + from write restrictions, either by providing a read-only property + that appears in Vinhibit_read_only, or by providing an inhibit-read-only property. - * test/src/textprop-tests.el (textprop-interval-immutability): - New test. + * test/src/textprop-tests.el (textprop-interval-immutability): New + test. 2024-04-30 Paul Eggert Work around bad GCC diagnostic in select_window - * src/textconv.c (select_window): Add an eassume to work - around GCC bug 114893. + * src/textconv.c (select_window): Add an eassume to work around + GCC bug 114893. 2024-04-30 Paul Eggert @@ -16226,15 +16226,15 @@ Pacify GCC 14 -Wstring-operflow in ftfont.c * src/ftfont.c (ftfont_drive_otf): Do not crash if - spec->features[i] is nonnull but is empty. - Use gfeatures local to pacify GCC 14. + spec->features[i] is nonnull but is empty. Use gfeatures local to + pacify GCC 14. 2024-04-30 Paul Eggert Pacify GCC 14 -Wnull-dereference in intervals.c - * src/intervals.c (set_intervals_multibyte_1): - Add an eassume to pacify GCC. Deparenthesisze. + * src/intervals.c (set_intervals_multibyte_1): Add an eassume to + pacify GCC. Deparenthesisze. 2024-04-30 Paul Eggert @@ -16242,8 +16242,8 @@ * src/lisp.h (tim_sort): Require array arg to be nonnull. * src/sort.c (reverse_slice): Omit no-longer-needed eassert. - (tim_sort): Avoid undefined behavior when length == 0, - since reverse_slice would then compute &seq[-1]. + (tim_sort): Avoid undefined behavior when length == 0, since + reverse_slice would then compute &seq[-1]. 2024-04-30 Paul Eggert @@ -16256,14 +16256,15 @@ Pacify GCC 14 -Wnull-dereference * src/xterm.c (x_dpyinfo): New function, which acts like - x_display_info_for_display except it always returns nonnull. - This simplifies callers and pacifies GCC 14. All callers changed. + x_display_info_for_display except it always returns nonnull. This + simplifies callers and pacifies GCC 14. All callers changed. 2024-04-30 Paul Eggert Pacify GCC 14 -Walloc-size - * src/xfns.c (xic_string_conversion_callback): Allocate size 1, not 0. + * src/xfns.c (xic_string_conversion_callback): Allocate size 1, + not 0. 2024-04-30 Paul Eggert @@ -16277,18 +16278,17 @@ etags: fix #line parsing (\\", long lines) - * lib-src/etags.c (readline): Don’t mishandle lines like - ‘#line 1 "a//"’, which has an escaped backslash before ‘"’. - Don’t mishandle lines so long that sscanf overflows %n. + * lib-src/etags.c (readline): Don’t mishandle lines like ‘#line 1 + "a//"’, which has an escaped backslash before ‘"’. Don’t + mishandle lines so long that sscanf overflows %n. 2024-04-30 Paul Eggert Simplify etags.c by omitting a macro - * lib-src/etags.c (xnew): Remove. All uses removed. - xnew was confusing, as sometimes it was used with n=1, - sometimes with Type=char, and it’s easier just to use xmalloc - or xnmalloc. + * lib-src/etags.c (xnew): Remove. All uses removed. xnew was + confusing, as sometimes it was used with n=1, sometimes with + Type=char, and it’s easier just to use xmalloc or xnmalloc. 2024-04-30 Michael Albinus @@ -16306,7 +16306,8 @@ 2024-04-30 Andrea Corallo - * lisp/emacs-lisp/regexp-opt.el (regexp-opt): Fix type declaration. + * lisp/emacs-lisp/regexp-opt.el (regexp-opt): Fix type + declaration. 2024-04-30 Po Lu @@ -16315,8 +16316,7 @@ * lisp/net/eww.el (eww-check-text-conversion): Fix doc string. (eww-mode): Specify face, eww-form and field as nonsticky properties by default. - (eww-tag-textarea, eww-form-text): Render properties - front-sticky. + (eww-tag-textarea, eww-form-text): Render properties front-sticky. (eww-process-text-input): Use field functions to compute field bounds. @@ -16324,23 +16324,24 @@ Use the nthcdr byte-op for drop, and raise open-code limit - * lisp/emacs-lisp/byte-opt.el (byte-optimize-nthcdr): - Open-code for any integral N<5. Always use the byte-op otherwise. + * lisp/emacs-lisp/byte-opt.el (byte-optimize-nthcdr): Open-code + for any integral N<5. Always use the byte-op otherwise. 2024-04-29 Eric Abrahamsen Add (semi-redundant) fix to nnatom backend declaration - * lisp/gnus/gnus.el (gnus-valid-select-methods): We need a value for - post/mail/none in order to conform to the option type. - * lisp/gnus/nnatom.el: This call to gnus-declare-backend does the exact - same thing as above, and needs to be adjusted accordingly. + * lisp/gnus/gnus.el (gnus-valid-select-methods): We need a value + for post/mail/none in order to conform to the option type. + * lisp/gnus/nnatom.el: This call to gnus-declare-backend does the + exact same thing as above, and needs to be adjusted accordingly. 2024-04-29 Andrea Corallo Rename property 'declared-type' to 'function-type' - * lisp/emacs-lisp/byte-run.el (byte-run--set-function-type): Rename. + * lisp/emacs-lisp/byte-run.el (byte-run--set-function-type): + Rename. (defun-declarations-alist): Update. * lisp/emacs-lisp/comp.el (comp--get-function-cstr): Likewise. @@ -16349,26 +16350,26 @@ (disassemble-internal): Handle new function values * lisp/emacs-lisp/disass.el (disassemble-internal): Fix the - `interpreted-function` case. + `interpreted-function' case. 2024-04-29 Stefan Monnier - oclosure-tests.el: Adjust to new `interpreted-function` type + oclosure-tests.el: Adjust to new `interpreted-function' type - * test/lisp/emacs-lisp/oclosure-tests.el (oclosure-test-gen): Adjust to - new `interpreted-function` type. + * test/lisp/emacs-lisp/oclosure-tests.el (oclosure-test-gen): + Adjust to new `interpreted-function' type. (oclosure-test): Tweak accordingly. 2024-04-29 Andrea Corallo - * Document function type declarations + Document function type declarations - * doc/lispref/functions.texi (Declare Form): Document function type - declaration. + * doc/lispref/functions.texi (Declare Form): Document function + type declaration. 2024-04-29 Andrea Corallo - Move lisp function arg type declarations to the functions itself + Move lisp function arg type declarations to the functions itself * lisp/emacs-lisp/comp-common.el (comp-primitive-type-specifiers): Remove type declaration of lisp functions. @@ -16382,7 +16383,8 @@ * lisp/env.el (getenv): Likewise. * lisp/emacs-lisp/regexp-opt.el (regexp-opt): Likewise. * lisp/emacs-lisp/lisp.el (buffer-end): Likewise. - * lisp/emacs-lisp/comp.el (comp-hint-fixnum, comp-hint-cons): Likewise. + * lisp/emacs-lisp/comp.el (comp-hint-fixnum, comp-hint-cons): + Likewise. * lisp/custom.el (custom-variable-p): Likewise. 2024-04-29 Andrea Corallo @@ -16392,60 +16394,63 @@ * lisp/emacs-lisp/comp.el (comp-primitive-func-cstr-h): Rename. (comp--get-function-cstr): Define new function. (comp--add-call-cstr, comp--fwprop-call): Update. - * lisp/emacs-lisp/comp-common.el (comp-function-type-spec): Update. + * lisp/emacs-lisp/comp-common.el (comp-function-type-spec): + Update. * lisp/help-fns.el (help-fns--signature): Mention when a type is declared. * lisp/emacs-lisp/comp.el (comp-primitive-func-cstr-h): Rename. 2024-04-29 Stefan Monnier - (byte-compile): Fix interaction with old `advice.el` + (byte-compile): Fix interaction with old `advice.el' * lisp/emacs-lisp/bytecomp.el (byte-compile): Handle symbols whose - function "value" is a bare lambda expression (bug#70368). + function "value" is a bare lambda expression. (bug#70368) 2024-04-29 Andrea Corallo - * Add function type declarations for Lisp functions + Add function type declarations for Lisp functions - * lisp/emacs-lisp/byte-run.el (byte-run--set-declared-type): Add alias. + * lisp/emacs-lisp/byte-run.el (byte-run--set-declared-type): Add + alias. (defun-declarations-alist): Use it for 'type' declaration. 2024-04-29 Mattias Engdegård - Declare the variable `rx-constituents` obsolete. + Declare the variable `rx-constituents' obsolete. It has been effectively obsolete since Emacs 27, when the modern extension mechanism was introduced. * lisp/emacs-lisp/rx.el (rx-constituents): Make obsolete. - * test/lisp/emacs-lisp/rx-tests.el (rx-constituents): Suppress warning. + * test/lisp/emacs-lisp/rx-tests.el (rx-constituents): Suppress + warning. * etc/NEWS: Announce. 2024-04-29 Mattias Engdegård Add NEWS.unknown file to correct versions of introduction - It is not intended for the human reader, but to give less wrong versions - of first appearance displayed by `describe-function` or - `describe-variable` that would otherwise be derived from a notice in a - more recent NEWS* file. + It is not intended for the human reader, but to give less wrong + versions of first appearance displayed by `describe-function' or + `describe-variable' that would otherwise be derived from a notice + in a more recent NEWS* file. - It is better to add items to this file than changing historical NEWS* - files when the actual version of introduction is not known. + It is better to add items to this file than changing historical + NEWS* files when the actual version of introduction is not known. - * etc/NEWS.unknown: New file. Add entry for `nthcdr`. + * etc/NEWS.unknown: New file. Add entry for `nthcdr'. 2024-04-29 Mattias Engdegård - Add `drop` as alias for `nthcdr` + Add `drop' as alias for `nthcdr' It's a common name for this function and symmetric with respect to - `take`. It's also a lot less awkward to type and say. + `take'. It's also a lot less awkward to type and say. * lisp/subr.el (drop): New alias. * doc/lispref/lists.texi (List Elements): Document. Mention the - equation tying `take` and `drop` together. + equation tying `take' and `drop' together. * etc/NEWS: Announce. 2024-04-29 Mattias Engdegård @@ -16453,15 +16458,15 @@ Fix value< string comparison ungoodthink * src/fns.c (string_cmp): Fix bad comparisons for certain strings. - This only affected `value<` for aggregates, not `string<`. + This only affected `value<' for aggregates, not `string<'. * test/src/fns-tests.el (fns-value<-ordered): Add test cases. 2024-04-29 Visuwesh Fix errors in 'shr-correct-dom-case' - * lisp/net/shr.el (shr-correct-dom-case): Don't assume each CHILD is - a cons cell. (Bug#70626) + * lisp/net/shr.el (shr-correct-dom-case): Don't assume each CHILD + is a cons cell. (Bug#70626) 2024-04-29 Po Lu @@ -16474,8 +16479,8 @@ * lisp/net/eww.el (eww-check-text-conversion): New function. (eww-mode): Install it as a local post-command-hook. - (eww-submit-map, eww-submit-file, eww-checkbox-map): Bind - suitable commands to mouse-2. + (eww-submit-map, eww-submit-file, eww-checkbox-map): Bind suitable + commands to mouse-2. (eww-form-submit, eww-form-checkbox, eww-form-file) (eww-tag-select): Disguise inserted forms as buttons, that touch event translation may prefer their bindings to mouse-2 over @@ -16493,14 +16498,13 @@ Take fields into account during text conversion - * lisp/cus-edit.el (Custom-mode): Enable text conversion, now - that fields are correctly treated. + * lisp/cus-edit.el (Custom-mode): Enable text conversion, now that + fields are correctly treated. * src/alloc.c (mark_frame): Mark f->conversion.field. - * src/androidterm.c (android_update_selection): Adjust - conversion region and selection position by the field start and - end. + * src/androidterm.c (android_update_selection): Adjust conversion + region and selection position by the field start and end. * src/editfns.c (find_field): Export function. @@ -16511,8 +16515,8 @@ * src/lisp.h (find_fields, reset_frame_conversion): Export functions. - * src/minibuf.c (Fread_from_minibuffer): Reset frame conversion - if Voverriding_text_conversion_style is set. + * src/minibuf.c (Fread_from_minibuffer): Reset frame conversion if + Voverriding_text_conversion_style is set. * src/textconv.c (textconv_query): Narrow to field. (reset_frame_conversion): New function. @@ -16543,11 +16547,11 @@ Use a dedicated type to represent interpreted-function values - Change `function` so that when evaluating #'(lambda ...) - we return an object of type `interpreted-function` rather than - a list starting with one of `lambda` or `closure`. - The new type reuses the existing PVEC_CLOSURE (nee PVEC_COMPILED) - tag and tries to align the corresponding elements: + Change `function' so that when evaluating #'(lambda ...) we + return an object of type `interpreted-function' rather than a list + starting with one of `lambda' or `closure'. The new type reuses + the existing PVEC_CLOSURE (nee PVEC_COMPILED) tag and tries to + align the corresponding elements: - the arglist, the docstring, and the interactive-form go in the same slots as for byte-code functions. @@ -16555,124 +16559,132 @@ - the lexical context goes in the slot used for the constants of bytecoded functions. - The first point above means that `help-function-arglist`, - `documentation`, and `interactive-form`s don't need to - distinguish interpreted and bytecode functions any more. + The first point above means that `help-function-arglist', + `documentation', and `interactive-form's don't need to distinguish + interpreted and bytecode functions any more. Main benefits of the change: - We can now reliably distinguish a list from a function value. - - `cl-defmethod` can dispatch on `interactive-function` and `closure`. - Dispatch on `function` also works now for interpreted functions but still - won't work for functions represented as lists or as symbols, of course. + - `cl-defmethod' can dispatch on `interactive-function' and `closure'. + Dispatch on `function' also works now for interpreted functions + but still won't work for functions represented as lists or as + symbols, of course. - Function values are now self-evaluating. That was alrready the case when byte-compiled, but not when interpreted since (eval '(closure ...)) signals a void-function error. - That also avoids false-positive warnings about "don't quote your lambdas" - when doing things like `(mapcar ',func ...)`. + That also avoids false-positive warnings about "don't quote your + lambdas" when doing things like "(mapcar ',func ...)". * src/eval.c (Fmake_interpreted_closure): New function. (Ffunction): Use it and change calling convention of - `Vinternal_make_interpreted_closure_function`. + `Vinternal_make_interpreted_closure_function'. (FUNCTIONP, Fcommandp, eval_sub, funcall_general, funcall_lambda) (Ffunc_arity, lambda_arity): Simplify. (funcall_lambda): Adjust to new representation. - (syms_of_eval): `defsubr` the new function. Remove definition of `Qclosure`. + (syms_of_eval): `defsubr' the new function. Remove definition of + `Qclosure'. * lisp/emacs-lisp/cconv.el (cconv-make-interpreted-closure): - Change calling convention and use `make-interpreted-closure`. + Change calling convention and use `make-interpreted-closure'. - * src/data.c (Fcl_type_of): Distinguish `byte-code-function`s from - `interpreted-function`s. + * src/data.c (Fcl_type_of): Distinguish `byte-code-function's from + `interpreted-function's. (Fclosurep, finterpreted_function_p): New functions. - (Fbyte_code_function_p): Don't be confused by `interpreted-function`s. + (Fbyte_code_function_p): Don't be confused by + `interpreted-function's. (Finteractive_form, Fcommand_modes): Simplify. - (syms_of_data): Define new type symbols and `defsubr` the two - new functions. + (syms_of_data): Define new type symbols and `defsubr' the two new + functions. - * lisp/emacs-lisp/cl-print.el (cl-print-object) : - New method. + * lisp/emacs-lisp/cl-print.el (cl-print-object) + : New method. - * lisp/emacs-lisp/oclosure.el (oclosure): Refine the parent - to be `closure`. + * lisp/emacs-lisp/oclosure.el (oclosure): Refine the parent to be + `closure'. (oclosure--fix-type, oclosure-type): Simplify. - (oclosure--copy, oclosure--get, oclosure--set): Adjust to - new representation. + (oclosure--copy, oclosure--get, oclosure--set): Adjust to new + representation. * src/callint.c (Fcall_interactively): Adjust to new representation. * src/lread.c (bytecode_from_rev_list): * lisp/simple.el (function-documentation): - * lisp/help.el (help-function-arglist): Remove the old `closure` case - and adjust the byte-code case so it handles `interpreted-function`s. + * lisp/help.el (help-function-arglist): Remove the old `closure' + case and adjust the byte-code case so it handles + `interpreted-function's. * lisp/emacs-lisp/cl-preloaded.el (closure): New type. (byte-code-function): Add it as a parent. (interpreted-function): Adjust parent (the type itself was already added earlier by accident). - * lisp/emacs-lisp/bytecomp.el (byte-compile--reify-function): Adjust to - new representation. - (byte-compile): Use `interpreted-function-p`. + * lisp/emacs-lisp/bytecomp.el (byte-compile--reify-function): + Adjust to new representation. + (byte-compile): Use `interpreted-function-p'. * lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand): Adjust to new representation. - (side-effect-free-fns): Add `interpreted-function-p` and `closurep`. + (side-effect-free-fns): Add `interpreted-function-p' and + `closurep'. * src/profiler.c (trace_hash, ffunction_equal): Simplify. * lisp/profiler.el (profiler-function-equal): Simplify. - * lisp/emacs-lisp/nadvice.el (advice--interactive-form-1): - Use `interpreted-function-p`; adjust to new representation; and take - advantage of the fact that function values are now self-evaluating. + * lisp/emacs-lisp/nadvice.el (advice--interactive-form-1): Use + `interpreted-function-p'; adjust to new representation; and take + advantage of the fact that function values are now + self-evaluating. - * lisp/emacs-lisp/lisp-mode.el (closure): - Remove `lisp-indent-function` property. + * lisp/emacs-lisp/lisp-mode.el (closure): Remove + `lisp-indent-function' property. - * lisp/emacs-lisp/disass.el (disassemble-internal): Adjust to - new representation. - * lisp/emacs-lisp/edebug.el (edebug--strip-instrumentation): - Use `interpreted-function-p`. - * lisp/emacs-lisp/comp-common.el (comp-known-type-specifiers): - Add `closurep` and `interpreted-function-p`. + * lisp/emacs-lisp/disass.el (disassemble-internal): Adjust to new + representation. + * lisp/emacs-lisp/edebug.el (edebug--strip-instrumentation): Use + `interpreted-function-p'. + * lisp/emacs-lisp/comp-common.el (comp-known-type-specifiers): Add + `closurep' and `interpreted-function-p'. - * test/lisp/help-fns-tests.el (help-fns-test-lisp-defun): Adjust to - more precise type info in `describe-function`. - * test/lisp/erc/resources/erc-d/erc-d-tests.el (erc-d--render-entries): - Use `interpreted-function-p`. + * test/lisp/help-fns-tests.el (help-fns-test-lisp-defun): Adjust + to more precise type info in `describe-function'. + * test/lisp/erc/resources/erc-d/erc-d-tests.el + (erc-d--render-entries): Use `interpreted-function-p'. * test/lisp/emacs-lisp/macroexp-resources/vk.el (vk-f4, vk-f5): Don't hardcode function values. - * doc/lispref/functions.texi (Anonymous Functions): Don't suggest that - function values are lists. Reword "self-quoting" to reflect the - fact that #' doesn't return the exact same object. Update examples - with the new shape of the return value. + * doc/lispref/functions.texi (Anonymous Functions): Don't suggest + that function values are lists. Reword "self-quoting" to reflect + the fact that #' doesn't return the exact same object. Update + examples with the new shape of the return value. * doc/lispref/variables.texi (Lexical Binding): * doc/lispref/lists.texi (Rearrangement): - * doc/lispref/control.texi (Handling Errors): Update examples to reflect - new representation of function values. + * doc/lispref/control.texi (Handling Errors): Update examples to + reflect new representation of function values. 2024-04-28 Stefan Monnier (COMPILED): Rename to CLOSURE - In preparation for the use of `PVEC_COMPILED` objects for + In preparation for the use of `PVEC_COMPILED' objects for interpreted functions, rename them to use a more neutral name. - * src/lisp.h (enum pvec_type): Rename `PVEC_COMPILED` to `PVEC_CLOSURE`. - (enum Lisp_Compiled): Use `CLOSURE_` prefix i.s.o `COMPILED_`. + * src/lisp.h (enum pvec_type): Rename `PVEC_COMPILED' to + `PVEC_CLOSURE'. + (enum Lisp_Compiled): Use `CLOSURE_' prefix i.s.o `COMPILED_'. Also use `CODE` rather than `BYTECODE`. - (CLOSUREP): Rename from `COMPILEDP`. - (enum Lisp_Closure): Rename from `Lisp_Compiled`. + (CLOSUREP): Rename from `COMPILEDP'. + (enum Lisp_Closure): Rename from `Lisp_Compiled'. * src/alloc.c, src/bytecode.c, src/comp.c, src/data.c, src/eval.c, * src/fns.c, src/lisp.h, src/lread.c, src/pdumper.c, src/print.c, * src/profiler.c: Rename all uses accordingly. - * src/.gdbinit (xclosure): Rename from `xcompiled`. + * src/.gdbinit (xclosure): Rename from `xcompiled'. (xcompiled): New obsolete alias. - (xpr): Adjust accordingly. Also adjust to new PVEC_CLOSURE tag name. + (xpr): Adjust accordingly. Also adjust to new PVEC_CLOSURE tag + name. 2024-04-28 Mattias Engdegård @@ -16682,8 +16694,8 @@ Implement dots and dashes on PGTK - * src/image.c (image_create_bitmap_from_file) [HAVE_PGTK]: - Remove unused variable. + * src/image.c (image_create_bitmap_from_file) [HAVE_PGTK]: Remove + unused variable. * src/pgtkterm.c (pgtk_draw_dash, pgtk_fill_underline) (pgtk_draw_glyph_string): New functions, ported from X. @@ -16701,8 +16713,6 @@ 2024-04-28 Po Lu - Fix the Haiku build - * src/haikuterm.c (haiku_draw_text_decoration): Remove stray closing parenthesis. @@ -16713,14 +16723,14 @@ * java/org/gnu/emacs/EmacsDrawLine.java (EmacsDrawLine) (measureLine, polyDashPattern): New function. (perform): Delegate to polyDashPattern if the line style is not - LineSolid. Also simplify now that anti-aliasing need no longer - be taken into account. + LineSolid. Also simplify now that anti-aliasing need no longer be + taken into account. * java/org/gnu/emacs/EmacsDrawRectangle.java (perform): Mention omission in commentary. - * java/org/gnu/emacs/EmacsGC.java (EmacsGC): Disable - anti-aliasing in default paint object. + * java/org/gnu/emacs/EmacsGC.java (EmacsGC): Disable anti-aliasing + in default paint object. : New fields. (markDirty): Apply stroke width. @@ -16757,17 +16767,16 @@ Implement dots and dashes on X * src/dispextern.h (enum face_underline_type): Indent and expand - commentary as to the new dependency on the order of its - enumerals. + commentary as to the new dependency on the order of its enumerals. * src/xfaces.c (realize_gui_face): Enable dots and dashes on window systems. - * src/xterm.c (x_draw_underwave): Don't define unused variable - on Cairo builds. + * src/xterm.c (x_draw_underwave): Don't define unused variable on + Cairo builds. (x_draw_dash): New function; implement for X and Cairo. - (x_fill_underline): New function. Delegate to x_fill_rectangle - or x_draw_dash as appropriate. + (x_fill_underline): New function. Delegate to x_fill_rectangle or + x_draw_dash as appropriate. (x_draw_glyph_string): Call x_fill_underline rather than x_fill_rectangle. @@ -16791,8 +16800,8 @@ * src/w32term.c (w32_draw_glyph_string): Synchronize with X. - * src/xfaces.c (realize_gui_face): Enable `double-line' on - window systems. + * src/xfaces.c (realize_gui_face): Enable `double-line' on window + systems. 2024-04-27 Eli Zaretskii @@ -16844,16 +16853,16 @@ Fix `find-grep-dired' with default OpenBSD's Grep - * lisp/find-dired.el (find-grep-options): Use '-q' on - OpenBSD as well. (Bug#70550) + * lisp/find-dired.el (find-grep-options): Use '-q' on OpenBSD as + well. (Bug#70550) 2024-04-27 Daniel Pettersson Shut down jsonrpc server more gracefully * lisp/jsonrpc.el (jsonrpc-running-p): Avoid unnecessarily killing - the server process. Suggested by Aaron Zeng . - (Bug#70522) + the server process. Suggested by Aaron Zeng + . (Bug#70522) 2024-04-27 Eli Zaretskii @@ -16923,8 +16932,8 @@ This should fix the failing filling test for c-ts-mode. - * lisp/progmodes/c-ts-common.el (c-ts-common--fill-paragraph): Don't - go back to indentation. + * lisp/progmodes/c-ts-common.el (c-ts-common--fill-paragraph): + Don't go back to indentation. 2024-04-27 Po Lu @@ -16940,13 +16949,13 @@ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow): Rename `lastVolumeButtonRelease' to `lastQuitKeyRelease'. - (onKeyUp): Treat value returned by getQuitKeycode as the quit - key rather than mandate KEYCODE_VOLUME_DOWN. + (onKeyUp): Treat value returned by getQuitKeycode as the quit key + rather than mandate KEYCODE_VOLUME_DOWN. * src/android.c (getQuitKeycode): Implement new function. - * src/androidterm.c (syms_of_androidterm) - : New variable. + * src/androidterm.c (syms_of_androidterm) : + New variable. 2024-04-26 Gerd Möllmann @@ -16962,20 +16971,21 @@ * lisp/emacs-lisp/package-vc.el (vc-dir-prepare-status-buffer): Add a declaration. - (package-vc-upgrade): Prepare a dummy vc-dir buffer to ensure - that 'vc-pull' (or rather 'vc-deduce-fileset') can correctly - infer the VC backend to use. (bug#70526) + (package-vc-upgrade): Prepare a dummy vc-dir buffer to ensure that + 'vc-pull' (or rather 'vc-deduce-fileset') can correctly infer the + VC backend to use. (bug#70526) 2024-04-25 Juri Linkov - * lisp/tab-line.el: Fix tab-line-buffers in window-persistent-parameters. + Fix tab-line-buffers in window-persistent-parameters - Replace '(tab-line-buffers . writable)' with '(tab-line-buffers . t)' - in 'window-persistent-parameters' (bug#69993). + * lisp/tab-line.el: Replace '(tab-line-buffers . writable)' with + '(tab-line-buffers . t)' in 'window-persistent-parameters' + (bug#69993). 2024-04-25 Juri Linkov - Suppress warnings for obsolete display-comint-buffer-action (bug#69983) + Suppress warnings for obsolete display-comint-buffer-action * lisp/cmuscheme.el (run-scheme, switch-to-scheme): * lisp/shell.el (shell): @@ -16983,9 +16993,10 @@ * lisp/progmodes/inf-lisp.el (inferior-lisp): * lisp/progmodes/sh-script.el (sh-show-shell): * lisp/textmodes/tex-mode.el (tex-display-shell) - (tex-recenter-output-buffer): Add 'with-suppressed-warnings' - to suppress warnings for obsolete options - 'display-comint-buffer-action' and 'display-tex-shell-buffer-action'. + (tex-recenter-output-buffer): Add 'with-suppressed-warnings' to + suppress warnings for obsolete options + 'display-comint-buffer-action' and + 'display-tex-shell-buffer-action'. (bug#69983) 2024-04-25 Eli Zaretskii @@ -17011,9 +17022,9 @@ Better eval-when-compile example in manual - * doc/lispref/compile.texi (Eval During Compile): - `regexp-opt` makes for a poor example because as a pure function it - doesn't need `eval-when-compile` for constant inputs. + * doc/lispref/compile.texi (Eval During Compile): `regexp-opt' + makes for a poor example because as a pure function it doesn't + need `eval-when-compile' for constant inputs. 2024-04-25 Po Lu @@ -17049,15 +17060,16 @@ Make c-ts-common-comment-indent-new-line work for rust doc comment - * lisp/progmodes/c-ts-common.el (c-ts-common-comment-indent-new-line): - Support //! comment directives. + * lisp/progmodes/c-ts-common.el + (c-ts-common-comment-indent-new-line): Support //! comment + directives. 2024-04-24 Yuan Fu Make c-ts-common--fill-paragraph work for rust line comment - * lisp/progmodes/c-ts-common.el (c-ts-common--fill-paragraph): Back to - BOL before checking for //. + * lisp/progmodes/c-ts-common.el (c-ts-common--fill-paragraph): + Back to BOL before checking for //. 2024-04-24 Po Lu @@ -17091,10 +17103,12 @@ Gnus: Add back end for Atom feeds (nnatom) - * lisp/gnus/gnus.el (gnus-valid-select-methods): Add entry for nnatom. - * lisp/gnus/nnfeed.el: New file implementing an abstract web feed back - end. - * lisp/gnus/nnatom.el: New file implementing a back end for Atom feeds. + * lisp/gnus/gnus.el (gnus-valid-select-methods): Add entry for + nnatom. + * lisp/gnus/nnfeed.el: New file implementing an abstract web feed + back end. + * lisp/gnus/nnatom.el: New file implementing a back end for Atom + feeds. * doc/misc/gnus.texi (Browsing the Web, Back End Interface): * etc/NEWS (Gnus): Document nnatom and nnfeed. @@ -17109,10 +17123,10 @@ Eglot: robustify eglot-test-basic-symlink test (bug#70036) - The previous version of this test was brittle, unstable and - didn't really fail when supposed to (because we need main.cpp to - not be visited when visiting mainlink.cpp). This new version is - faster and more secure. + The previous version of this test was brittle, unstable and didn't + really fail when supposed to (because we need main.cpp to not be + visited when visiting mainlink.cpp). This new version is faster + and more secure. * test/lisp/progmodes/eglot-tests.el (eglot--sniffing): Add to the jsonrpc-event-hook at the end. @@ -17122,20 +17136,21 @@ Eglot: fix bug#70408 yet another way - The previous fix based on comparing the Eglot-provided didOpen URI to - the server-provided textDocument/publishDiagnostics URI didn't quite - work because the URI differs slightly in escaping conventions on certain - platforms. + The previous fix based on comparing the Eglot-provided didOpen URI + to the server-provided textDocument/publishDiagnostics URI didn't + quite work because the URI differs slightly in escaping + conventions on certain platforms. - This elephant-size bug is easily reproducible on Windows with clangd, - where every file is basically diagnostic-free. + This elephant-size bug is easily reproducible on Windows with + clangd, where every file is basically diagnostic-free. * lisp/progmodes/eglot.el (eglot-path-to-uri): Rework. - (eglot--TextDocumentIdentifier-cache): - Rename from eglot--TextDocumentIdentifier-uri. - (eglot-handle-notification textDocument/publishDiagnostics): Tweak. + (eglot--TextDocumentIdentifier-cache): Rename from + eglot--TextDocumentIdentifier-uri. + (eglot-handle-notification textDocument/publishDiagnostics): + Tweak. (eglot--TextDocumentIdentifier): Rework. - (eglot--signal-textDocument/didOpen): Tweak. + (eglot--signal-textDocument/didOpen): Tweak. (bug#70408) 2024-04-23 Andrea Corallo @@ -17146,10 +17161,11 @@ 2024-04-23 Andrea Corallo - * Generate elisp_type_hierarchy.txt with top level types on top of it + Generate elisp_type_hierarchy.txt with top level types on top of + it. - * admin/syncdoc-type-hierarchy.el (syncdoc-make-type-table): Prioratize - to level types. + * admin/syncdoc-type-hierarchy.el (syncdoc-make-type-table): + Prioritize to level types. 2024-04-23 Andrea Corallo @@ -17174,15 +17190,16 @@ Support remote trash-directory * doc/misc/tramp.texi (Frequently Asked Questions): Describe how - to manipulate trash-directory. - Explain tramp-inhibit-errors-if-setting-file-attributes-fail. + to manipulate trash-directory. Explain + tramp-inhibit-errors-if-setting-file-attributes-fail. * lisp/files.el (move-file-to-trash): Use connection-local value of `trash-directory'. (Bug#70421) 2024-04-23 Michael Albinus - * test/lisp/progmodes/eglot-tests.el (eglot-test-basic-symlink): Skip on EMBA. + * test/lisp/progmodes/eglot-tests.el (eglot-test-basic-symlink): + Skip on EMBA. 2024-04-23 Michael Albinus @@ -17204,11 +17221,11 @@ * doc/emacs/android.texi (Android Windowing): Document how to configure Emacs for monochrome displays. - * src/androidfns.c (Fx_display_visual_class): Return - Qstatic_gray when n_planes is smaller than 24. + * src/androidfns.c (Fx_display_visual_class): Return Qstatic_gray + when n_planes is smaller than 24. (Fandroid_get_connection): Set n_planes by the value of android_display_planes. - (syms_of_androidfns): : New function. + (syms_of_androidfns) : New function. * src/androidterm.c (android_alloc_nearest_color): Allocate monochrome colors similarly to the X server. @@ -17221,8 +17238,7 @@ * src/androidterm.h (struct android_display_info): New field `n_image_planes'. - * src/image.c (n_planes) [HAVE_ANDROID]: Define to - n_image_planes. + * src/image.c (n_planes) [HAVE_ANDROID]: Define to n_image_planes. 2024-04-23 Eli Zaretskii @@ -17251,20 +17267,20 @@ (markDirty): Synchronize the current stipple with tileObject. (prepareStipple, blitOpaqueStipple): New functions. - * java/org/gnu/emacs/EmacsService.java (EmacsService) - : New static field. + * java/org/gnu/emacs/EmacsService.java (EmacsService) : + New static field. (onCreate): Set it. * src/android.c (android_create_bitmap_from_data): Correct order of arguments to android_create_pixmap_from_bitmap_data. (HAS_BUILTIN_TRAP): Delete macro. - (emacs_abort): Always induce backtraces by means of a NULL - pointer deference. + (emacs_abort): Always induce backtraces by means of a NULL pointer + deference. * src/dispextern.h (Emacs_GC, Emacs_Rectangle, GCForeground) (GCBackground, GCFillStyle, GCStipple, FillOpaqueStipple) - [HAVE_ANDROID]: Define to their Android counterparts rather - than simulating their existence. + [HAVE_ANDROID]: Define to their Android counterparts rather than + simulating their existence. * src/epaths.in: Set bitmap path to /assets/bitmaps on Android. @@ -17273,8 +17289,8 @@ * src/sfntfont-android.c (sfntfont_android_put_glyphs): Assert that this is never called to draw a stippled background. - * src/xfaces.c (x_create_gc) [HAVE_ANDROID]: Redefine as - wrapper around android_create_gc. + * src/xfaces.c (x_create_gc) [HAVE_ANDROID]: Redefine as wrapper + around android_create_gc. (prepare_face_for_display) [HAVE_ANDROID]: Enable stipples. 2024-04-23 Vincenzo Pupillo @@ -17292,10 +17308,10 @@ This fixes bug#70019 and a separate fringe-mark removal bug that also affected bookmarks in certain Info nodes. - * lisp/bookmark.el (bookmark--remove-fringe-mark): Fix bug#70019 by - temporarily widening in order to ensure we fetch the right overlays. - Also, normalize both filenames before comparing, to avoid spurious - failure to match. + * lisp/bookmark.el (bookmark--remove-fringe-mark): Fix bug#70019 + by temporarily widening in order to ensure we fetch the right + overlays. Also, normalize both filenames before comparing, to + avoid spurious failure to match. Thanks to Dani Moncayo for the bug report and for testing. @@ -17303,17 +17319,18 @@ Better format string compilation warning - * lisp/emacs-lisp/bytecomp.el (byte-compile-format-warn): - Speed up by eliminating the temporary buffer. - Detect invalid format sequences. Use plurals properly. + * lisp/emacs-lisp/bytecomp.el (byte-compile-format-warn): Speed up + by eliminating the temporary buffer. Detect invalid format + sequences. Use plurals properly. * test/lisp/emacs-lisp/bytecomp-tests.el: Update test. 2024-04-22 F. Moukayed Ensure that Gnus inline preview undisplayer removes added newline - * lisp/gnus/mm-view.el (mm-inline-image): Remove two characters ("x\n") - instead of leaving behind a superfluous newline (bug#69920). + * lisp/gnus/mm-view.el (mm-inline-image): Remove two characters + ("x\n") instead of leaving behind a superfluous newline. + (bug#69920) 2024-04-22 Michael Albinus @@ -17349,8 +17366,8 @@ * java/Makefile.in (CONFIG_FILE, ALL_DEPENDENCIES, READELF) (cf-stamp-1, cf-stamp): New variables and rules; compute the set - of library files in the order of loading and generate a file - with this information. + of library files in the order of loading and generate a file with + this information. (ALL_CLASS_FILES): New variable; if builddir is not srcdir, $($(CONFIG_FILE), $(CLASS_FILES)): Depend on EmacsConfig.java. add generated files in the build directory. @@ -17369,34 +17386,34 @@ Cover more cases in c-ts-common-comment-indent-new-line * lisp/progmodes/c-ts-common.el: - (c-ts-common-comment-indent-new-line): Handle the case for ///, which - is used by rust. + (c-ts-common-comment-indent-new-line): Handle the case for ///, + which is used by rust. 2024-04-22 Juri Linkov - * lisp/progmodes/flymake.el: Small improvements for buffers display. + Small improvements for buffers display in flymake.el - (flymake-mode-map): Bind mouse-1 click on the fringe to - 'flymake-show-buffer-diagnostics' (bug#70459). - (flymake-show-buffer-diagnostics): Display buffer diagnostics - at the bottom. + * lisp/progmodes/flymake.el (flymake-mode-map): Bind mouse-1 click + on the fringe to 'flymake-show-buffer-diagnostics'. (bug#70459) + (flymake-show-buffer-diagnostics): Display buffer diagnostics at + the bottom. (flymake-show-project-diagnostics): Display project diagnostics at the bottom. 2024-04-22 Juri Linkov - * lisp/emacs-lisp/warnings.el (warning-display-at-bottom): New defcustom. - - (display-warning): Use 'warning-display-at-bottom' to display - the warning buffer at the bottom of the screen and to scroll - to the last warning message (bug#69983). + * lisp/emacs-lisp/warnings.el (warning-display-at-bottom): New + defcustom. + (display-warning): Use 'warning-display-at-bottom' to display the + warning buffer at the bottom of the screen and to scroll to the + last warning message. (bug#69983) 2024-04-22 Juri Linkov - * lisp/files.el (find-alternate-file): Fix the order of restoring buffer. - - Swap the order of restoring original buffer's file names and - restoring original's buffer name with 'rename-buffer' (bug#68235). + * lisp/files.el (find-alternate-file): Fix the order of restoring + buffer. Swap the order of restoring original buffer's file names + and restoring original's buffer name with 'rename-buffer'. + (bug#68235) 2024-04-22 Po Lu @@ -17410,11 +17427,11 @@ Add rust-ts-mode font-locking tests (bug#70464) - * test/lisp/progmodes/rust-ts-mode-tests.el: New file for rust-ts-mode - tests. - * test/lisp/progmodes/rust-ts-mode-resources/font-lock.rs: New file - with rust-ts-mode font-locking tests. New tests added for macro - font-locking (bug#70464) and function signatures + * test/lisp/progmodes/rust-ts-mode-tests.el: New file for + rust-ts-mode tests. + * test/lisp/progmodes/rust-ts-mode-resources/font-lock.rs: New + file with rust-ts-mode font-locking tests. New tests added for + macro font-locking (bug#70464) and function signatures (bug#70465). 2024-04-22 Noah Peart @@ -17431,7 +17448,8 @@ * lisp/progmodes/c-ts-common.el: (c-ts-common-comment-indent-new-line): Handle the case where user - types M-j in the middle of a line; and when the line starts with /**. + types M-j in the middle of a line; and when the line starts with + /**. 2024-04-22 Yuan Fu @@ -17448,7 +17466,8 @@ * lisp/progmodes/rust-ts-mode.el (rust-ts-mode--font-lock-settings): Add font-lock rule for Rust - function signatures and missing function modifier keyword 'default'. + function signatures and missing function modifier keyword + 'default'. 2024-04-22 Yuan Fu @@ -17462,8 +17481,8 @@ Better verify arguments to android-relinquish-directory-access - * src/androidvfs.c (Fandroid_relinquish_directory_access): - Provide for NULL values from android_name_file and remote files. + * src/androidvfs.c (Fandroid_relinquish_directory_access): Provide + for NULL values from android_name_file and remote files. * src/xdisp.c (decode_mode_spec): Don't intern file-remote-p. (syms_of_xdisp) : New defsym. @@ -17479,19 +17498,17 @@ Re-encode message bodies with externalized attachments during FCC - Bug#70338 - - * lisp/gnus/message.el (message-do-fcc): If the user has requested to - externalize attachments, we can't use the cached version of the message - body from sending. This mirrors an equivalent check for GCC in - `gnus-inews-do-gcc'. + * lisp/gnus/message.el (message-do-fcc): If the user has requested + to externalize attachments, we can't use the cached version of the + message body from sending. This mirrors an equivalent check for + GCC in `gnus-inews-do-gcc'. (bug#70338) 2024-04-20 Michael Albinus gitlab-ci.yml adaptions - * test/infra/gitlab-ci.yml (test-filenotify-gio, test-eglot): - Add TEST_HOME. + * test/infra/gitlab-ci.yml (test-filenotify-gio, test-eglot): Add + TEST_HOME. (test-tree-sitter): Extend SELECTOR. 2024-04-20 Stefan Monnier @@ -17499,13 +17516,13 @@ (backtrace--print-func-and-args): Fix (part of) bug#70436 The source of bug#70436 is that we print a value into the buffer - and then we generate its print representation a second time to - get its length to find the bounds of the thing we just printed. - Not only it's wasteful, but it risks bugs because the two - "prints" can be inconsistent with each other. + and then we generate its print representation a second time to get + its length to find the bounds of the thing we just printed. Not + only it's wasteful, but it risks bugs because the two "prints" can + be inconsistent with each other. - This is not a complete fix because in the non EVALD case we - still use that same broken way. + This is not a complete fix because in the non EVALD case we still + use that same broken way. * lisp/emacs-lisp/backtrace.el (backtrace--print-func-and-args): Don't re-print things just to get their length. @@ -17516,7 +17533,7 @@ (cl-print-object): Fix indirect cause of bug#70436 * lisp/emacs-lisp/cl-print.el (cl-print-object): Fix specializer - for the byte-code case. + for the byte-code case. (bug#70436) 2024-04-20 Po Lu @@ -17544,16 +17561,16 @@ This command completes the symbol at point up to the longest common prefix of all completions candidates. We also add an - indication of the longest common prefix in the completion - preview by highlighting that part of the preview with the - 'completion-preview-exact' face. To facilitate these features - we change the way we store the completion candidates while the + indication of the longest common prefix in the completion preview + by highlighting that part of the preview with the + 'completion-preview-exact' face. To facilitate these features we + change the way we store the completion candidates while the preview is visible, to explicitly keep the common prefix along with a list of its suffixes. * lisp/completion-preview.el (completion-preview--try-table): - Return longest common prefix and list of suffixes instead of - list of full candidates. Add illustrative comment. + Return longest common prefix and list of suffixes instead of list + of full candidates. Add illustrative comment. (completion-preview--capf-wrapper, completion-preview--update) (completion-preview--show, completion-preview-insert) (completion-preview-next-candidate): Adjust. @@ -17569,8 +17586,8 @@ (completion-preview-require-certain-commands): Update. (completion-preview--inhibit-update): New inline function. (completion-preview--inhibit-update-p): New local variable. - (completion-preview--post-command, completion-preview-hide): - Reset it to nil. + (completion-preview--post-command, completion-preview-hide): Reset + it to nil. * test/lisp/completion-preview-tests.el (completion-preview-tests--check-preview): Check the 'face' @@ -17583,8 +17600,8 @@ Kill process in files-tests before exiting * test/lisp/files-tests.el - (files-tests-file-name-non-special-start-file-process): - Make sure that the subprocess is killed before the test concludes. + (files-tests-file-name-non-special-start-file-process): Make sure + that the subprocess is killed before the test concludes. 2024-04-20 Eli Zaretskii @@ -17609,9 +17626,8 @@ With glasses-uncapitalize-p, use a display overlay property * lisp/progmodes/glasses.el (glasses-make-readable): Use the - 'display' property instead of 'after-string', so that one is - able to place the cursor on the uncapitalized character. - (Bug#70441) + 'display' property instead of 'after-string', so that one is able + to place the cursor on the uncapitalized character. (Bug#70441) 2024-04-20 Michael Albinus @@ -17622,7 +17638,8 @@ Complete fix for eww-tests.el * test/lisp/net/eww-tests.el (eww-test/readable/toggle-display) - (eww-test/readable/default-readable): Check for libxml. (Bug#70472) + (eww-test/readable/default-readable): Check for libxml. + (Bug#70472) 2024-04-20 Stefan Monnier @@ -17635,35 +17652,38 @@ Tree-sitter: only update range and reparse for changed ranges - In the very beginning, there's bug#66732, to solve that bug, we added - treesit--pre-redisplay and treesit--syntax-propertize-notifier. - However, to fix bug#66732, we were updating ranges for the whole - buffer which makes Emacs extremely slow when there are a lot of local - parsers in a large buffer. Then to solve that we introduced a - workaround where we only update ranges in a fixed range around point. + In the very beginning, there's bug#66732, to solve that bug, we + added treesit--pre-redisplay and + treesit--syntax-propertize-notifier. However, to fix bug#66732, + we were updating ranges for the whole buffer which makes Emacs + extremely slow when there are a lot of local parsers in a large + buffer. Then to solve that we introduced a workaround where we + only update ranges in a fixed range around point. - This change fixes the original problem (bug#66732) without using that - workaround. + This change fixes the original problem (bug#66732) without using + that workaround. * lisp/treesit.el (treesit--font-lock-notifier): (treesit--syntax-propertize-notifier): Remove functions (treesit--pre-redisplay): Use the new function - treesit-parser-changed-ranges to get the changed ranges of the primary - parser, and only update ranges for those ranges. Plus do the work of - the removed function. - (treesit-major-mode-setup): Remove setup for the removed functions. + treesit-parser-changed-ranges to get the changed ranges of the + primary parser, and only update ranges for those ranges. Plus do + the work of the removed function. + (treesit-major-mode-setup): Remove setup for the removed + functions. 2024-04-20 Yuan Fu New function treesit-parser-changed-ranges - - Add a new field last_changed_ranges to tree-sitter parser object. + - Add a new field last_changed_ranges to tree-sitter parser + object. - Add a new function treesit-parser-changed-ranges * doc/lispref/parsing.texi (Using Parser): Add the function in tree-sitter manual. - * src/treesit.c (treesit_get_changed_ranges): New function, refactored - out of treesit_call_after_change_functions. + * src/treesit.c (treesit_get_changed_ranges): New function, + refactored out of treesit_call_after_change_functions. (treesit_call_after_change_functions): Pull out treesit_get_changed_ranges. (treesit_ensure_parsed): Save the changed ranges to the parser object. @@ -17695,9 +17715,9 @@ * lisp/erc/erc.el (erc-server-or-unjoined-channel-buffer-p): Doc. (erc-query-buffer-p): Don't return non-nil in non-ERC buffers and server buffers, and continue to honor string arguments. The - regression was introduced by 3d87e343 "Use modern fallback for channel - name detection in ERC". Thanks to Libera user mekeor for reporting - this bug. + regression was introduced by 3d87e343 "Use modern fallback for + channel name detection in ERC". Thanks to Libera user mekeor for + reporting this bug. * test/lisp/erc/erc-tests.el (erc-query-buffer-p): New test. (Bug#67220) @@ -17706,16 +17726,17 @@ Add erc--skip message property * lisp/erc/erc-backend.el (erc-server-connect): Add `erc--skip' - property to `erc--msg-prop-overrides' so that timestamps only show up - with the first server-sent message. - (erc-server-PRIVMSG): Move `erc--msg-prop-overrides' declaration to - top-level. - * lisp/erc/erc-button.el (erc-button--display-error-notice-with-keys): - Use `erc--skip' msg prop instead of `erc-stamp--skip' variable. + property to `erc--msg-prop-overrides' so that timestamps only show + up with the first server-sent message. + (erc-server-PRIVMSG): Move `erc--msg-prop-overrides' declaration + to top-level. + * lisp/erc/erc-button.el + (erc-button--display-error-notice-with-keys): Use `erc--skip' msg + prop instead of `erc-stamp--skip' variable. * lisp/erc/erc-stamp.el (erc-stamp--skip): Remove variable. (erc-stamp--allow-unmanaged, erc-stamp--allow-unmanaged-p): Rename - former to latter to remain consistent with convention used by other - quasi-internal compatibility-related switches. + former to latter to remain consistent with convention used by + other quasi-internal compatibility-related switches. (erc-add-timestamp): Check `erc--skip' property instead of deleted variable `erc-stamp--skip'. * lisp/erc/erc.el (erc--msg-props): Mention `erc--skip' in doc. @@ -17732,26 +17753,27 @@ Don't nest date stamp insertions in erc-stamp - * etc/ERC-NEWS: Don't mention certain insertion-adjacent hooks being - suppressed for date stamps, which is no longer true. + * etc/ERC-NEWS: Don't mention certain insertion-adjacent hooks + being suppressed for date stamps, which is no longer true. * lisp/erc/erc-common.el (erc--solo): New utility function. - * lisp/erc/erc-fill.el (erc-fill-wrap): Don't move last-message marker - when encountering a date stamp. + * lisp/erc/erc-fill.el (erc-fill-wrap): Don't move last-message + marker when encountering a date stamp. * lisp/erc/erc-stamp.el (erc-stamp--recover-on-reconnect): Restore `erc-stamp--date-stamps' on reconnect and rejoin. (erc-stamp--insert-date-hook): Fix erroneous doc string. (erc-stamp--date): New struct type. - (erc-stamp--deferred-date-stamp): New internal variable to pass state - between hook members. - (erc-stamp--date-stamps): New internal variable to store a reference - to all inserted timestamps. - (erc-stamp--propertize-left-date-stamp): Don't hide messages because - this function runs on `erc-insert-modify-hook'. Prefer doing so - later, in `erc-insert-post-hook'. + (erc-stamp--deferred-date-stamp): New internal variable to pass + state between hook members. + (erc-stamp--date-stamps): New internal variable to store a + reference to all inserted timestamps. + (erc-stamp--propertize-left-date-stamp): Don't hide messages + because this function runs on `erc-insert-modify-hook'. Prefer + doing so later, in `erc-insert-post-hook'. (erc-stamp--find-insertion-point): New helper function. (erc-stamp--insert-date-stamp-as-phony-message): Remove. - (erc-stamp--lr-date-on-pre-modify): Remove function. Portions of body - now appear in `erc-stamp--defer-date-insertion-on-post-modify'. + (erc-stamp--lr-date-on-pre-modify): Remove function. Portions of + body now appear in + `erc-stamp--defer-date-insertion-on-post-modify'. (erc-stamp--defer-date-insertion-on-post-modify) (erc-stamp--defer-date-insertion-on-post-insert) (erc-stamp--defer-date-insertion-on-post-send): New functions, @@ -17760,11 +17782,12 @@ (erc-stamp--date-mode): Update hook-member functions. (erc-stamp-prepend-date-stamps-p): Revise doc. (erc-insert-timestamp-left-and-right): Remove code to initialize a - date stamp in place through a nested call to `erc-display-message'. - Instead, "pre-render" date stamp and stash it for retrieval by - the function `erc-stamp--defer-date-insertion-on-post-modify'. - (erc-stamp--setup): Kill variables `erc-stamp--deferred-date-stamp' - and `erc-stamp--date-stamps'. + date stamp in place through a nested call to + `erc-display-message'. Instead, "pre-render" date stamp and stash + it for retrieval by the function + `erc-stamp--defer-date-insertion-on-post-modify'. + (erc-stamp--setup): Kill variables + `erc-stamp--deferred-date-stamp' and `erc-stamp--date-stamps'. (erc-stamp--reset-on-clear): Remove trimmed stamps from `erc-stamp--date-stamps'. * lisp/erc/erc.el (erc--msg-props): Document `erc--hide' in doc @@ -17775,11 +17798,11 @@ (erc--insert-line-function): Expand doc string. (erc--remove-from-prop-value-list): Tweak doc string. (erc--insert-before-markers-transplanting-hidden): New function. - (erc--hide-message): Remember managed `invisible' prop value. Do so - by recording them in the `erc--hide' "msg prop". - (erc--delete-inserted-message, erc--delete-inserted-message-naively): - Rename former to latter to emphasize that it's largely impractical for - general use. + (erc--hide-message): Remember managed `invisible' prop value. Do + so by recording them in the `erc--hide' "msg prop". + (erc--delete-inserted-message) + (erc--delete-inserted-message-naively): Rename former to latter to + emphasize that it's largely impractical for general use. (erc--ranked-properties): Add `erc--hide'. * test/lisp/erc/erc-button-tests.el (erc-button-tests--erc-button-alist--function-as-form): Use @@ -17789,26 +17812,28 @@ (erc-fill-line-spacing): Use `erc-display-message' wrappers to intercept `erc-timer-hook' modifications. * test/lisp/erc/erc-scenarios-match.el - (erc-scenarios-match--invisible-stamp): Add convenience commands to - `extended-command-history' when running interactively. + (erc-scenarios-match--invisible-stamp): Add convenience commands + to `extended-command-history' when running interactively. * test/lisp/erc/erc-tests.el (erc--insert-before-markers-transplanting-hidden): New test. - (erc--delete-inserted-message, erc--delete-inserted-message-naively): - Update test name as well as namesake function in body. + (erc--delete-inserted-message) + (erc--delete-inserted-message-naively): Update test name as well + as namesake function in body. * test/lisp/erc/resources/erc-scenarios-common.el - (erc-scenarios-common-with-cleanup): Validate `erc-stamp--date-stamps' - members after every scenario test. + (erc-scenarios-common-with-cleanup): Validate + `erc-stamp--date-stamps' members after every scenario test. (erc-scenarios-common--assert-date-stamps): New function. * test/lisp/erc/resources/erc-tests-common.el: Require `erc-stamp' atop file when compiling. (erc-tests--common-display-message) (erc-tests-common-display-message) - (erc-tests-common-with-date-aware-display-message): New functions and - macro for running `erc-display-message' while intercepting additions - to `erc-timer-hook' made by date-stamp-related post-insertion hooks. - (erc-tests-common-snapshot-compare): Insert expected output into its - own buffer for easier review during interactive sessions. This change - is unrelated to the rest of this commit. (Bug#60936) + (erc-tests-common-with-date-aware-display-message): New functions + and macro for running `erc-display-message' while intercepting + additions to `erc-timer-hook' made by date-stamp-related + post-insertion hooks. + (erc-tests-common-snapshot-compare): Insert expected output into + its own buffer for easier review during interactive sessions. + This change is unrelated to the rest of this commit. (Bug#60936) 2024-04-19 F. Jason Park @@ -17816,31 +17841,36 @@ * lisp/erc/erc-fill.el (erc-fill--wrap-escape-hidden-speaker): Add parameter to suppress escaping of hidden prefixes. - (erc-fill--wrap-beginning-of-line): Remember original value of point, - and pass it to `erc-fill--wrap-escape-hidden-speaker'. - (erc-fill--wrap-previous-line, erc-fill--wrap-next-line): Guard call - to `erc-fill--wrap-escape-hidden-speaker' with conditional check for - `erc-fill-wrap-merge'. + (erc-fill--wrap-beginning-of-line): Remember original value of + point, and pass it to `erc-fill--wrap-escape-hidden-speaker'. + (erc-fill--wrap-previous-line, erc-fill--wrap-next-line): Guard + call to `erc-fill--wrap-escape-hidden-speaker' with conditional + check for `erc-fill-wrap-merge'. (erc-fill--wrap-insert-merged-pre): Add additional text property, - `erc-fill--wrap-merge', to help identify `display' regions servicing - `erc-fill-wrap-merge'. This should make resolving inconsistencies - easier when "splicing" new messages between existing ones. - (erc-fill-wrap): Add `erc-fill--wrap-merge' text property to merged - speaker region. + `erc-fill--wrap-merge', to help identify `display' regions + servicing `erc-fill-wrap-merge'. This should make resolving + inconsistencies easier when "splicing" new messages between + existing ones. + (erc-fill-wrap): Add `erc-fill--wrap-merge' text property to + merged speaker region. (erc-fill--wrap-rejigger-region): Remove assertion disallowing a - non-nil `erc-fill--wrap-rejigger-last-message'. Instead, adopt the - existing value of that variable when shadowing it for the remaining - extent of the function's execution. When removing the `display' - property, also look for nonempty replacement text, such as values - specified by the option `erc-fill-wrap-merge-indicator'. + non-nil `erc-fill--wrap-rejigger-last-message'. Instead, adopt + the existing value of that variable when shadowing it for the + remaining extent of the function's execution. When removing the + `display' property, also look for nonempty replacement text, such + as values specified by the option `erc-fill-wrap-merge-indicator'. (erc-fill--wrap-merged-button-p): Look for `erc-fill--wrap-merge' property instead of `display'. - * test/lisp/erc/resources/fill/snapshots/merge-01-start.eld: Update. - * test/lisp/erc/resources/fill/snapshots/merge-02-right.eld: Update. - * test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld: Update. + * test/lisp/erc/resources/fill/snapshots/merge-01-start.eld: + Update. + * test/lisp/erc/resources/fill/snapshots/merge-02-right.eld: + Update. + * test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld: + Update. * test/lisp/erc/resources/fill/snapshots/merge-wrap-indicator-pre-01.eld: Update. - * test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld: Update. + * test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld: + Update. (Bug#60936) 2024-04-19 F. Jason Park @@ -17848,33 +17878,33 @@ Simplify option erc-merge-wrap-merge-indicator * lisp/erc/erc-fill.el (erc-fill-wrap-merge-indicator): Reduce - offering of acceptable values by removing leading symbols and ditching - the `post' variant entirely. The justification for the latter move - hinges on it not being well suited to next-gen requirements involving - the splicing and deletion of inserted messages. Meeting these would - be overly burdensome and involve scanning the buffer in both - directions for every such operation. This option is new in ERC 5.6, - which is yet unreleased. - (erc-fill--wrap-massage-legacy-indicator-type): New function to warn - of obsolete `erc-fill-wrap-merge-indicator' value and perform a - migration for the current session. - (erc-fill-wrap, erc-fill-wrap-enable): Perform preflight compat check - for obsolete `erc-fill-wrap-merge-indicator' value types. + offering of acceptable values by removing leading symbols and + ditching the `post' variant entirely. The justification for the + latter move hinges on it not being well suited to next-gen + requirements involving the splicing and deletion of inserted + messages. Meeting these would be overly burdensome and involve + scanning the buffer in both directions for every such operation. + This option is new in ERC 5.6, which is yet unreleased. + (erc-fill--wrap-massage-legacy-indicator-type): New function to + warn of obsolete `erc-fill-wrap-merge-indicator' value and perform + a migration for the current session. + (erc-fill-wrap, erc-fill-wrap-enable): Perform preflight compat + check for obsolete `erc-fill-wrap-merge-indicator' value types. (erc-fill-wrap-disable): Don't bother killing nonexistent variable `erc-fill--wrap-merge-indicator-post'. (erc-fill--wrap-merge-indicator-post): Remove unused variable. (erc-fill--wrap-insert-merged-post): Remove unused function. (erc-fill--wrap-insert-merged-pre): Adapt to simplified format for option `erc-merge-wrap-merge-indicator'. - (erc-fill-wrap): Remove conditional dispatch because there is only one - path and only one indicator style. + (erc-fill-wrap): Remove conditional dispatch because there is only + one path and only one indicator style. (erc-fill--wrap-rejigger-region): Remove reference to nonexistent variable `erc-fill--wrap-merge-indicator-post'. * test/lisp/erc/erc-fill-tests.el - (erc-fill-wrap--merge-action/indicator-pre): Update format of value - for option `erc-fill-wrap-merge-indicator'. - (erc-fill-wrap--merge-action/indicator-post): Remove test focusing on - obsolete and unsupported `post' variant of option + (erc-fill-wrap--merge-action/indicator-pre): Update format of + value for option `erc-fill-wrap-merge-indicator'. + (erc-fill-wrap--merge-action/indicator-post): Remove test focusing + on obsolete and unsupported `post' variant of option `erc-fill-wrap-merge-indicator'. (erc-fill--wrap-massage-legacy-indicator-type): New test. * test/lisp/erc/resources/fill/snapshots/merge-wrap-indicator-post-01.eld: @@ -17885,21 +17915,23 @@ Make publishDiagnostics faster by using cached variable * lisp/progmodes/eglot.el (eglot--cached-tdi): Move variable. - (eglot-handle-notification): Expose 'server' and search through managed - buffers for a cached textDocumentIdentifier, which has a file-truename - resolved path. - * test/lisp/progmodes/eglot-tests.el (eglot-test-basic-symlink): Add - regression test for symlink behavior + (eglot-handle-notification): Expose 'server' and search through + managed buffers for a cached textDocumentIdentifier, which has a + file-truename resolved path. + * test/lisp/progmodes/eglot-tests.el (eglot-test-basic-symlink): + Add regression test for symlink behavior. 2024-04-19 Michael Albinus - New user option tramp-inhibit-errors-if-setting-file-attributes-fail + New user option + tramp-inhibit-errors-if-setting-file-attributes-fail. - * doc/misc/tramp.texi (Frequently Asked Questions): - Explain tramp-inhibit-errors-if-setting-file-attributes-fail. + * doc/misc/tramp.texi (Frequently Asked Questions): Explain + tramp-inhibit-errors-if-setting-file-attributes-fail. * lisp/net/tramp.el - (tramp-inhibit-errors-if-setting-file-attributes-fail): New defcustom. + (tramp-inhibit-errors-if-setting-file-attributes-fail): New + defcustom. (tramp-skeleton-set-file-modes-times-uid-gid): Use it. 2024-04-19 Po Lu @@ -17910,40 +17942,42 @@ (eglot--signal-textDocument/didChange): Fix tests - The tests call `eglot--signal-textDocument/didChange` eagerly, - which means in the case where we use `track-changes` that they - call it before the tracker's signal has been called. - So make sure we fetch pending changes even if we haven't yet - been notified of them, and make sure `eglot--versioned-identifier` - is incremented even when the signal is not called. + The tests call `eglot--signal-textDocument/didChange' eagerly, + which means in the case where we use `track-changes' that they + call it before the tracker's signal has been called. So make sure + we fetch pending changes even if we haven't yet been notified of + them, and make sure `eglot--versioned-identifier' is incremented + even when the signal is not called. * lisp/progmodes/eglot.el (eglot--track-changes-fetch) - (eglot--after-change): Increment `eglot--versioned-identifier` here... + (eglot--after-change): Increment `eglot--versioned-identifier' + here... (eglot--track-changes-signal): ...instead of here. - (eglot--signal-textDocument/didChange): Try and fetch changes even if the - tracker's signal wasn't called yet. + (eglot--signal-textDocument/didChange): Try and fetch changes even + if the tracker's signal wasn't called yet. - * test/lisp/progmodes/eglot-tests.el (eglot-tests--get): New function. + * test/lisp/progmodes/eglot-tests.el (eglot-tests--get): New + function. (eglot-tests--lsp-abiding-column-1): Use it. 2024-04-18 Juri Linkov Drag tabs to reorder buffers on the tab line. - * lisp/tab-line.el (tab-line-mouse-move-tab): - New command bound to [tab-line drag-mouse-1]. + * lisp/tab-line.el (tab-line-mouse-move-tab): New command bound to + [tab-line drag-mouse-1]. 2024-04-18 João Távora Better way to fix bug#70036 - Cache a new eglot--cached-tdi var per buffer, which contains value to - return from eglot--TextDocumentIdentifier. + Cache a new eglot--cached-tdi var per buffer, which contains value + to return from eglot--TextDocumentIdentifier. - This avoids frequent expensive recomputation of a value that requires - potentially many 'file-truename' calls. This technique is used in a - number of other cases already, like eglot--recent-changes or - eglot--versioned-identifier. + This avoids frequent expensive recomputation of a value that + requires potentially many 'file-truename' calls. This technique + is used in a number of other cases already, like + eglot--recent-changes or eglot--versioned-identifier. * lisp/progmodes/eglot.el (eglot--cached-tdi): New variable. (eglot--TextDocumentIdentifier): Tweak. @@ -17955,9 +17989,10 @@ This reverts commit 08c80c45ddea17df87fc768a39dff353ccc13d3b. - It introduces bugs when a project contains symlinked files. The server - will be informed of duplicate documents which are really the same and it - frequently has no means to deduplicate such information. + It introduces bugs when a project contains symlinked files. The + server will be informed of duplicate documents which are really + the same and it frequently has no means to deduplicate such + information. This leads to bugs such as excessive textDocument/references to a function. @@ -17966,7 +18001,8 @@ (eglot-uri-to-path): Revert change. (eglot--on-shutdown): Revert change. (eglot--managed-mode): Revert change. - (eglot-handle-notification textDocument/publishDiagnostics): Revert change. + (eglot-handle-notification textDocument/publishDiagnostics): + Revert change. 2024-04-18 Stephen Berman @@ -17984,17 +18020,18 @@ Ensure that specbind arg is always bare symbol, and drop check * src/eval.c (FletX, Flet, internal_lisp_condition_case) - (funcall_lambda): Ensure that the first argument to `specbind` is - a bare symbol in the few cases where this isn't statically guaranteed. + (funcall_lambda): Ensure that the first argument to `specbind' is + a bare symbol in the few cases where this isn't statically + guaranteed. (specbind): Drop the symbol argument type check on the fast path. 2024-04-18 Mattias Engdegård Drop unnecessary type check in varref and varset byte ops - * src/bytecode.c (exec_byte_code): - We can safely assume that the immediate argument to varref and varset - is a bare symbol; the byte-compiler should guarantee that. + * src/bytecode.c (exec_byte_code): We can safely assume that the + immediate argument to varref and varset is a bare symbol; the + byte-compiler should guarantee that. 2024-04-18 Augusto Stoffel @@ -18024,20 +18061,20 @@ Avoid unnecessary escaping in 'url-build-query-string' - * lisp/url/url-util.el (url-query-key-value-allowed-chars): - New defconst. - (url-build-query-string): Use it to escape only those - characters that need it in keys and values. - * test/lisp/url/url-util-tests.el (url-util-tests): Add - new test cases. (Bug#70312) + * lisp/url/url-util.el (url-query-key-value-allowed-chars): New + defconst. + (url-build-query-string): Use it to escape only those characters + that need it in keys and values. + * test/lisp/url/url-util-tests.el (url-util-tests): Add new test + cases. (Bug#70312) 2024-04-18 Elias G. B. Perez Flymake support for indicating errors in margin - Add optional support for display flymake error in margin, - this allow displaying error indicators in both graphical and - terminal frames. + Add optional support for display flymake error in margin, this + allow displaying error indicators in both graphical and terminal + frames. * doc/misc/flymake.texi (Customizable variables) (Flymake error types): Document new margin indicator. * etc/NEWS: Announce the new Flymake user option for margin @@ -18067,10 +18104,10 @@ * lisp/tab-line.el: Use the new keyword :key for 'sort'. - (tab-line-tabs-fixed-window-buffers): Use :key for 'sort'. - Rename the window parameter 'tab-line-fixed-window-buffers' - to shorter 'tab-line-buffers'. Add '(tab-line-buffers . writable) - to window-persistent-parameters. + (tab-line-tabs-fixed-window-buffers): Use :key for 'sort'. Rename + the window parameter 'tab-line-fixed-window-buffers' to shorter + 'tab-line-buffers'. Add '(tab-line-buffers . writable) to + window-persistent-parameters. 2024-04-18 Po Lu @@ -18085,17 +18122,16 @@ Propagate 'lexical-binding' value to pp buffers - See bug#70137. - - * lisp/emacs-lisp/pp.el (pp-display-expression): Set lexical-binding to - match the value in the calling buffer. + * lisp/emacs-lisp/pp.el (pp-display-expression): Set + lexical-binding to match the value in the calling buffer. + (bug#70137) 2024-04-17 Theodor Thornhill Document earlier change in eglot-report-progress - * lisp/progmodes/eglot.el (eglot-report-progress): Document the changed - behavior. + * lisp/progmodes/eglot.el (eglot-report-progress): Document the + changed behavior. * etc/EGLOT-NEWS (https): Mention the change. 2024-04-17 Stefan Monnier @@ -18114,11 +18150,12 @@ 2024-04-17 Juri Linkov - * lisp/emacs-lisp/icons.el (define-icon): Add 'doc-string' to 'declare'. + * lisp/emacs-lisp/icons.el (define-icon): Add 'doc-string' to + 'declare'. 2024-04-17 Juri Linkov - New keymap tab-line-mode-map and new tab order on tab-line (bug#69993) + New keymap tab-line-mode-map and new tab order on tab-line * lisp/tab-line.el (tab-line-new-button-functions): New variable. (tab-line-tabs-function): Change the default value from @@ -18130,6 +18167,7 @@ (tab-line-tabs-fixed-window-buffers): New function. (tab-line-format-template): Use 'tab-line-new-button-functions'. (tab-line-mode-map, tab-line-switch-repeat-map): New keymaps. + (bug#69993) 2024-04-17 Stephen Berman @@ -18151,63 +18189,66 @@ track-changes.el: Fix last change for early use - * lisp/emacs-lisp/track-changes.el (track-changes--recover-from-error): - Don't burp if there have been fewer than 20 keystrokes since Emacs start. + * lisp/emacs-lisp/track-changes.el + (track-changes--recover-from-error): Don't burp if there have been + fewer than 20 keystrokes since Emacs start. 2024-04-17 Eli Zaretskii Another fix for bug#70385 - * src/xdisp.c (note_fringe_highlight): Check value of x_y_to_hpos_vpos. + * src/xdisp.c (note_fringe_highlight): Check value of + x_y_to_hpos_vpos. 2024-04-17 Juri Linkov - * lisp/emacs-lisp/lisp.el (forward-sexp-function): Set back to nil. - + * lisp/emacs-lisp/lisp.el (forward-sexp-function): Set back to + nil. (forward-sexp): Revert back to checking 'forward-sexp-function' - for nil (bug#70426). + for nil. (bug#70426) 2024-04-17 Stefan Monnier track-changes.el: Minor changes for version 1.0 Arrange for the library to be usable on older Emacsen, which - includes reducing the noise when `before/after-change-functions` - are badly paired or missing. - Also, since the signal function receives the distance (for `:disjoint`), - we don't need `track-changes--disjoint-threshold`: the signal - function can simply do nothing when the distance is smaller than - the threshold it wants to use. + includes reducing the noise when `before/after-change-functions' + are badly paired or missing. Also, since the signal function + receives the distance (for `:disjoint'), we don't need + `track-changes--disjoint-threshold': the signal function can + simply do nothing when the distance is smaller than the threshold + it wants to use. * lisp/emacs-lisp/track-changes.el: Prepare header for ELPA. - (track-changes--tracker, track-changes--state): Don't use `:noinline`, - so as to be compatible with Emacs<27. + (track-changes--tracker, track-changes--state): Don't use + `:noinline', so as to be compatible with Emacs<27. (track-changes-record-errors): New variable. - (track-changes--recover-from-error): Use it. Record only the last 20 - keys and the last 50 stack frames in the error log. + (track-changes--recover-from-error): Use it. Record only the last + 20 keys and the last 50 stack frames in the error log. (track-changes--disjoint-threshold): Delete variable. (track-changes--before): Don't use it any more. - * lisp/progmodes/eglot.el (eglot--track-changes-signal): - Coalesce disjoint changes nearer than what used to be coalesced because of - `track-changes--disjoint-threshold`. + * lisp/progmodes/eglot.el (eglot--track-changes-signal): Coalesce + disjoint changes nearer than what used to be coalesced because of + `track-changes--disjoint-threshold'. 2024-04-17 Stefan Monnier (cl-defstruct): Improve handling of unknown options - Until now `cl-defstruct` signaled an error when encountering an + Until now `cl-defstruct' signaled an error when encountering an unknown option. It's easy to code and it does the job, but it - doesn't give good location info in the compiler's output, - and it makes it more painful to use not-yet-supported options. - So just signal a warning instead. + doesn't give good location info in the compiler's output, and it + makes it more painful to use not-yet-supported options. So just + signal a warning instead. * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Warn about unknown options, instead of signaling an error. 2024-04-16 Eli Zaretskii - * src/xdisp.c (note_fringe_highlight): Another attempt to fix bug#70385. + * src/xdisp.c (note_fringe_highlight): Another attempt to fix + bug#70385. 2024-04-16 Eli Zaretskii @@ -18234,16 +18275,16 @@ Fix touch screen hscroll when initiated from widgets - * lisp/wid-edit.el (widget-button--check-and-call-button): - Return to the position of point during the tracking loop if a - touch event is canceled. + * lisp/wid-edit.el (widget-button--check-and-call-button): Return + to the position of point during the tracking loop if a touch event + is canceled. 2024-04-16 Po Lu Another fix for bug#70385 - * src/xdisp.c (note_fringe_highlight): Test that vpos falls - within W->current_matrix. (bug#70385) + * src/xdisp.c (note_fringe_highlight): Test that vpos falls within + W->current_matrix. (bug#70385) 2024-04-16 Juri Linkov @@ -18251,32 +18292,32 @@ * lisp/tab-line.el (tab-line-select-tab-buffer): Optimize. (tab-line-switch-cycling): Enable by default like in tab-bar-mode. - (tab-line-switch-to-prev-tab, tab-line-switch-to-next-tab): - Add a prefix argument ARG and support it for switching tabs. - Improve docstring. + (tab-line-switch-to-prev-tab, tab-line-switch-to-next-tab): Add a + prefix argument ARG and support it for switching tabs. Improve + docstring. 2024-04-16 Noah Peart Add font-locking for operators in go-ts-mode (bug#70361) - * lisp/progmodes/go-ts-mode.el (go-ts-mode--font-lock-settings): Add - font-locking rule for Go operators. + * lisp/progmodes/go-ts-mode.el (go-ts-mode--font-lock-settings): + Add font-locking rule for Go operators. 2024-04-15 Stefan Monnier (track-changes-fetch): Fix nested use case - * lisp/emacs-lisp/track-changes.el (track-changes-fetch): - Don't presume that if there's nothing to do we're on + * lisp/emacs-lisp/track-changes.el (track-changes-fetch): Don't + presume that if there's nothing to do we're on `track-changes--clean-trackers`. 2024-04-15 Stefan Monnier (track-changes--before): Fix bug#70396 - * lisp/emacs-lisp/track-changes.el (track-changes--before): - Widen the buffer before accessing it with positions - potentially outside the beg..end region. + * lisp/emacs-lisp/track-changes.el (track-changes--before): Widen + the buffer before accessing it with positions potentially outside + the beg..end region. 2024-04-15 Eli Zaretskii @@ -18302,20 +18343,18 @@ Rewrite Android description of Android window management * doc/emacs/android.texi (Android Environment): Rewrite several - paragraphs to better reflect recent changes and emphasize - behavior on modern OS releases. + paragraphs to better reflect recent changes and emphasize behavior + on modern OS releases. 2024-04-15 Martin Rudalics - Make 'buffer-last-name' work better after 'find-alternate-file' (Bug#68235) + Make 'buffer-last-name' work better after 'find-alternate-file' * lisp/files.el (find-alternate-file): Before killing the previous - buffer, try to restore its name and filenames (Bug#68235). + buffer, try to restore its name and filenames. (Bug#68235) 2024-04-15 Po Lu - Fix bug#70385 - * src/xdisp.c (note_fringe_highlight): Don't proceed if popup_activated, window is outdated, or when row beneath pointer does not display text. (bug#70385) @@ -18326,17 +18365,18 @@ Bug reported and fix proposed by Aris Spathis. - * src/sort.c (merge_markmem): Mark heap-allocated temporary key values. - (tim_sort): Delay key function calls to after marking function has been - registered. + * src/sort.c (merge_markmem): Mark heap-allocated temporary key + values. + (tim_sort): Delay key function calls to after marking function has + been registered. * test/src/fns-tests.el (fns-tests-sort-gc): New test. 2024-04-14 Juri Linkov Add 'forward-sexp-default-function' to be used by 'treesit-forward-sexp' - * lisp/emacs-lisp/lisp.el (forward-sexp-default-function): - New function with body from 'forward-sexp' (bug#68993). + * lisp/emacs-lisp/lisp.el (forward-sexp-default-function): New + function with body from 'forward-sexp'. (bug#68993) (forward-sexp-function): Change the default value from nil to 'forward-sexp-default-function'. (forward-sexp): Use either 'forward-sexp-function' or @@ -18351,7 +18391,8 @@ text.texi (Tracking changes): Fix warning - * doc/lispref/text.texi (Change Hooks): Add a menu to silence warnings. + * doc/lispref/text.texi (Change Hooks): Add a menu to silence + warnings. (Tracking changes): Improve the title. 2024-04-14 Earl Hyatt @@ -18359,45 +18400,48 @@ Add command 'list-keyboard-macros' that works like 'list-buffers'. The command 'list-keyboard-macros' allows editing and re-arranging - macros using 'tabulated-list-mode'. Existing keyboard macros can be - duplicated or deleted. Macro counters and counter formats can take new - values read from the minibuffer. Macro keys can be edited using - 'edit-kbd-macro'. + macros using 'tabulated-list-mode'. Existing keyboard macros can + be duplicated or deleted. Macro counters and counter formats can + take new values read from the minibuffer. Macro keys can be + edited using 'edit-kbd-macro'. * doc/emacs/kmacro.texi (Kmacro Menu): Document the new command and the menu's commands. * etc/NEWS (Kmacro Menu Mode): Mention the new mode and command. * lisp/kmacro.el (kmacro-menu-mark, kmacro-menu-marked) (kmacro-menu-flagged): Add faces for marks and flags. - * lisp/kmacro.el (kmacro-menu-mode-map, kmacro-menu-mode): Add mode - and map. + * lisp/kmacro.el (kmacro-menu-mode-map, kmacro-menu-mode): Add + mode and map. * lisp/kmacro.el (list-keyboard-macros, kmacro-menu): Add command. * lisp/kmacro.el (kmacro-menu--deletion-flags, kmacro-menu--marks) - (kmacro-menu--id-kmacro, kmacro-menu--id-position, kmacro-menu--kmacros) - (kmacro-menu--refresh, kmacro-menu--map-ids, kmacro-menu--replace-all) - (kmacro-menu--replace-at, kmacro-menu--query-revert, kmacro-menu--assert-row) + (kmacro-menu--id-kmacro, kmacro-menu--id-position) + (kmacro-menu--kmacros) + (kmacro-menu--refresh, kmacro-menu--map-ids) + (kmacro-menu--replace-all) + (kmacro-menu--replace-at, kmacro-menu--query-revert) + (kmacro-menu--assert-row) (kmacro-menu--propertize-keys, kmacro-menu--do-region) - (kmacro-menu--marks-exist-p): Add utility functions of mode - and commands. + (kmacro-menu--marks-exist-p): Add utility functions of mode and + commands. * lisp/kmacro.el (kmacro-menu-mark, kmacro-menu-flag-for-deletion) (kmacro-menu-unmark, kmacro-menu-unmark-backward) (kmacro-menu-unmark-all): Add commands for marks and flags. - * lisp/kmacro.el (kmacro-menu-do-flagged-delete, kmacro-menu-do-copy) + * lisp/kmacro.el (kmacro-menu-do-flagged-delete) + (kmacro-menu-do-copy) (kmacro-menu-do-delete): Add commands that modify the ring. - * lisp/kmacro.el (kmacro-menu-edit-position, kmacro-menu-transpose) + * lisp/kmacro.el (kmacro-menu-edit-position) + (kmacro-menu-transpose) (kmacro-menu-edit-format, kmacro-menu-edit-counter) - (kmacro-menu-edit-keys, kmacro-menu-edit-column): Add commands that - modify a keyboard macro. + (kmacro-menu-edit-keys, kmacro-menu-edit-column): Add commands + that modify a keyboard macro. 2024-04-14 Alan Mackenzie CC Mode: Don't start fontifying in the middle of an identifier - This fixes bug#70367. - * lisp/progmodes/cc-mode.el (c-fl-decl-start): After searching - backwards for the end of the previous statement, check whether - or not we found it. + backwards for the end of the previous statement, check whether or + not we found it. (bug#70367) 2024-04-14 Po Lu @@ -18406,8 +18450,8 @@ * java/org/gnu/emacs/EmacsService.java (onCreate): Call removeOldTasks. - * java/org/gnu/emacs/EmacsWindowManager.java (removeOldTasks): - New function. + * java/org/gnu/emacs/EmacsWindowManager.java (removeOldTasks): New + function. * java/proguard.conf: Optimize optimizer configuration. @@ -18424,9 +18468,11 @@ 2024-04-13 Justin Burkett - Add more debugging information + * lisp/which-key.el (which-key--show-buffer-side-window): Add more + debugging information. - Add more debugging info to which-key--create-pages + * lisp/which-key.el (which-key--create-pages): Add more debugging + info to which-key--create-pages. 2024-04-13 Stefan Monnier @@ -18434,46 +18480,48 @@ * lisp/progmodes/peg.el (peg-parse): Refine heuristic since unknown terminals are resolved at run-time rather than compile-time now. - (peg--macroexpand) : Avoid generating a `let` with an - empty body. + (peg--macroexpand) : Avoid generating a `let' with + an empty body. (peg--translate-rule-body): Adjust to name change of - `macroexp-warn-and-return` and the fact that it's always available. + `macroexp-warn-and-return' and the fact that it's always + available. - * test/lisp/progmodes/peg-tests.el (peg-parse-string): - Add `indent` declaration. + * test/lisp/progmodes/peg-tests.el (peg-parse-string): Add + `indent' declaration. (peg-test): Check that the compiler emits the warnings we expect. 2024-04-13 Stefan Monnier - (define-globalized-minor-mode): Require the use of `run-mode-hooks` + (define-globalized-minor-mode): Require the use of `run-mode-hooks' - When `define-globalized-minor-mode` was introduced (Emacs-22), - `run-mode-hooks` was brand new, so we could not expect all major + When `define-globalized-minor-mode' was introduced (Emacs-22), + `run-mode-hooks' was brand new, so we could not expect all major modes to use it and we had to rely on brittle workarounds to try - and approximate `after-change-major-mode-hook`. + and approximate `after-change-major-mode-hook'. These workarounds have undesirable side effects, and (we hope) they're not needed any more now that virtually all major modes - have been changed to use `run-mode-hooks` (or - `define-derived-mode`). + have been changed to use `run-mode-hooks' (or + `define-derived-mode'). * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): - Rely only on `after-change-major-mode-hook`, remove the "cmhh" + Rely only on `after-change-major-mode-hook', remove the "cmhh" [typo for the intended "cmmh", BTW] workaround. * doc/lispref/modes.texi (Mode Hooks): Clarify the importance of - `after-change-major-mode-hook` w.r.t `define-globalized-minor-mode`. + `after-change-major-mode-hook' w.r.t + `define-globalized-minor-mode'. (Defining Minor Modes): Rewrite the explanation of which buffers are affected, including adjusting it to the fact that - `fundamental-mode` has used run `run-mode-hooks` for last 10 years. + `fundamental-mode' has run `run-mode-hooks' for the last 10 years. 2024-04-13 Stefan Monnier (define-globalized-minor-mode): Fix bug#58888 - * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode) : - Try and detect well-behaved modes so they're not affected by - those which require the cmhh hack. + * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode) + : Try and detect well-behaved modes so they're not + affected by those which require the cmhh hack. (bug#58888) 2024-04-13 Stefan Monnier @@ -18484,35 +18532,36 @@ lisp/emacs-lisp/track-changes.el: New file (bug#70077) This new package provides an API that is easier to use right than - our `*-change-functions` hooks. + our `*-change-functions' hooks. - The patch includes changes to `diff-mode.el` and `eglot.el` to + The patch includes changes to `diff-mode.el' and `eglot.el' to make use of this new package. * lisp/emacs-lisp/track-changes.el: New file. * test/lisp/emacs-lisp/track-changes-tests.el: New file. * doc/lispref/text.texi (Tracking changes): New subsection. - * lisp/progmodes/eglot.el: Require `track-changes`. + * lisp/progmodes/eglot.el: Require `track-changes'. (eglot--virtual-pos-to-lsp-position): New function. (eglot--track-changes): New var. - (eglot--managed-mode): Use `track-changes-register` i.s.o - `after/before-change-functions` when available. + (eglot--managed-mode): Use `track-changes-register' i.s.o + `after/before-change-functions' when available. (eglot--track-changes-signal): New function, partly extracted from - `eglot--after-change`. + `eglot--after-change'. (eglot--after-change): Use it. (eglot--track-changes-fetch): New function. (eglot--signal-textDocument/didChange): Use it. - * lisp/vc/diff-mode.el: Require `track-changes`. - Also require `easy-mmode` before the `eval-when-compile`s. + * lisp/vc/diff-mode.el: Require `track-changes'. Also require + `easy-mmode' before the `eval-when-compile's. (diff-unhandled-changes): Delete variable. (diff-after-change-function): Delete function. - (diff--track-changes-function): Rename from `diff-post-command-hook` - and adjust to new calling convention. + (diff--track-changes-function): Rename from + `diff-post-command-hook' and adjust to new calling convention. (diff--track-changes): New variable. (diff--track-changes-signal): New function. - (diff-mode, diff-minor-mode): Use it with `track-changes-register`. + (diff-mode, diff-minor-mode): Use it with + `track-changes-register'. 2024-04-13 Po Lu @@ -18562,8 +18611,8 @@ Allow 'help-quick' to use a non-global keymap - * lisp/help.el (help-quick-sections): Mention - 'help-quick-use-map' in docstring. + * lisp/help.el (help-quick-sections): Mention 'help-quick-use-map' + in docstring. (help-quick-use-map): Add new variable, defaulting to the global-map. (help-quick): Use new variable. @@ -18572,8 +18621,8 @@ Mark Flymake regions more accurately in 'lua-ts-mode' - * lisp/progmodes/lua-ts-mode.el (lua-ts-flymake-luacheck): Use - the end position provided by Luacheck rather than relying on + * lisp/progmodes/lua-ts-mode.el (lua-ts-flymake-luacheck): Use the + end position provided by Luacheck rather than relying on 'thing-at-point' to guess where the end should be. (Bug#70167) 2024-04-13 Eli Zaretskii @@ -18582,7 +18631,7 @@ * lisp/calendar/icalendar.el (icalendar--datestring-to-isodate): Accept dashes in ISO-style numeric dates. Patch by Erwan Hingant - . (Bug#69894) + . (Bug#69894) * test/lisp/calendar/icalendar-tests.el (icalendar--datestring-to-isodate): Add a test for dashes in @@ -18597,10 +18646,8 @@ 2024-04-13 Stefan Monnier - (elisp-tests-syntax-propertize): New test for bug#24542 - - * test/lisp/progmodes/elisp-mode-tests.el (elisp-tests-syntax-propertize): - New test. + * test/lisp/progmodes/elisp-mode-tests.el + (elisp-tests-syntax-propertize): New test. (bug#24542) 2024-04-12 Paul Eggert @@ -18612,40 +18659,40 @@ 2024-04-12 Stefan Monnier - (emacs-lisp-mode-syntax-table): Fix bug#24542 - * lisp/progmodes/elisp-mode.el (emacs-lisp-mode-syntax-table): - Remove `p` from the flags of `@`. + Remove `p` from the flags of `@'. (bug#24542) 2024-04-12 Juri Linkov - * lisp/buff-menu.el: Improve 'Buffer-menu-group-by-mode' (bug#70150). + Improve 'Buffer-menu-group-by-mode' - (Buffer-menu-group-by): Replace function-item with const - better suitable for Customization UI. + * lisp/buff-menu.el (Buffer-menu-group-by): Replace function-item + with const better suitable for Customization UI. (Buffer-menu-group-by-mode): Use 'mouse-buffer-menu-mode-groups' - to group buffers by mode. + to group buffers by mode. (bug#70150) 2024-04-12 Juri Linkov New user option 'tab-line-tabs-buffer-group-function' - * lisp/tab-line.el (tab-line-tabs-buffer-group-function): - Turn defvar into defcustom with the default value + * lisp/tab-line.el (tab-line-tabs-buffer-group-function): Turn + defvar into defcustom with the default value 'tab-line-tabs-buffer-group-by-mode'. (tab-line-tabs-buffer-group-by-mode): New function with body from 'tab-line-tabs-buffer-group-name'. (tab-line-tabs-buffer-group-by-project): New function. - (tab-line-tabs-buffer-groups): Use fallback name "No group" instead of "All". + (tab-line-tabs-buffer-groups): Use fallback name "No group" + instead of "All". 2024-04-12 Michael Albinus Improve D-Bus byte-array conversion - * doc/misc/dbus.texi (Type Conversion): Adapt dbus-byte-array-to-string. + * doc/misc/dbus.texi (Type Conversion): Adapt + dbus-byte-array-to-string. - * etc/NEWS: D-Bus byte array conversion works over raw UTF-8 bytes. - Fix typos. + * etc/NEWS: D-Bus byte array conversion works over raw UTF-8 + bytes. Fix typos. * lisp/net/dbus.el (dbus-string-to-byte-array) (dbus-byte-array-to-string): BYTE-ARRAY must be an UTF-8 raw bytes @@ -18657,7 +18704,8 @@ (dbus-test09-get-managed-objects): Use `length='. (dbus-test01-type-conversion): Extend test. - * test/lisp/net/secrets-tests.el (secrets-test03-items): Extend test. + * test/lisp/net/secrets-tests.el (secrets-test03-items): Extend + test. 2024-04-12 Joseph Turner @@ -18665,7 +18713,8 @@ * lisp/info.el (info-pop-to-buffer): Move display of Info buffer to a later stage after its text contents is ready to display. - This helps to use fit-window-to-buffer in display-buffer-alist (bug#70213). + This helps to use fit-window-to-buffer in display-buffer-alist + (bug#70213). 2024-04-11 Dmitry Gutov @@ -18682,7 +18731,7 @@ etags-regen--tags-generate: Handle spaces in project root name * lisp/progmodes/etags-regen.el (etags-regen--tags-generate): - Quote the tags file name (bug#70329). + Quote the tags file name. (bug#70329) 2024-04-11 Eli Zaretskii @@ -18695,11 +18744,12 @@ Don't hide flymake diagnostics on empty first line (bug#70310) - A diagnostic first in the buffer, typically the lexical cookie warning, - got lost if that line was empty. + A diagnostic first in the buffer, typically the lexical cookie + warning, got lost if that line was empty. * lisp/progmodes/elisp-mode.el (elisp-flymake--byte-compile-done): - Make sure the location interval doesn't go beyond the buffer bounds. + Make sure the location interval doesn't go beyond the buffer + bounds. 2024-04-11 Po Lu @@ -18734,14 +18784,15 @@ 2024-04-11 Dmitry Gutov - Generalize the file-name specific workaround in minibuffer-completion-help + Generalize the file-name specific workaround in + minibuffer-completion-help. - * lisp/minibuffer.el (completion-base-suffix): - New function (bug#48356). + * lisp/minibuffer.el (completion-base-suffix): New function. + (bug#48356) (minibuffer-completion-help): Use it here. (minibuffer-completion-help): Cut off the double completion boundary when it occurs inside - completion-list-insert-choice-function.. + completion-list-insert-choice-function. 2024-04-10 Arash Esbati @@ -18751,18 +18802,18 @@ Check if point inside a mandatory argument where the cite/ref key usually resides. For example, with \cite[45]{emacs:30} and point on 4, the following bogus message in the echo area is suppressed: - "cite: no such database entry: \cite[45]". (bug#38258) - Fix docstring. + "cite: no such database entry: \cite[45]". (bug#38258) Fix + docstring. 2024-04-10 Juri Linkov * doc/lispref/parsing.texi (Parsing Program Source): Fix menu. - Add the new node "User-defined Things" to the menu. 2024-04-10 Andrea Corallo - * lisp/emacs-lisp/comp-cstr.el (comp-cstr-type-p): Improve last change. + * lisp/emacs-lisp/comp-cstr.el (comp-cstr-type-p): Improve last + change. * lisp/emacs-lisp/comp-cstr.el (comp-cstr-type-p): New function. @@ -18772,26 +18823,25 @@ 2024-04-10 Stefan Monnier - (en/decode_coding_object): Fix `after-change-functions` + (en/decode_coding_object): Fix `after-change-functions' - For `en/decode-coding-string/region`, `after-change-functions` + For `en/decode-coding-string/region', `after-change-functions' were either not run at all, or run only after deleting the text but not after inserting it. - * src/coding.c (decode_coding_object, encode_coding_object): Run the - after-change-functions after inserting the result. + * src/coding.c (decode_coding_object, encode_coding_object): Run + the after-change-functions after inserting the result. - * test/src/editfns-tests.el (sanity-check-change-functions-with-op): - New macro. + * test/src/editfns-tests.el + (sanity-check-change-functions-with-op): New macro. (sanity-check-change-functions-errors): New function. (editfns-tests--before/after-change-functions): Use them to add - cases for `en/decode-coding-string/region`. + cases for `en/decode-coding-string/region'. 2024-04-10 Po Lu - * java/Makefile.in (classes.dex): Make proguard.conf relative to srcdir. - - Merge remote-tracking branch 'savannah/master' into master-android-1 + * java/Makefile.in (classes.dex): Make proguard.conf relative to + srcdir. * java/proguard.conf: New file. @@ -18803,8 +18853,7 @@ installed, detect whether an installation of `r8' is similarly present, and use this installation in place of d8 if so. - * java/Makefile.in (ANDROID_MIN_SDK, IS_D8_R8): New - substitutions. + * java/Makefile.in (ANDROID_MIN_SDK, IS_D8_R8): New substitutions. (classes.dex): Provide --min-api, --debug or --release and --pg-conf to d8 or r8. @@ -18825,8 +18874,9 @@ Add explicit binding to nil in let - * lisp/which-key.el (which-key--match-replacement, - which-key--propertize-key): Add explicit binding of case-fold-search to nil. + * lisp/which-key.el (which-key--match-replacement) + (which-key--propertize-key): Add explicit binding of + case-fold-search to nil. 2024-04-10 Po Lu @@ -18837,20 +18887,20 @@ 2024-04-10 Stefan Monnier - (cl--describe-class-slots): Avoid cryptic `t` type + (cl--describe-class-slots): Avoid cryptic `t' type - * lisp/emacs-lisp/cl-extra.el (cl--describe-class-slots): Use the empty - string for the trivial `t` type. + * lisp/emacs-lisp/cl-extra.el (cl--describe-class-slots): Use the + empty string for the trivial `t' type. - * lisp/emacs-lisp/cl-preloaded.el (cl-structure-class): - Fix non-existing `bool` => `boolean`. + * lisp/emacs-lisp/cl-preloaded.el (cl-structure-class): Fix + non-existing `bool' => `boolean'. 2024-04-09 Dmitry Gutov Add Flymake backend to rust-ts-mode using Clippy - * lisp/progmodes/rust-ts-mode.el (rust-ts-flymake-command): - New option (bug#70260). + * lisp/progmodes/rust-ts-mode.el (rust-ts-flymake-command): New + option. (bug#70260) (rust-ts--flymake-proc): New variable. (rust-ts-flymake--helper): New function. (rust-ts-flymake): New function. @@ -18860,49 +18910,53 @@ Use null for clarity - * lisp/which-key.el (which-key--show-evil-operator-keymap): Use null for - clarity of zero length. + * lisp/which-key.el (which-key--show-evil-operator-keymap): Use + null for clarity of zero length. 2024-04-09 Jeremy Bryant - * lisp/which-key.el (which-key--show-evil-operator-keymap): let not let* + * lisp/which-key.el (which-key--show-evil-operator-keymap): let + not let*. - * lisp/which-key.el (which-key--create-pages-1): Use cl-decf for clarity + * lisp/which-key.el (which-key--create-pages-1): Use cl-decf for + clarity. - * lisp/which-key.el (which-key--partition-list): Replace cl-subseq by take + * lisp/which-key.el (which-key--partition-list): Replace cl-subseq + by take. 2024-04-09 Jeremy Bryant Change cl-case to cl-ecase - * lisp/which-key.el (which-key--popup-max-dimensions): - Change cl-case to cl-ecase to signal error if needed. + * lisp/which-key.el (which-key--popup-max-dimensions): Change + cl-case to cl-ecase to signal error if needed. 2024-04-09 Jeremy Bryant - * lisp/which-key.el (which-key--popup-max-dimensions): Fix docstring typo + * lisp/which-key.el (which-key--popup-max-dimensions): Fix + docstring typo. 2024-04-09 Jeremy Bryant Replace wholenump by natnump for context readability - * lisp/which-key.el (which-key--width-or-percentage-to-width, - which-key--height-or-percentage-to-height): Use natnump instead of - wholenump. + * lisp/which-key.el (which-key--width-or-percentage-to-width) + (which-key--height-or-percentage-to-height): Use natnump instead + of wholenump. 2024-04-09 Jeremy Bryant Simplify code to use null - * lisp/which-key.el (which-key--create-buffer-and-show): - Use null. + * lisp/which-key.el (which-key--create-buffer-and-show): Use null. 2024-04-09 Stefan Monnier (test-replace-match-modification-hooks): Delete test - * test/src/search-tests.el (test-replace-match-modification-hooks): - Delete, this is testing a functionality we can't really support. + * test/src/search-tests.el + (test-replace-match-modification-hooks): Delete, this is testing a + functionality we can't really support. 2024-04-09 Stefan Monnier @@ -18910,30 +18964,32 @@ 2024-04-09 Stefan Monnier - (mouse-wheel-buttons): Map old-style wheel buttons to actual wheel events + (mouse-wheel-buttons): Map old-style wheel buttons to actual wheel + events. - Change the handling of the old X11 convention that uses mouse-4/5/6/7 - events to represent wheel events: instead of asking downstream - packages to use the `mouse-wheel-*-event` variables to know which events - represent wheel events, use new var `mouse-wheel-buttons` to directly - convert those events into the standard `wheel-up/down/left/right` events - used everywhere else. + Change the handling of the old X11 convention that uses + mouse-4/5/6/7 events to represent wheel events: instead of asking + downstream packages to use the `mouse-wheel-*-event' variables to + know which events represent wheel events, use new var + `mouse-wheel-buttons' to directly convert those events into the + standard `wheel-up/down/left/right' events used everywhere else. - This will simplify the work of packages which can thus just bind their - commands to `wheel-up/down/left/right`. + This will simplify the work of packages which can thus just bind + their commands to `wheel-up/down/left/right'. * lisp/mouse.el (mouse-wheel-buttons): New custom variable. - * src/keyboard.c (make_lispy_event): Adjust for "wheel-clicks" on the tab-bar. - * src/xterm.c (x_construct_mouse_click): Add `xi2` argument and - obey `mouse-wheel-buttons` variable. + * src/keyboard.c (make_lispy_event): Adjust for "wheel-clicks" on + the tab-bar. + * src/xterm.c (x_construct_mouse_click): Add `xi2' argument and + obey `mouse-wheel-buttons' variable. (handle_one_xevent): Adjust calls accordingly. - (syms_of_xterm): Define the `mouse-wheel-buttons` and the - `wheel-up/down/left/right`symbols. + (syms_of_xterm): Define the `mouse-wheel-buttons' and the + `wheel-up/down/left/right'symbols. - * lisp/xt-mouse.el: Don't require `mwheel` any more. + * lisp/xt-mouse.el: Don't require `mwheel' any more. (xterm-mouse--same-button-p): Delete function. - (xterm-mouse--read-event-sequence): Use `mouse-wheel-buttons`. + (xterm-mouse--read-event-sequence): Use `mouse-wheel-buttons'. * lisp/mwheel.el (mouse-wheel-up-event, mouse-wheel-down-event) (mouse-wheel-left-event, mouse-wheel-right-event): Make obsolete. @@ -18948,8 +19004,8 @@ Move over optional arguments in parentheses correctly * lisp/textmodes/reftex-parse.el (reftex-move-to-previous-arg): - Recognize ')' as closing delimiter for optional argument. - Fix docstring. + Recognize ')' as closing delimiter for optional argument. Fix + docstring. (reftex-what-macro): Identify LaTeX macros with optional arguments in parentheses correctly. This is necessary to make `reftex-view-crossref' work with biblatex on entries like: @@ -18960,28 +19016,29 @@ Inhibit flymake lexical cookie warning in *scratch* (bug#70068) - Add a hack to prevent flymake from complaining about a missing lexical - cookie when enabled in *scratch*. + Add a hack to prevent flymake from complaining about a missing + lexical cookie when enabled in *scratch*. * lisp/emacs-lisp/bytecomp.el (bytecomp--inhibit-lexical-cookie-warning): New variable. (byte-compile-file): Use it to gate the warning. - * lisp/progmodes/elisp-mode.el (elisp-flymake-byte-compile): - Set the inhibitor when spawning a check in lisp-interaction-mode. + * lisp/progmodes/elisp-mode.el (elisp-flymake-byte-compile): Set + the inhibitor when spawning a check in lisp-interaction-mode. 2024-04-09 Po Lu Fix misalignment of entries created by Dired file operations - * lisp/dired.el (dired-insert-directory): Insert leading space - if absent before calling dired-align-file. + * lisp/dired.el (dired-insert-directory): Insert leading space if + absent before calling dired-align-file. 2024-04-09 Juri Linkov - Fix window-point-context-set and window-point-context-use (bug#33871) + Fix window-point-context-set and window-point-context-use * lisp/window.el (window-point-context-set) (window-point-context-use): Add 'window-buffer' for 'buffer-name'. + (bug#33871) 2024-04-09 Lin Sun @@ -18990,12 +19047,13 @@ * lisp/ls-lisp.el (ls-lisp--sanitize-switches): Support '--time' and '--sort=time'. (Bug#70271) - * test/lisp/ls-lisp-tests.el (ls-lisp-test-bug70271): New - test case. + * test/lisp/ls-lisp-tests.el (ls-lisp-test-bug70271): New test + case. 2024-04-09 Po Lu - Improve treatment of aborted touch events in Speedbar and elsewhere + Improve treatment of aborted touch events in Speedbar and + elsewhere. * lisp/dframe.el (dframe-popup-kludge): Mark as a mouse-1-menu-command. @@ -19009,15 +19067,15 @@ Disable tab-bar by default in Speedbar frames - * lisp/speedbar.el (speedbar-frame-parameters): Set - tab-bar-lines to 0. + * lisp/speedbar.el (speedbar-frame-parameters): Set tab-bar-lines + to 0. 2024-04-09 Daniel Mendler - (completion-hilit-commonality): Support `completion-lazy-hilit` + (completion-hilit-commonality): Support `completion-lazy-hilit' * lisp/minibuffer.el (completion-hilit-commonality): Support lazy - completion candidate highlighting via `completion-lazy-hilit`. + completion candidate highlighting via `completion-lazy-hilit'. 2024-04-08 Eli Zaretskii @@ -19032,15 +19090,15 @@ * lisp/emacs-lisp/cl-extra.el (cl--describe-class): Move docstring after the class' slots. - (cl--describe-class-slots): Buttonize the types. + (cl--describe-class-slots): Buttonize the types. (bug#70077) 2024-04-08 Stefan Monnier (define-globalized-minor-mode): Fix bug#69431 * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): - When `after-change-major-mode-hook` runs, enable the mode only - in the current buffer and not in other pending buffers. + When `after-change-major-mode-hook` runs, enable the mode only in + the current buffer and not in other pending buffers. 2024-04-08 Stephen Berman @@ -19054,13 +19112,14 @@ 2024-04-08 Andrea Corallo - * Make comp ignore EIEIO classes (bug#70141) + Make comp ignore EIEIO classes - * lisp/emacs-lisp/comp-cstr.el (comp--all-classes): Ignore EIEIO classes. + * lisp/emacs-lisp/comp-cstr.el (comp--all-classes): Ignore EIEIO + classes. (bug#70141) 2024-04-08 Andrea Corallo - * Fix out of date comp pass names in comp-tests.el + Fix out of date comp pass names in comp-tests.el * test/src/comp-tests.el (comp-tests-tco, comp-tests-fw-prop-1) (comp-tests-pure): Update out of date pass names. @@ -19069,30 +19128,27 @@ Document tree-sitter things feature (bug#70016) (bug#68824) - * doc/lispref/parsing.texi (Retrieving Nodes): Mention new kinds of - predicate argument that the tree-traversing functions accept (which are - thing symbols and thing definitions). + * doc/lispref/parsing.texi (Retrieving Nodes): Mention new kinds + of predicate argument that the tree-traversing functions + accept (namely, thing symbols and thing definitions). (User-defined Things): New node dedicated to thing definition and navigation functions. 2024-04-08 Yuan Fu - Make tree-sitter thing feature public and remove obsolete functions + Make tree-sitter thing feature public and remove obsolete + functions. * lisp/treesit.el (treesit--things-around): Remove function. - (treesit-forward-sexp): - (treesit-beginning-of-thing): - (treesit-end-of-thing): - (treesit-navigate-thing): - (treesit-thing-at-point): - (treesit-outline-search): Use public version of thing-functions. - (treesit--thing-prev): - (treesit--thing-next): - (treesit--thing-at): - (treesit--navigate-thing): Make public. + (treesit-forward-sexp, treesit-beginning-of-thing) + (treesit-end-of-thing, treesit-navigate-thing) + (treesit-thing-at-point, treesit-outline-search): Use public + version of thing-functions. + (treesit--thing-prev, treesit--thing-next) + (treesit--thing-at, treesit--navigate-thing): Make public. - * test/src/treesit-tests.el (treesit--ert-test-defun-navigation): Use - public version of thing-functions. + * test/src/treesit-tests.el (treesit--ert-test-defun-navigation): + Use public version of thing-functions. 2024-04-07 F. Jason Park @@ -19105,31 +19161,33 @@ (erc-speedbar-toggle-nicknames-window-lock): Revise doc string. (erc-speedbar-toggle-nicknames-window-lock): Set `cursor-type' in speedbar buffer. - (erc-nickbar-toggle-nicknames-window-lock): New function alias. Note - that this name flouts traditional library namespacing conventions. - * lisp/erc/erc-status-sidebar.el (erc-status-sidebar-get-window): Use - `cursor-type' instead of `internal-show-cursor'. (Bug#63595) + (erc-nickbar-toggle-nicknames-window-lock): New function alias. + Note that this name flouts traditional library namespacing + conventions. + * lisp/erc/erc-status-sidebar.el (erc-status-sidebar-get-window): + Use `cursor-type' instead of `internal-show-cursor'. (Bug#63595) 2024-04-07 F. Jason Park Allow updating of /IGNORE timeouts in ERC - * lisp/erc/erc.el (erc--read-time-period, erc--decode-time-period): - Move body of former, now a superficial wrapper, to latter, a new - function. + * lisp/erc/erc.el (erc--read-time-period) + (erc--decode-time-period): Move body of former, now a superficial + wrapper, to latter, a new function. (erc--format-time-period): New function. (erc--get-ignore-timer-args): New function. (erc--find-ignore-timer): New function to search through `timer-list' to find matching ignore timer. (erc-cmd-IGNORE): Refactor and redo doc string. Add new optional - `timespec' parameter, primarily to aid in testing. Update an existing - timer instead of always creating one, and display time remaining in - "ignore list" output. Pass server buffer instead of current buffer to - timer callbacks because `erc--unignore-user' displays its messages in - the `active' buffer, not necessarily the issuing one. Note that doing - this does discard potentially useful information, so if ever reverting, - we can change the `cl-find' :test in `erc--find-ignore-timer' to - something that compares the `erc-server-process' of both buffers. + `timespec' parameter, primarily to aid in testing. Update an + existing timer instead of always creating one, and display time + remaining in "ignore list" output. Pass server buffer instead of + current buffer to timer callbacks because `erc--unignore-user' + displays its messages in the `active' buffer, not necessarily the + issuing one. Note that doing this does discard potentially useful + information, so if ever reverting, we can change the `cl-find' + :test in `erc--find-ignore-timer' to something that compares the + `erc-server-process' of both buffers. ;; ;; Something like: ;; @@ -19139,10 +19197,10 @@ ;; (buffer-local-value 'erc-server-process (cadr b))))) ;; (erc-cmd-UNIGNORE): Pass `erc-ignore-list' member matching `user' - parameter to `erc--unignore-user' instead of original, raw parameter, - along with the server buffer. - (erc--unignore-user): Cancel existing timer and don't bother switching - to server buffer since we're already there. + parameter to `erc--unignore-user' instead of original, raw + parameter, along with the server buffer. + (erc--unignore-user): Cancel existing timer and don't bother + switching to server buffer since we're already there. (erc-message-english-ignore-list): New variable. * test/lisp/erc/erc-scenarios-ignore.el: New file. * test/lisp/erc/erc-tests.el (erc--read-time-period): New test. @@ -19152,7 +19210,8 @@ (Freplace_match): Fix bug#65451 - * src/search.c (Freplace_match): For ordering of *-change-functions. + * src/search.c (Freplace_match): For ordering of + *-change-functions. * test/src/editfns-tests.el (editfns-tests--before/after-change-functions): New test. @@ -19184,19 +19243,20 @@ 2024-04-07 Po Lu - Resolve disagreements in accounting of tooltip positions on Android + Resolve disagreements in accounting of tooltip positions on + Android. - * java/org/gnu/emacs/EmacsService.java (getLocationInWindow): - New function. + * java/org/gnu/emacs/EmacsService.java (getLocationInWindow): New + function. * java/org/gnu/emacs/EmacsWindow.java (translateCoordinates): Derive "root window" position from the origin point of the - containing activity's window rather than that of the screen, - the two of which differ when "freeform mode" is enabled. + containing activity's window rather than that of the screen, the + two of which differ when "freeform mode" is enabled. 2024-04-07 Lin Sun - * lisp/master.el (master-says): Check nil argument (bug#70230). + * lisp/master.el (master-says): Check nil argument. (bug#70230) 2024-04-07 Po Lu @@ -19230,12 +19290,11 @@ Add documentation for 'switch-window' event - * doc/lispref/commands.texi (Focus Events): Add - documentation for the structure of 'switch-window' events. - Make sure to be clear when referring to window system windows - vs Emacs windows. - * doc/lispref/windows.texi (Mouse Window Auto-selection): - Adding cross-reference to "Focus Events". (Bug#69915) + * doc/lispref/commands.texi (Focus Events): Add documentation for + the structure of 'switch-window' events. Make sure to be clear + when referring to window system windows vs Emacs windows. + * doc/lispref/windows.texi (Mouse Window Auto-selection): Adding + cross-reference to "Focus Events". (Bug#69915) 2024-04-06 Olaf Rogalsky @@ -19243,9 +19302,9 @@ Generate select-window events, so that 'mouse-autoselect-window' takes effect on TTY frames, when 'xterm-mouse-mode' is enabled. - * lisp/xt-mouse.el (xterm-mouse-translate-1): - If 'mouse-autoselect-window' is non-nil, add select-window - events to 'unread-command-events'. (Bug#69915) + * lisp/xt-mouse.el (xterm-mouse-translate-1): If + 'mouse-autoselect-window' is non-nil, add select-window events to + 'unread-command-events'. (Bug#69915) 2024-04-06 Po Lu @@ -19259,54 +19318,52 @@ 2024-04-06 Stefan Monnier - (help-fns-function-description-header): Fix last change (bug#70209) - - * lisp/help-fns.el (help-fns-function-description-header): Don't make - a button for the type if it's not a type. + * lisp/help-fns.el (help-fns-function-description-header): Don't + make a button for the type if it's not a type. (bug#70209) 2024-04-05 Michael Albinus Make sh-script-tests.el more robust - * test/lisp/progmodes/sh-script-tests.el (test-sh-script-indentation) + * test/lisp/progmodes/sh-script-tests.el + (test-sh-script-indentation) (test-basic-sh-indentation, test-indent-after-continuation): * test/lisp/progmodes/sh-script-resources/sh-indents.erts (Code): Skip if `sh-indent-supported-here' is nil. (Bug#70196) 2024-04-05 Juri Linkov - Mark display-comint-buffer-action as obsolete after adding a category. + Mark display-comint-buffer-action as obsolete after adding a + category. - * lisp/window.el (display-comint-buffer-action): - Append '(category . comint)' to the default value. Mark as obsolete. - (display-tex-shell-buffer-action): - Append '(category . tex-shell)' to the default value. Mark as obsolete. - (bug#69983) + * lisp/window.el (display-comint-buffer-action): Append '(category + . comint)' to the default value. Mark as obsolete. + (display-tex-shell-buffer-action): Append '(category . tex-shell)' + to the default value. Mark as obsolete. (bug#69983) 2024-04-05 Juri Linkov - * lisp/tab-bar.el (tab-bar-mode-map): New keymap (bug#69578). - - (tab-bar-select-tab-modifiers): Call tab-bar--undefine-keys - before set-default in :set of defcustom. - (tab-bar--define-keys, tab-bar--undefine-keys): - Change keybindings in tab-bar-mode-map instead of the global map. - Move checking of global-key-binding to tab-bar-mode--tab-key-bind. + * lisp/tab-bar.el (tab-bar-mode-map): New keymap. (bug#69578) + (tab-bar-select-tab-modifiers): Call tab-bar--undefine-keys before + set-default in :set of defcustom. + (tab-bar--define-keys, tab-bar--undefine-keys): Change keybindings + in tab-bar-mode-map instead of the global map. Move checking of + global-key-binding to tab-bar-mode--tab-key-bind. (tab-bar-mode--tab-key-bind): New internal function. 2024-04-05 Mattias Engdegård Only call set-text-conversion-style if it exists - * lisp/auth-source.el (read-passwd): Guard call, as it was before the - code was moved here. - `set-text-conversion-style` is not present in all configurations. + * lisp/auth-source.el (read-passwd): Guard call, as it was before + the code was moved here. `set-text-conversion-style` is not + present in all configurations. 2024-04-05 Stefan Monnier - * lisp/help-fns.el (help-fns-function-description-header): Fix bug#70209 - - Replace the whimsical "" default by something actually useful. + * lisp/help-fns.el (help-fns-function-description-header): Replace + the whimsical "" default by something actually useful. + (bug#70209) 2024-04-05 Po Lu @@ -19315,8 +19372,8 @@ * doc/emacs/android.texi (Android Document Providers): Document new command. - * java/org/gnu/emacs/EmacsService.java (relinquishUriRights): - New function. + * java/org/gnu/emacs/EmacsService.java (relinquishUriRights): New + function. * src/Makefile.in (SOME_MACHINE_OBJECTS): Add androidvfs.c. @@ -19354,11 +19411,12 @@ 2024-04-05 Eli Zaretskii - * lisp/hexl.el (hexl-mode): Fix doc string (bug#70163). + * lisp/hexl.el (hexl-mode): Fix doc string. (bug#70163) 2024-04-05 Po Lu - Fix Semantic tag discovery when loading of unloaded files is suppressed + Fix Semantic tag discovery when loading of unloaded files is + suppressed. * lisp/cedet/semantic/db-find.el (semanticdb-find-tags-by-name-method) @@ -19370,16 +19428,14 @@ (semanticdb-deep-find-tags-by-name-method) (semanticdb-deep-find-tags-by-name-regexp-method) (semanticdb-deep-find-tags-for-completion-method): Verify that - tags is bound before accessing it; this slot is unbound in - tables created for unloaded files when the `unloaded' throttle - is disabled. + tags is bound before accessing it; this slot is unbound in tables + created for unloaded files when the `unloaded' throttle is + disabled. 2024-04-05 Spencer Baugh - (project-current): Fix the previous change - - * lisp/progmodes/project.el (project-current): - Fix the previous change (bug#69584). + * lisp/progmodes/project.el (project-current): Fix the previous + change. (bug#69584) 2024-04-04 Michael Albinus @@ -19403,18 +19459,18 @@ 2024-04-04 Mattias Engdegård * src/json.c (make_symset_table): Fix over-large allocation size. - We multiplied when we should have added. Oops. 2024-04-04 Juri Linkov - Disobey display actions while using switch-to-buffer on the tab-line + Disobey display actions while using switch-to-buffer on the + tab-line * lisp/tab-line.el (tab-line-select-tab-buffer) - (tab-line-switch-to-prev-tab, tab-line-switch-to-next-tab): Let-bind - switch-to-buffer-obey-display-actions to nil around the call to - switch-to-buffer to restrain buffer switching in bounds of - the same window only (bug#69993). + (tab-line-switch-to-prev-tab, tab-line-switch-to-next-tab): + Let-bind switch-to-buffer-obey-display-actions to nil around the + call to switch-to-buffer to restrain buffer switching in bounds of + the same window only. (bug#69993) 2024-04-04 Po Lu @@ -19444,17 +19500,18 @@ New variable haiku-pass-control-tab-to-system Allow passing C-TAB on to the Haiku operating system, fixing - window switching when an Emacs frame has focus (Bug#70138). + window switching when an Emacs frame has focus. * src/haiku_support.cc (DispatchMessage): Conditionally pass message to BWindow. * src/haiku_support.h: * src/haikufns.c (haiku_should_pass_control_tab_to_system): Add variable haiku-pass-control-tab-to-system, and C function - haiku_should_pass_control_tab_to_system. + haiku_should_pass_control_tab_to_system. (Bug#70138) 2024-04-03 Juri Linkov - Simplify tab-line-switch-to-prev-tab and tab-line-switch-to-next-tab. + Simplify tab-line-switch-to-prev-tab and + tab-line-switch-to-next-tab. * lisp/tab-line.el (tab-line-switch-to-prev-tab) (tab-line-switch-to-next-tab): Use buffers instead of tabs. @@ -19463,19 +19520,20 @@ Don't use file-truepath in Eglot (bug#70036) - `file-truepath' is slow because of recursive calls and being implemented - in lisp. It seems to not be needed in eglot, but it is used behind the - scenes in `find-buffer-visiting', thus appearing in profiles. Moving - the implementation to a hash map will yield similar performance - benefits, but wouldn't require us to rewrite `file-truename' in C. - - * lisp/progmodes/eglot.el (eglot-lsp-server): Convert 'managed-buffers' - to a hashmap. - (eglot-uri-to-path): Don't use file-truepath, as it is too slow to be - included in the hot path. + `file-truepath' is slow because of recursive calls and being + implemented in lisp. It seems to not be needed in eglot, but it + is used behind the scenes in `find-buffer-visiting', thus + appearing in profiles. Moving the implementation to a hash map + will yield similar performance benefits, but wouldn't require us + to rewrite `file-truename' in C. + + * lisp/progmodes/eglot.el (eglot-lsp-server): Convert + 'managed-buffers' to a hashmap. + (eglot-uri-to-path): Don't use file-truepath, as it is too slow to + be included in the hot path. (eglot--on-shutdown): Use buffers from buffer map. - (eglot--managed-mode): Add buffer to map, rather than list. Also remove - it from the map on deactivation. + (eglot--managed-mode): Add buffer to map, rather than list. Also + remove it from the map on deactivation. (eglot-handle-notification): Expose server and get buffer from the buffer map. @@ -19490,8 +19548,8 @@ Revise android.texi to agree with last change - * doc/emacs/android.texi (Android Windowing): Revise to agree - with last change + * doc/emacs/android.texi (Android Windowing): Revise to agree with + last change 2024-04-03 Po Lu @@ -19505,7 +19563,7 @@ * java/org/gnu/emacs/EmacsMultitaskActivity.java (onCreate) (getAttachmentToken): New functions. - * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow): + * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow) : New variables. (onActivityDetached): Remove redundant isFinishing argument. (reparentTo): Reset the foregoing fields before registering with @@ -19516,11 +19574,11 @@ (WindowConsumer): New function getAttachmentToken. (isWindowEligible): New function. (registerWindowConsumer, registerWindow, removeWindowConsumer) - (detachWindow): Implement a new window management strategy on - API 29 and subsequent releases where both varieties of toplevel - window are permanently, except when reparented, bound to the - activities to which they attach, and Emacs establishes at - strategic junctures whether those activities remain present. + (detachWindow): Implement a new window management strategy on API + 29 and subsequent releases where both varieties of toplevel window + are permanently, except when reparented, bound to the activities + to which they attach, and Emacs establishes at strategic junctures + whether those activities remain present. (getTaskToken, pruneWindows): New functions. 2024-04-03 Mattias Engdegård @@ -19535,16 +19593,16 @@ Make lexical-binding cookie warning test more robust * test/lisp/emacs-lisp/bytecomp-tests.el - (bytecomp-tests--lexical-binding-cookie): - Run with lexical-binding both on and off. + (bytecomp-tests--lexical-binding-cookie): Run with lexical-binding + both on and off. 2024-04-03 Philip Kaludercic Check if lexical-binding is enabled before warning * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Suppress "file - has no `lexical-binding' directive" is the variable is non-nil, - as is the case with 'lisp-interaction-mode'. (Bug#70068) + has no `lexical-binding' directive" is the variable is non-nil, as + is the case with 'lisp-interaction-mode'. (Bug#70068) 2024-04-02 Juri Linkov @@ -19552,9 +19610,9 @@ * lisp/dired.el (dired-mode): Set buffer-local 'window-point-context-set-function' to remember 'dired-filename' - or 'position' in the window with the Dired buffer. - Set buffer-local 'window-point-context-use-function' to restore - the remembered position of the window point. + or 'position' in the window with the Dired buffer. Set + buffer-local 'window-point-context-use-function' to restore the + remembered position of the window point. * lisp/tab-bar.el (tab-bar--tab): Use window-point-context-set. (tab-bar-select-restore-context): New user option. @@ -19562,7 +19620,8 @@ * lisp/window.el: Add '(context . writable)' to 'window-persistent-parameters'. - (window-point-context-set, window-point-context-use): New functions. + (window-point-context-set, window-point-context-use): New + functions. (window-point-context-set-default-function) (window-point-context-use-default-function): New functions. (window-point-context-set-function) @@ -19572,12 +19631,12 @@ Fix json-insert unibyte buffer bug (bug#70007) - Previously, a unibyte target buffer could be put in an incorrect state - if json-insert was used to insert non-ASCII characters. + Previously, a unibyte target buffer could be put in an incorrect + state if json-insert was used to insert non-ASCII characters. - * src/json.c (Fjson_insert): Simplify. Don't attempt to decode the data - being inserted: it is guaranteed to be correct UTF-8 and is correct for - both unibyte and multibyte buffers. + * src/json.c (Fjson_insert): Simplify. Don't attempt to decode + the data being inserted: it is guaranteed to be correct UTF-8 and + is correct for both unibyte and multibyte buffers. * test/src/json-tests.el (json-serialize/roundtrip) (json-serialize/roundtrip-scalars): Extend tests. @@ -19587,21 +19646,24 @@ * src/json.c (Fjson_insert): Precise the behavior when the current buffer is multibyte and unibyte, respectively. - * doc/lispref/text.texi (Parsing JSON): Refer to the right function. + * doc/lispref/text.texi (Parsing JSON): Refer to the right + function. 2024-04-02 Juri Linkov - New condition/action entry 'category' for 'display-buffer' (bug#69983) + New condition/action entry 'category' for 'display-buffer' * doc/lispref/windows.texi (Choosing Window): Provide an example - of using '(category . comint)' in the condition of 'display-buffer-alist' - and in the action of 'display-buffer'. - (Buffer Display Action Alists): Add a new action alist entry 'category'. + of using '(category . comint)' in the condition of + 'display-buffer-alist' and in the action of 'display-buffer'. + (Buffer Display Action Alists): Add a new action alist entry + 'category'. * lisp/subr.el (buffer-match-p): Add a new condition 'category'. + (bug#69983) - * lisp/window.el (display-buffer): Document a new action alist entry - 'category'. + * lisp/window.el (display-buffer): Document a new action alist + entry 'category'. 2024-04-01 Mattias Engdegård @@ -19615,16 +19677,17 @@ Update JSON parser test and docs - * test/src/json-tests.el (json-parse-string/object): - Duplicated object keys are now retained in alist and plist output. + * test/src/json-tests.el (json-parse-string/object): Duplicated + object keys are now retained in alist and plist output. * etc/NEWS: Mention it. -2024-04-01 Po Lu +2024-04-01 Stefan Monnier - (scheme-syntax-propertize-sexp-comment): Allow `#;` in strings + (scheme-syntax-propertize-sexp-comment): Allow `#;' in strings - * lisp/progmodes/scheme.el (scheme-syntax-propertize-sexp-comment): - Don't get confused by `#;` inside strings and (normal) comments. + * lisp/progmodes/scheme.el + (scheme-syntax-propertize-sexp-comment): Don't get confused by + `#;' inside strings and (normal) comments. (scheme-sexp-comment-syntax-table): Comment-out, unused. 2024-04-01 Po Lu @@ -19638,13 +19701,13 @@ Add support for `ch' and `cw' dimension specifiers for images - * src/image.c (image_get_dimension, lookup_image): Handle `ch' - and `cw' dimension specifiers in addition to `em'. + * src/image.c (image_get_dimension, lookup_image): Handle `ch' and + `cw' dimension specifiers in addition to `em'. * src/dispextern.h: Add new members `face_font_height' and `face_font_width' to `struct image'. - * doc/lispref/display.texi (Image Descriptors): Document - `ch' and `cw'. + * doc/lispref/display.texi (Image Descriptors): Document `ch' and + `cw'. 2024-04-01 Mattias Engdegård @@ -19663,7 +19726,7 @@ 2024-04-01 Mattias Engdegård - Don't signal `json-end-of-file` for short nonempty bad JSON inputs + Don't signal `json-end-of-file' for short nonempty bad JSON inputs * src/json.c (json_parse_value): Generate a plain parse error. * test/src/json-tests.el (json-parse-string/short): Adapt test. @@ -19673,12 +19736,12 @@ Faster JSON parsing Speed up JSON parsing substantially by only UTF-8-parsing string - literals and only exactly once. Previously, json-parse-string always - first parsed the entire input and copied it to a new string, and then - validated each string literal twice. + literals and only exactly once. Previously, json-parse-string + always first parsed the entire input and copied it to a new + string, and then validated each string literal twice. - We no longer create an extra new string when interning an alist key, - nor do we garble plist keys with Unicode characters. + We no longer create an extra new string when interning an alist + key, nor do we garble plist keys with Unicode characters. * src/lread.c (intern_c_multibyte): New. * src/json.c (json_encode): Remove. @@ -19708,42 +19771,44 @@ * lisp/emacs-lisp/bytecomp.el (bytecomp--sort-call-in-place-p) (bytecomp--mutargs-nconc, bytecomp--mutargs-sort): New. (byte-compile-form, bytecomp--actually-important-return-value-p) - (mutating-fns): - Use a slightly more extendible scheme for specifying what arguments - a function mutates. Give `sort` special treatment. + (mutating-fns): Use a slightly more extendible scheme for + specifying what arguments a function mutates. Give `sort' special + treatment. 2024-04-01 Stefan Monnier - (scheme-syntax-propertize-sexp-comment): Handle nested sexp-comments + Handle nested sexp-comments in scheme.el. Well, I'm not completely sure this will work right in all cases, - because I've been confused about this in the past. - It works in my test case, at least. + because I've been confused about this in the past. It works in my + test case, at least. - * lisp/progmodes/scheme.el (scheme-syntax-propertize-sexp-comment): - Look for nested `#;` and mark them appropriately. + * lisp/progmodes/scheme.el + (scheme-syntax-propertize-sexp-comment): Look for nested `#;' and + mark them appropriately. 2024-04-01 Po Lu Fix androidsu's `make-process' file name handler * lisp/net/tramp-androidsu.el - (tramp-androidsu-handle-make-process): Disable exec loader - around call to setuid su binary. + (tramp-androidsu-handle-make-process): Disable exec loader around + call to setuid su binary. 2024-04-01 niceume (scheme-syntax-propertize-sexp-comment): Remove unused argument - * lisp/progmodes/scheme.el (scheme-syntax-propertize-sexp-comment): - Remove first arg, unused. + * lisp/progmodes/scheme.el + (scheme-syntax-propertize-sexp-comment): Remove first arg, unused. (scheme-syntax-propertize): Adjust calls accordingly. 2024-04-01 niceume scheme.el: Enable dealing with regular expression literal - * lisp/progmodes/scheme.el (scheme-syntax-propertize-regexp): New function. + * lisp/progmodes/scheme.el (scheme-syntax-propertize-regexp): New + function. (scheme-syntax-propertize): Use it. 2024-04-01 Po Lu @@ -19751,9 +19816,9 @@ Fix listing of Android root directory when it is accessible * src/androidvfs.c (android_root_closedir, android_root_dirfd) - (android_root_opendir): Allocate an ersatz file descriptor even - if directory is non-NULL, so that at-funcs will properly return - file status for virtual files in the root directory. + (android_root_opendir): Allocate an ersatz file descriptor even if + directory is non-NULL, so that at-funcs may properly return file + status for virtual files in the root directory. 2024-03-31 Michael Albinus @@ -19766,21 +19831,21 @@ Adapt Tramp version integrated in Emacs 29.3 - * lisp/net/trampver.el: - Adapt Tramp version integrated in Emacs 29.3. + * lisp/net/trampver.el: Adapt Tramp version integrated in Emacs + 29.3. 2024-03-31 Po Lu List special directories when reading root directory on Android - * src/androidvfs.c (root_vfs_ops): Substitute - android_root_opendir for android_root_opendir. + * src/androidvfs.c (root_vfs_ops): Substitute android_root_opendir + for android_root_opendir. (struct android_root_vdir): New structure. (root_fd, root_fd_references): New variables. (android_root_readdir, android_root_closedir, android_root_dirfd) (android_root_opendir): New functions. - (android_fstatat_1): Test provided fd against root_fd, and if - they match, prefix FILENAME with the name of the root directory. + (android_fstatat_1): Test provided fd against root_fd, and if they + match, prefix FILENAME with the name of the root directory. * lisp/ls-lisp.el (ls-lisp-insert-directory): If d-f-a-a signals an error while retrieving attributes, compile the alist of @@ -19822,33 +19887,30 @@ 2024-03-30 James Thomas - Make gnus cache work with group names having '/' - - Make `gnus-cache-file-name` use the existing - `nnmail-group-pathname`. - * lisp/gnus/gnus-cache.el (gnus-cache-file-name) (gnus-cache-update-article): - * lisp/gnus/nnmail.el (nnmail-group-pathname): + * lisp/gnus/nnmail.el (nnmail-group-pathname): Make gnus cache + work with group names having '/'. Make `gnus-cache-file-name' use + the existing `nnmail-group-pathname'. 2024-03-30 Theodor Thornhill Disable workDoneProgress if defcustom is nil - There is no need to receive the $/progress notifications from the server - if we don't want to render them. Because they are effectively ignored - when eglot-report-progress is nil we'd rather not waste cycles on serde - of the messages. + There is no need to receive the $/progress notifications from the + server if we don't want to render them. Because they are + effectively ignored when eglot-report-progress is nil we'd rather + not waste cycles on serde of the messages. - * lisp/progmodes/eglot.el (eglot-client-capabilities): use value from - defcustom to decide whether or not to advertise to server. + * lisp/progmodes/eglot.el (eglot-client-capabilities): Use value + from defcustom to decide whether or not to advertise to server. 2024-03-30 Theodor Thornhill Fix typo in docstring - * lisp/progmodes/eglot.el (eglot-lsp-server): eglot-current-server is - now exposed. + * lisp/progmodes/eglot.el (eglot-lsp-server): eglot-current-server + is now exposed. 2024-03-30 Eli Zaretskii @@ -19878,39 +19940,42 @@ * nt/INSTALL.W64: * src/Makefile.in: * src/emacs.c (main): - * src/lisp.h: - Remove JSON configuration options and references to it and Jansson from - documentation and build files. + * src/lisp.h: Remove JSON configuration options and references to + it and Jansson from documentation and build files. * etc/NEWS: Announce. 2024-03-30 Mattias Engdegård New JSON encoder (bug#70007) - It is in general at least 2x faster than the old encoder and does not - depend on any external library. Using our own code also gives us - control over translation details: for example, we now have full + It is in general at least 2x faster than the old encoder and does + not depend on any external library. Using our own code also gives + us control over translation details: for example, we now have full bignum support and tighter float formatting. * src/json.c (json_delete, json_initialized, init_json_functions) (json_malloc, json_free, init_json, json_out_of_memory) - (json_releae_object, check_string_without_embedded_nulls, json_check) - (json_check_utf8, lisp_to_json_nonscalar_1, lisp_to_json_nonscalar) - (lisp_to_json, json_available_p, ensure_json_available, json_insert) - (json_handle_nonlocal_exit, json_insert_callback): - Remove. Remaining uses updated. - * src/json.c (json_out_t, symset_t, struct symset_tbl) + (json_releae_object, check_string_without_embedded_nulls) + (json_check) + (json_check_utf8, lisp_to_json_nonscalar_1) + (lisp_to_json_nonscalar) + (lisp_to_json, json_available_p, ensure_json_available) + (json_insert) + (json_handle_nonlocal_exit, json_insert_callback): Remove. + Remaining uses updated. + (json_out_t, symset_t, struct symset_tbl) (symset_size, make_symset_table, push_symset, pop_symset) (cleanup_symset_tables, symset_hash, symset_expand, symset_add) - (json_out_grow_buf, cleanup_json_out, json_make_room, JSON_OUT_STR) + (json_out_grow_buf, cleanup_json_out, json_make_room) + (JSON_OUT_STR) (json_out_str, json_out_byte, json_out_fixnum, string_not_unicode) (json_plain_char, json_out_string, json_out_nest, json_out_unnest) - (json_out_object_cons, json_out_object_hash), json_out_array) + (json_out_object_cons, json_out_object_hash, json_out_array) (json_out_float, json_out_bignum, json_out_something) (json_out_to_string, json_serialize): New. - (Fjson_serialize, Fjson_insert): - New JSON encoder implementation. - * test/src/json-tests.el (json-serialize/object-with-duplicate-keys) + (Fjson_serialize, Fjson_insert): New JSON encoder implementation. + * test/src/json-tests.el + (json-serialize/object-with-duplicate-keys) (json-serialize/string): Update tests. 2024-03-30 David Ponce @@ -19918,10 +19983,10 @@ bug#69992: Minor improvement to image map transformation logic * lisp/image.el (image--compute-rotation): New function. - (image--compute-map, image--compute-original-map): Use it. - Ensure all transformations are applied or undone according to what - Emacs does internally. Call a transformation function only when - needed. Fix doc string. + (image--compute-map, image--compute-original-map): Use it. Ensure + all transformations are applied or undone according to what Emacs + does internally. Call a transformation function only when needed. + Fix doc string. (image--scale-map, image--rotate-map): Assume effective scale argument. (image--rotate-coord): Improve doc string. @@ -19937,9 +20002,9 @@ Add use-package-vc-prefer-newest user option - * lisp/use-package/use-package-core.el (use-package-vc-prefer-newest): - User option to prefer the latest commit (as opposed to the latest - release) of a package. + * lisp/use-package/use-package-core.el + (use-package-vc-prefer-newest): User option to prefer the latest + commit (as opposed to the latest release) of a package. (use-package-normalize--vc-arg): Check for use-package-vc-prefer-newest. @@ -20041,7 +20106,7 @@ Rationalize java/Makefile.in - * java/Makefile.in: (emacs.apk-in): Bring commentary up to date, + * java/Makefile.in (emacs.apk-in): Bring commentary up to date, and package classes.dex at this stage of the process. ($(APK_NAME)): Adjust to match. @@ -20054,94 +20119,96 @@ 2024-03-29 Stefan Monnier - * lisp/emacs-lisp/comp.el (comp--add-cond-cstrs): Consolidate 2 cases + * lisp/emacs-lisp/comp.el (comp--add-cond-cstrs): Consolidate 2 + cases. * lisp/cedet/semantic/tag.el (semantic-tag): New type 2024-03-29 Mattias Engdegård - `value<` manual entry adjustments (bug#69709) + `value<' manual entry adjustments (bug#69709) - * doc/lispref/sequences.texi (Sequence Functions): - Explain lexicographical ordering. Note the dual nature of `nil`. - Mention the depth limit. + * doc/lispref/sequences.texi (Sequence Functions): Explain + lexicographical ordering. Note the dual nature of `nil'. Mention + the depth limit. 2024-03-29 Mattias Engdegård * src/fns.c (Fvaluelt): More generous depth limit (20 -> 200). - This gives `value<` the same limit as `equal` which seems about right. + This gives `value<' the same limit as `equal' which seems about + right. 2024-03-29 Sam Steingold Support `shell-resync-dirs' on msys bash (Bug#70012) * lisp/shell.el (w32-application-type): Declare. - (shell-mode): Set `shell-dirstack-query' to `pwd -W` when using msys bash. + (shell-mode): Set `shell-dirstack-query' to `pwd -W' when using + msys bash. 2024-03-29 Mattias Engdegård - Better `sort` ignored-return-value warning + Better `sort' ignored-return-value warning * lisp/emacs-lisp/bytecomp.el (byte-compile-form) - (bytecomp--actually-important-return-value-p): - Special handling of `sort` that takes into account that it may return - an important value depending on the :in-place keyword argument. + (bytecomp--actually-important-return-value-p): Special handling of + `sort' that takes into account that it may return an important + value depending on the :in-place keyword argument. 2024-03-29 Mattias Engdegård - Remove `sort-on` (bug#69709) + Remove `sort-on' (bug#69709) * lisp/sort.el (sort-on): * doc/lispref/sequences.texi (Sequence Functions): - * etc/NEWS: - Remove the `sort-on` function which is now completely superseded by - the extended `sort` in features, ease of use, and performance. + * etc/NEWS: Remove the `sort-on' function which is now completely + superseded by the extended `sort' in features, ease of use, and + performance. 2024-03-29 Mattias Engdegård - Use new-style `sort` signature in Lisp manual examples + Use new-style `sort' signature in Lisp manual examples * doc/lispref/help.texi (Accessing Documentation): - * doc/lispref/strings.texi (Text Comparison): - Use the new sort calling convention (bug#69709). + * doc/lispref/strings.texi (Text Comparison): Use the new sort + calling convention. (bug#69709) 2024-03-29 Mattias Engdegård Faster non-destructive list sorting - Postpone the creation of a new list to after sorting which turns out to - be a lot faster (1.1x - 1.5x speedup). + Postpone the creation of a new list to after sorting which turns + out to be a lot faster (1.1x - 1.5x speedup). - * src/fns.c (sort_list, sort_vector, Fsort): - Create the new list when moving the data out from the temporary array. + * src/fns.c (sort_list, sort_vector, Fsort): Create the new list + when moving the data out from the temporary array. 2024-03-29 Mattias Engdegård - Speed up `sort` by special-casing the `value<` ordering + Speed up `sort' by special-casing the `value<' ordering This gives a 1.5x-2x speed-up when using the default :lessp value, by eliminating the Ffuncall overhead. * src/sort.c (order_pred_lisp, order_pred_valuelt): New. - (merge_state, inorder, binarysort, count_run, gallop_left, gallop_right) + (merge_state, inorder, binarysort, count_run, gallop_left) + (gallop_right) (merge_init, merge_lo, merge_hi, tim_sort): - * src/fns.c (Fsort): - When using value<, call it directly. + * src/fns.c (Fsort): When using value<, call it directly. 2024-03-29 Mattias Engdegård - New `sort` keyword arguments (bug#69709) + New `sort' keyword arguments (bug#69709) Add the :key, :lessp, :reverse and :in-place keyword arguments. The old calling style remains available and is unchanged. * src/fns.c (sort_list, sort_vector, Fsort): - * src/sort.c (tim_sort): - Add keyword arguments with associated new features. - All callers of Fsort adapted. - * test/src/fns-tests.el (fns-tests--shuffle-vector, fns-tests-sort-kw): - New test. + * src/sort.c (tim_sort): Add keyword arguments with associated new + features. All callers of Fsort adapted. + * test/src/fns-tests.el (fns-tests--shuffle-vector) + (fns-tests-sort-kw): New test. * doc/lispref/sequences.texi (Sequence Functions): Update manual. * etc/NEWS: Announce. @@ -20149,55 +20216,61 @@ Add back timsort key function handling (bug#69709) - The original timsort code did provide for a key (accessor) function - along with the necessary storage management, but we dropped it because - our `sort` function didn't need it. + The original timsort code did provide for a key (accessor) + function along with the necessary storage management, but we + dropped it because our `sort' function didn't need it. - Now it's been put back since it seems that it will come in handy after all. + Now it's been put back since it seems that it will come in handy + after all. - * src/fns.c (sort_list, sort_vector, Fsort): Pass Qnil as key function - to tim_sort. + * src/fns.c (sort_list, sort_vector, Fsort): Pass Qnil as key + function to tim_sort. * src/sort.c (reverse_slice, sortslice_copy) (sortslice_copy_incr, sortslice_copy_decr, sortslice_memcpy) (sortslice_memmove, sortslice_advance): New functions. (sortslice): New type. (struct stretch, struct reloc, merge_state) (binarysort, merge_init, merge_markmem, cleanup_mem) - (merge_register_cleanup, merge_getmem, merge_lo, merge_hi, merge_at) - (found_new_run, reverse_sortslice, resolve_fun, tim_sort): - Merge back previously discarded parts from the upstreams timsort code + (merge_register_cleanup, merge_getmem, merge_lo, merge_hi) + (merge_at) + (found_new_run, reverse_sortslice, resolve_fun, tim_sort): Merge + back previously discarded parts from the upstreams timsort code that dealt with key functions, and adapt them to fit in. 2024-03-29 Mattias Engdegård - Add `value<` (bug#69709) + Add `value<' (bug#69709) - It's a general-purpose polymorphic ordering function, like `<` but + It's a general-purpose polymorphic ordering function, like `<' but for any two values of the same type. - * src/data.c (syms_of_data): Add the `type-mismatch` error. + * src/data.c (syms_of_data): Add the `type-mismatch' error. (bits_word_to_host_endian): Move... - * src/lisp.h (bits_word_to_host_endian): ...here, and declare inline. - * src/fns.c (Fstring_lessp): Extract the bulk of this function to... - (string_cmp): ...this 3-way comparison function, for use elsewhere. + * src/lisp.h (bits_word_to_host_endian): ...here, and declare + inline. + * src/fns.c (Fstring_lessp): Extract the bulk of this function + to... + (string_cmp): ...this 3-way comparison function, for use + elsewhere. (bool_vector_cmp, value_cmp, Fvaluelt): New. * lisp/emacs-lisp/byte-opt.el (side-effect-free-fns, pure-fns): - Add `value<`, which is pure and side-effect-free. + Add `value<', which is pure and side-effect-free. * test/src/fns-tests.el (fns-value<-ordered, fns-value<-unordered) (fns-value<-type-mismatch, fns-value<-symbol-with-pos) - (fns-value<-circle, ert-deftest fns-value<-bool-vector): New tests. + (fns-value<-circle, ert-deftest fns-value<-bool-vector): New + tests. * doc/lispref/sequences.texi (Sequence Functions): * doc/lispref/numbers.texi (Comparison of Numbers): - * doc/lispref/strings.texi (Text Comparison): - Document the new value< function. + * doc/lispref/strings.texi (Text Comparison): Document the new + value< function. * etc/NEWS: Announce. 2024-03-29 Po Lu Prevent Android OS task trimming from deleting Emacs frames - * doc/emacs/android.texi (Android Windowing): Document proviso - on Android 7.0 and later. + * doc/emacs/android.texi (Android Windowing): Document proviso on + Android 7.0 and later. * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity) : New field. @@ -20211,7 +20284,7 @@ pp.el: Try and fix bug#70039 - * lisp/emacs-lisp/pp.el (pp-fill): Avoid splitting `#N#` or `#[`. + * lisp/emacs-lisp/pp.el (pp-fill): Avoid splitting `#N#' or `#['. * test/lisp/emacs-lisp/pp-tests.el (pp-tests--sanity): New test. 2024-03-28 Stefan Monnier @@ -20229,8 +20302,8 @@ copy-tree just image map, not entire image - * lisp/image.el (image--compute-original-map): Copy only - the image map. (Bug#69602) + * lisp/image.el (image--compute-original-map): Copy only the image + map. (Bug#69602) 2024-03-28 Rahguzar @@ -20253,16 +20326,17 @@ (test-parse-comments--no-assertion-error) (test-syntax-highlight-inline--caret-negated-wrong-face) (test-macro-test--file-no-asserts): New test cases. - * doc/misc/ert.texi (Syntax Highlighting Tests): More syntax examples. + * doc/misc/ert.texi (Syntax Highlighting Tests): More syntax + examples. 2024-03-28 Stefan Monnier (pcase-mutually-exclusive): Use auto-generated table - The `pcase-mutually-exclusive-predicates` table was not very - efficient since it grew like O(N²) with the number of - predicates. Replace it with an O(N) table that's auto-generated - from the `built-in-class` objects. + The `pcase-mutually-exclusive-predicates' table was not very + efficient since it grew like O(N²) with the number of predicates. + Replace it with an O(N) table that's auto-generated from the + `built-in-class' objects. * lisp/emacs-lisp/pcase.el (pcase-mutually-exclusive-predicates): Delete variable. @@ -20272,10 +20346,8 @@ 2024-03-28 Dmitry Gutov - (project-current): Add binding for 'non-essential' - - * lisp/progmodes/project.el (project-current): - Add binding for 'non-essential' (bug#69584). + * lisp/progmodes/project.el (project-current): Add binding for + 'non-essential'. (bug#69584) 2024-03-28 Spencer Baugh @@ -20285,22 +20357,25 @@ current-buffer instead of checking the modification time of the passed-in buffer. - This caused matches to not be shown if they weren't present in - the current in-Emacs state of the buffer. + This caused matches to not be shown if they weren't present in the + current in-Emacs state of the buffer. This was easily reproduced by writing a string to a file outside Emacs, then searching for that string with e.g. project-find-regexp. The string would seemingly not be found, although in reality it was found, just not displayed. - * lisp/progmodes/xref.el (xref--find-file-buffer): - Check buf, not current-buffer (bug#70008). + * lisp/progmodes/xref.el (xref--find-file-buffer): Check buf, not + current-buffer. (bug#70008) 2024-03-28 Stefan Monnier - Fix labeling of functions in which-key popup - - Add a few minor changes. + * lisp/which-key.el (which-key-this-command-keys-function) + (which-key-inhibit-display-hook) + (which-key-enable-god-mode-support) + (which-key--compute-binding) + (which-key--get-keymap-bindings-1): Fix labeling of functions in + which-key popup. Add a few minor changes. 2024-03-27 Po Lu @@ -20313,20 +20388,21 @@ 2024-03-26 Stefan Monnier - * lisp/help.el (help-function-arglist): Don't `substitute-command-keys` + * lisp/help.el (help-function-arglist): Don't + `substitute-command-keys'. 2024-03-26 Stefan Monnier cl-preloaded.el: Partly revert last change The change caused type-check errors in auth-source where they use - `:type function` constraints on object slots and expect those to + `:type function' constraints on object slots and expect those to be able to hold symbols. * lisp/emacs-lisp/cl-preloaded.el (function): Revert last change. - * test/src/data-tests.el (data-tests--cl-type-of): Use `cl-functionp` - rather than `functionp` to test `function`. + * test/src/data-tests.el (data-tests--cl-type-of): Use + `cl-functionp' rather than `functionp' to test `function'. 2024-03-26 Alan Mackenzie @@ -20346,17 +20422,18 @@ cl-preloaded.el: Fix the type lattice - We generally want types to form not just a DAG but a lattice. - If objects can be both `keyword` and `symbol-with-pos`, this - means there should be a more precise type describing this intersection. - If we ever find the need for such a refinement, we could add - such a `keyword-with-pos` type, but here I took the simpler - route of treating `keyword` not as a proper built-in type but - as a second-class type like `natnum`. + We generally want types to form not just a DAG but a lattice. If + objects can be both `keyword' and `symbol-with-pos', this means + there should be a more precise type describing this intersection. + If we ever find the need for such a refinement, we could add such + a `keyword-with-pos' type, but here I took the simpler route of + treating `keyword' not as a proper built-in type but as a + second-class type like `natnum'. While fixing this problem, also fix the problem we had where - `functionp` was not quite adequate to characterize objects of type - `function`, by introducing a new predicate `cl-functionp` for that. + `functionp' was not quite adequate to characterize objects of type + `function', by introducing a new predicate `cl-functionp' for + that. * lisp/emacs-lisp/cl-preloaded.el (cl-functionp): New function. (function): Use it. @@ -20368,14 +20445,15 @@ (cl-generic-generalizers): Remove corresponding test. * lisp/emacs-lisp/cl-macs.el (cl-deftype-satisfies): Add entry for - `keyword` type. + `keyword' type. * lisp/emacs-lisp/comp.el (comp-known-predicates): Fix type for - negative result of `characterp`. Remove duplicate `numberp` entry. - Fix types for `keywordp` now that `keyword` is not a built-in type any more. + negative result of `characterp'. Remove duplicate `numberp' + entry. Fix types for `keywordp' now that `keyword' is not a + built-in type any more. - * test/src/data-tests.el (data-tests--cl-type-of): Add a few cases. - Remove workaround for `function`. + * test/src/data-tests.el (data-tests--cl-type-of): Add a few + cases. Remove workaround for `function'. 2024-03-26 Andrea Corallo @@ -20407,9 +20485,9 @@ * java/org/gnu/emacs/EmacsService.java (EmacsService) : New constant. - * java/org/gnu/emacs/EmacsView.java (onCreateInputConnection): - Set TYPE_TEXT_VARIATION_PASSWORD and IME_FLAG_FORCE_ASII if mode - is IC_MODE_PASSWORD. + * java/org/gnu/emacs/EmacsView.java (onCreateInputConnection): Set + TYPE_TEXT_VARIATION_PASSWORD and IME_FLAG_FORCE_ASII if mode is + IC_MODE_PASSWORD. * lisp/subr.el (read-passwd): Set text-conversion-style to `password'. @@ -20417,8 +20495,7 @@ * src/androidgui.h (enum android_ic_mode): New value ANDROID_IC_MODE_PASSWORD. - * src/androidterm.c (android_reset_conversion): Handle - `password'. + * src/androidterm.c (android_reset_conversion): Handle `password'. * src/buffer.c (syms_of_buffer) <&BVAR (current_buffer, text_conversion_style)>: Update doc @@ -20449,20 +20526,17 @@ 2024-03-25 Juri Linkov - * lisp/vc/diff-mode.el (diff-setup-buffer-type): Remove "\n" from regexp. + * lisp/vc/diff-mode.el (diff-setup-buffer-type): Remove "\n" from + regexp. - Remove extra "\n" from the end of the "diff --git.*" part - of 'diff-outline-regexp' because "\n" is not used in outline-regexp - and causes problems in such cases like when killing hunks - in the diff buffer with outline-minor-mode that loses - the outline icons because outline--fix-buttons-after-change and + Remove extra "\n" from the end of the "diff --git.*" part of + 'diff-outline-regexp' because "\n" is not used in outline-regexp + and causes problems in such cases like when killing hunks in the + diff buffer with outline-minor-mode that loses the outline icons + because outline--fix-buttons-after-change and outline--fix-up-all-buttons are limited to the single line and can't match an outline line with a regexp that ends with "\n". -2024-03-25 Po Lu - - Merge remote-tracking branch 'savannah/master' into master-android-1 - 2024-03-25 Po Lu Port restart-emacs to Android 4.3 and earlier @@ -20514,29 +20588,29 @@ cl-preloaded.el: Improve docstrings of "kinds" - * lisp/emacs-lisp/cl-preloaded.el (cl--class): Improve the docstring. + * lisp/emacs-lisp/cl-preloaded.el (cl--class): Improve the + docstring. (built-in-class): Add a docstring. 2024-03-24 Stefan Monnier - * doc/emacs/help.texi (Name Help): Mention buttons (bug#69935) + * doc/emacs/help.texi (Name Help): Mention buttons. (bug#69935) 2024-03-24 Stefan Monnier edebug.el: Better strip instrumentation from backtraces - Rework the code that "cleans" the backtrace for `edebug-pop-to-backtrace`. - The main changes are the following: + Rework the code that "cleans" the backtrace for + `edebug-pop-to-backtrace'. The main changes are the following: - Strip instrumentation from "everywhere" rather than trying to limit the effect to "code" and leave "data" untouched. This is a worthy goal, but it is quite difficult to do since code contains data - (so we ended up touching data anyway) and data can also - contain code. + (so we ended up touching data anyway) and data can also contain + code. The risk of accidentally removing something because it happens - to look like instrumentation is very low, whereas it was very common - for instrumentation to remain in the backtrace. - + to look like instrumentation is very low, whereas it was very + common for instrumentation to remain in the backtrace. - Use a global hash-table to remember the work done, instead of using separate hash-table for each element. By using a weak hash-table we avoid the risk of leaks, and save a lot of work @@ -20545,31 +20619,31 @@ * lisp/emacs-lisp/edebug.el (edebug-make-enter-wrapper): Tweak code layout so the comments are more clear. - (edebug-unwrap): Remove redundant patterns for `closure` and `lambda`. - Add `:closure-dont-trim-context` to the `edebug-enter` pattern, - so it also gets removed (this should have been done in commit - 750bc57cbb8d). + (edebug-unwrap): Remove redundant patterns for `closure' and + `lambda'. Add `:closure-dont-trim-context' to the `edebug-enter' + pattern, so it also gets removed (this should have been done in + commit 750bc57cbb8d). (edebug--unwrap-cache): New var. (edebug-unwrap*): Use it. - (edebug--unwrap1): Delete function. Merged into `edebug-unwrap*`. - Also apply unwrapping to the contents of byte-code functions since they - can refer to lambda expressions captured by the closure. + (edebug--unwrap1): Delete function. Merged into `edebug-unwrap*'. + Also apply unwrapping to the contents of byte-code functions since + they can refer to lambda expressions captured by the closure. (edebug--symbol-prefixed-p): Rename from - `edebug--symbol-not-prefixed-p` and adjust meaning accordingly. - (edebug--strip-instrumentation): Adjust accordingly and simplify - a bit by unifying the "lambda" case and the "everything else" case. - (edebug--unwrap-frame): Use `cl-callf` and unwrap arguments even if - they've already been evaluated. + `edebug--symbol-not-prefixed-p' and adjust meaning accordingly. + (edebug--strip-instrumentation): Adjust accordingly and simplify a + bit by unifying the "lambda" case and the "everything else" case. + (edebug--unwrap-frame): Use `cl-callf' and unwrap arguments even + if they've already been evaluated. 2024-03-23 F. Jason Park Reuse command-indicator code for script lines in ERC - * lisp/erc/erc-goodies.el (erc-load-irc-script-lines): Move here from - main file and rework to always use `command-indicator' instead of only - partially, when available. Also use internal "send-action" and - "send-message" interfaces to defer command-handler output until - command lines have been inserted. + * lisp/erc/erc-goodies.el (erc-load-irc-script-lines): Move here + from main file and rework to always use `command-indicator' + instead of only partially, when available. Also use internal + "send-action" and "send-message" interfaces to defer + command-handler output until command lines have been inserted. * lisp/erc/erc.el (erc-process-input-line): Redo doc string. (erc-process-script-line): Fold exceptionally overlong line. (erc-load-irc-script-lines): Move to erc-goodies.el. (Bug#67032) @@ -20578,14 +20652,14 @@ Restore leading space to right-margin stamps in ERC - * lisp/erc/erc-stamp.el (erc-insert-timestamp-right): Insert a single - space character immediately before right-side stamps managed by - `erc-stamp--display-margin-mode'. Include it as part of the - `timestamp' field. This behavior was originally present in an earlier - draft of the changes for bug#60936, mainly to favor symmetry between - hard-wrapped fill styles and fill-wrap with regard to stamps. It was - subsequently removed to simplify management, so that the `field' and - `display' intervals aligned. + * lisp/erc/erc-stamp.el (erc-insert-timestamp-right): Insert a + single space character immediately before right-side stamps + managed by `erc-stamp--display-margin-mode'. Include it as part + of the `timestamp' field. This behavior was originally present in + an earlier draft of the changes for bug#60936, mainly to favor + symmetry between hard-wrapped fill styles and fill-wrap with + regard to stamps. It was subsequently removed to simplify + management, so that the `field' and `display' intervals aligned. * test/lisp/erc/erc-stamp-tests.el (erc-stamp--display-margin-mode--right): Update expected output. @@ -20593,14 +20667,15 @@ Remove mishandled erc-control-default-{fg,bg} faces - Partially revert those portions of 7b4ca9e609e "Leverage inverse-video - for erc-inverse-face" that introduced and managed explicit faces for - the "default" 99 color code. + Partially revert those portions of 7b4ca9e609e "Leverage + inverse-video for erc-inverse-face" that introduced and managed + explicit faces for the "default" 99 color code. * lisp/erc/erc-goodies.el (erc-control-default-fg) - (erc-control-default-bg): Remove unused faces originally meant to be - new in ERC 5.6. - (erc-get-fg-color-face, erc-get-bg-color-face): Return nil for n=99. + (erc-control-default-bg): Remove unused faces originally meant to + be new in ERC 5.6. + (erc-get-fg-color-face, erc-get-bg-color-face): Return nil for + n=99. (erc-controls-interpret, erc-controls-highlight): Preserve an interval's existing background so "if only the foreground color is set, the background color stays the same," as explained by @@ -20610,7 +20685,6 @@ Remove unused faces from various erc-goodies tests - * test/lisp/erc/erc-goodies-tests.el (erc-controls-highlight--spoilers) (erc-controls-highlight--inverse): Remove all mention of stricken @@ -20621,10 +20695,9 @@ 2024-03-23 Stefan Monnier - (describe-package-1): Fix bug#69712 - - * lisp/emacs-lisp/package.el (describe-package-1): Improve the test to - determine if `maintainers` contains a single cons or a list of conses. + * lisp/emacs-lisp/package.el (describe-package-1): Improve the + test to determine if `maintainers` contains a single cons or a + list of conses. (bug#69712) 2024-03-23 Joseph Turner @@ -20633,40 +20706,42 @@ Now, when transforming an image, its :map is recomputed to fit. Image map coordinates are integers, so when computing :map, coordinates are rounded. To prevent an image from drifting from - its map after repeated transformations, 'create-image' now adds - a new image property :original-map, which is combined with the + its map after repeated transformations, 'create-image' now adds a + new image property :original-map, which is combined with the image's transformation parameters to recompute :map. * lisp/image.el (image-recompute-map-p): Add user option to control whether :map is recomputed when an image is transformed. (create-image): Create :map from :original-map and vice versa. (image--delayed-change-size): Fix comment. - (image--change-size, image-rotate, image-flip-horizontally, - image-flip-vertically): Recompute image map after transformation + (image--change-size, image-rotate, image-flip-horizontally) + (image-flip-vertically): Recompute image map after transformation and mention 'image-recompute-map-p' in docstring. (image--compute-map): Add function to compute a map from original map. - (image--compute-original-map): Add function to compute an - original map from map. + (image--compute-original-map): Add function to compute an original + map from map. (image--scale-map): Add function to scale a map based on :scale. (image--rotate-map): Add function to rotate a map based on :rotation. (image--rotate-coord): Add function to rotate a map coordinate pair. (image--flip-map): Add function to flip a map based on :flip. - (image-increase-size, image-decrease-size, image-mouse-increase-size) + (image-increase-size, image-decrease-size) + (image-mouse-increase-size) (image-mouse-decrease-size): Mention 'image-recompute-map-p' in docstrings. * etc/NEWS: Add NEWS entry. - * doc/lispref/display.texi (Image Descriptors): Document :original-map - and new user option 'image-recompute-map-p'. + * doc/lispref/display.texi (Image Descriptors): Document + :original-map and new user option 'image-recompute-map-p'. * test/lisp/image-tests.el (image--compute-map-and-original-map): Test 'image--compute-map' and 'image--compute-original-map'. - (image-tests--map-equal): Add equality predicate to compare image maps. + (image-tests--map-equal): Add equality predicate to compare image + maps. (image-create-image-with-map): Test that 'create-image' adds :map and/or :original-map as appropriate. - (image-transform-map): Test functions related to transforming maps. - (Bug#69602) + (image-transform-map): Test functions related to transforming + maps. (Bug#69602) 2024-03-23 Jim Porter @@ -20676,35 +20751,37 @@ (eww-default-readable-p): New function... (eww-display-html): ... use it. - * test/lisp/net/eww-tests.el (eww-test/readable/default-readable): New - test. + * test/lisp/net/eww-tests.el (eww-test/readable/default-readable): + New test. * doc/misc/eww.texi (Basics): Document 'eww-readable-urls'. - * etc/NEWS: Announce this change (bug#68254). + * etc/NEWS: Announce this change. (bug#68254) 2024-03-23 Jim Porter Allow toggling "readable" mode in EWW - Additionally, add an option to prevent adding a new history entry for - each call of 'eww-readable' (bug#68254). + Additionally, add an option to prevent adding a new history entry + for each call of 'eww-readable'. (bug#68254) * lisp/net/eww.el (eww-retrieve): * lisp/net/eww.el (eww-readable-adds-to-history): New option. (eww-retrieve): Make sure we call CALLBACK in all configurations. (eww-render): Simplify how to pass encoding. - (eww--parse-html-region, eww-display-document): New functions, extracted - from... + (eww--parse-html-region, eww-display-document): New functions, + extracted from... (eww-display-html): ... here. (eww-document-base): New function. - (eww-readable): Toggle "readable" mode interactively, like with a minor - mode. Consult 'eww-readable-adds-to-history'. + (eww-readable): Toggle "readable" mode interactively, like with a + minor mode. Consult 'eww-readable-adds-to-history'. (eww-reload): Use 'eshell-display-document'. - * test/lisp/net/eww-tests.el (eww-test--with-mock-retrieve): Fix indent. - (eww-test/display/html, eww-test/readable/toggle-display): New tests. + * test/lisp/net/eww-tests.el (eww-test--with-mock-retrieve): Fix + indent. + (eww-test/display/html, eww-test/readable/toggle-display): New + tests. * doc/misc/eww.texi (Basics): Describe the new behavior. @@ -20717,8 +20794,8 @@ In my benchmarking, for large dired buffers, using 'regexp-opt' provides around a 3x speedup in omitting. - 'regexp-opt' takes around 5 milliseconds, so to avoid slowing - down omitting in small dired buffers we cache the return value. + 'regexp-opt' takes around 5 milliseconds, so to avoid slowing down + omitting in small dired buffers we cache the return value. Since omitting is now 3x faster, increase 'dired-omit-size-limit' by 3x. Also, document 'dired-omit-size-limit' better. @@ -20732,7 +20809,7 @@ 2024-03-23 Eli Zaretskii - * src/coding.c (produce_chars): Fix a thinko (bug#69966). + * src/coding.c (produce_chars): Fix a thinko. (bug#69966) 2024-03-23 Eli Zaretskii @@ -20757,10 +20834,6 @@ 8cf05d9be12 Fix 'shortdoc-copy-function-as-kill' d5901f3f05e Improve documentation of 'edebug-print-*' variables -2024-03-23 Po Lu - - Merge remote-tracking branch 'savannah/master' into master-android-1 - 2024-03-23 Po Lu Enable calling decode_coding_object with both SRC and DST_OBJECT Qnil @@ -20807,8 +20880,8 @@ Correctly handle non-BMP characters in Android content file names * lisp/term/android-win.el (android-encode-jni) - (android-decode-jni, android-jni): New coding system, for - Android file names and runtime data. + (android-decode-jni, android-jni): New coding system, for Android + file names and runtime data. * src/androidterm.h (syms_of_androidvfs): New function. @@ -20816,11 +20889,11 @@ special_coding_system. (android_saf_tree_readdir): Decode the file name using the android-jni coding system. - (special_vnodes): : Specify a file name coding system. + (special_vnodes) : Specify a file name coding system. (android_vfs_convert_name): New function. - (android_root_name): If a special coding system be specified for - a special vnode, convert components to it before invoking its - name function. + (android_root_name): If a special coding system be specified for a + special vnode, convert components to it before invoking its name + function. (syms_of_androidvfs): New symbol Qandroid_jni. * src/emacs.c (android_emacs_init): Call syms_of_androidvfs. @@ -20829,26 +20902,26 @@ Fix recent test regressions - * lisp/emacs-lisp/pp.el (pp-fill): Don't cut between `#` and `(`. + * lisp/emacs-lisp/pp.el (pp-fill): Don't cut between `#' and `('. * test/lisp/help-fns-tests.el (help-fns-test-built-in) (help-fns-test-interactive-built-in, help-fns-test-lisp-defun) (help-fns-test-lisp-defsubst): * test/src/emacs-module-tests.el (module/describe-function-1): - Adjust tests to new wording in `describe-function`. + Adjust tests to new wording in `describe-function'. 2024-03-22 Stefan Monnier - etc/NEWS: Document the new behavior of `describe-function` + * etc/NEWS: Document the new behavior of `describe-function`. I pushed commit accd79c93935 by accident. - Related to bug#69935 + Related to bug#69935. 2024-03-22 Stefan Monnier (pp-fill): Cut before parens and dots - The `pp-fill` code sometimes end up generating things like: + The `pp-fill' code sometimes end up generating things like: (foo . bar) @@ -20863,24 +20936,26 @@ * lisp/emacs-lisp/pp.el (pp-fill): Cut before parens and dots. - * test/lisp/emacs-lisp/pp-tests.el (pp-tests--dimensions): New function. + * test/lisp/emacs-lisp/pp-tests.el (pp-tests--dimensions): New + function. (pp-tests--cut-before): New test. 2024-03-22 Stefan Monnier (help-fns-function-description-header): Print functions' type - Instead of choosing English words to describe the kind of function, - use the actual type of the function object (from `cl-type-of`) - directly, and make it a button to display info about that type. + Instead of choosing English words to describe the kind of + function, use the actual type of the function object (from + `cl-type-of`) directly, and make it a button to display info about + that type. * lisp/help-fns.el (help-fns-function-description-header): Use the - function's type name in the description instead of "prose". - Use `insert` instead of `princ`, so as to preserve the text-properties + function's type name in the description instead of "prose". Use + `insert' instead of `princ', so as to preserve the text-properties of the button. - * lisp/emacs-lisp/cl-extra.el (cl-help-type): Move to `help-mode.el` - and rename to `help-type`. + * lisp/emacs-lisp/cl-extra.el (cl-help-type): Move to + `help-mode.el' and rename to `help-type'. (cl--describe-class): Adjust accordingly. * lisp/help-mode.el (help-type): New type, moved and renamed from @@ -20890,47 +20965,50 @@ Fix display of custom menus after putative cosmetic change - * lisp/wid-edit.el (widget-setup): Restore version from before - the previous commit. + * lisp/wid-edit.el (widget-setup): Restore version from before the + previous commit. 2024-03-22 Stefan Monnier - * lisp/help.el (help--analyze-key): Use `help-fns-function-name` + * lisp/help.el (help--analyze-key): Use `help-fns-function-name'. 2024-03-22 Stefan Monnier (help-fns-function-name): New function - Consolidate code used in profiler and help--describe-command, - and improve it while we're at it. - Also use #' to quote a few function names along the way. + Consolidate code used in profiler and help--describe-command, and + improve it while we're at it. Also use #' to quote a few function + names along the way. - * lisp/help-fns.el (help-fns--function-numbers, help-fns--function-names): - New vars. + * lisp/help-fns.el (help-fns--function-numbers) + (help-fns--function-names): New vars. (help-fns--display-function): New aux function. (help-fns-function-name): New function, inspired from - `help--describe-command`. + `help--describe-command'. - * lisp/help.el (help--describe-command): Use `help-fns-function-name`. - (help--for-help-make-sections): Remove redundant "" arg to `mapconcat`. + * lisp/help.el (help--describe-command): Use + `help-fns-function-name'. + (help--for-help-make-sections): Remove redundant "" arg to + `mapconcat'. * lisp/profiler.el (profiler-format-entry, profiler-fixup-entry): Delete functions. - (profiler-report-make-entry-part): Use `help-fns-function-name` instead. - (profiler-report-find-entry): Use `push-button`. + (profiler-report-make-entry-part): Use `help-fns-function-name' + instead. + (profiler-report-find-entry): Use `push-button'. - * lisp/transient.el (transient--debug): Use `help-fns-function-name` - when available. + * lisp/transient.el (transient--debug): Use + `help-fns-function-name' when available. 2024-03-22 Stefan Monnier (make-help-screen): Move most of the code out to a function - This avoids problems like variable-name capture and lets compiler messages - point to the actual source code. + This avoids problems like variable-name capture and lets compiler + messages point to the actual source code. - * lisp/help-macro.el (help--help-screen): New function, extracted from - `make-help-screen`. + * lisp/help-macro.el (help--help-screen): New function, extracted + from `make-help-screen'. (make-help-screen): Use it. 2024-03-21 Jonas Bernoulli @@ -20941,15 +21019,16 @@ (describe-symbol-backends): Fix addition of the "type" backend - That backend was added from `cl-extra.el` with no autoload, so - (describe-symbol `advice) failed to show the info about - the `advice` type unless `cl-extra.el` had been loaded beforehand. - `C-h o RET advice RET` worked by accident because the completion - table uses `cl-some` which is autoloaded from `cl-extra.el`. + That backend was added from `cl-extra.el' with no autoload, so + (describe-symbol `advice) failed to show the info about the + `advice' type unless `cl-extra.el' had been loaded beforehand. + `C-h o RET advice RET' worked by accident because the completion + table uses `cl-some' which is autoloaded from `cl-extra.el'. - * lisp/help-mode.el (describe-symbol-backends): Add the "type" backend. - * lisp/emacs-lisp/cl-extra.el (describe-symbol-backends): Don't add the - "type" backend here. + * lisp/help-mode.el (describe-symbol-backends): Add the "type" + backend. + * lisp/emacs-lisp/cl-extra.el (describe-symbol-backends): Don't + add the "type" backend here. 2024-03-21 Stefan Monnier @@ -20960,22 +21039,22 @@ 2024-03-21 Stefan Monnier - Speed up `describe-char` when a property has a large value + Speed up `describe-char' when a property has a large value - Doing `C-u C-x =` on a buffer position where the overlay/text - properties hold large values (e.g. inside the profiler report) - can be surprisingly slow because it pretty prints all those properties. - Change the code to do the pretty printing more lazily. - While at it, share that duplicated code between `descr-text.el` and - `wid-browse.el`. + Doing `C-u C-x =' on a buffer position where the overlay/text + properties hold large values (e.g. inside the profiler report) can + be surprisingly slow because it pretty prints all those + properties. Change the code to do the pretty printing more + lazily. While at it, share that duplicated code between + `descr-text.el' and `wid-browse.el'. * lisp/emacs-lisp/pp.el (pp-insert-short-sexp): New function. * lisp/descr-text.el (describe-text-sexp): Delete function. - (describe-property-list): Use `pp-insert-short-sexp` instead. + (describe-property-list): Use `pp-insert-short-sexp' instead. - * lisp/wid-browse.el (widget-browse-sexp): Use `pp-insert-short-sexp` - and `widget--allow-insertion`. + * lisp/wid-browse.el (widget-browse-sexp): Use + `pp-insert-short-sexp' and `widget--allow-insertion'. 2024-03-21 Stefan Monnier @@ -20983,30 +21062,31 @@ * lisp/wid-edit.el: Use #' to quote function names. (widget--simplify-menu, widget-echo-help): Explicitly specify the - lexenv to `eval`. - (widget-choose, widget-get-sibling, widget-setup, widget-field-find) + lexenv to `eval'. + (widget-choose, widget-get-sibling, widget-setup) + (widget-field-find) (widget-choice-action, widget-checklist-value-get) (widget-radio-value-create, widget-radio-value-set) (widget-radio-action, widget-editable-list-delete-at) - (widget-group-value-create, widget-choice-prompt-value): Use `dolist`. - (widget-convert): Hoist `(setq current` out of the ifs. - (widget-convert): Hoist `(setq keys` out of the if. - (widget-after-change): Hoist `(setq begin` out of the if. - (widget-default-completions): Use `cond`. - (widget-default-value-set): Hoist `goto-char` out of the if. - (widget-choice-action): Hoist `nth` out of the if. - (widget-checkbox-action): Hoist `widget-apply` out of the if. - (widget-editable-list-value-create): Hoist `car` out of the if. - (widget-editable-list-entry-create): Hoist `(setq child ...` out of the if. - (widget-documentation-link-action): Fold `if` into `cond`. - (widget-key-sequence-value-to-external): Use `key-parse`. - (widget-plist-convert-option, widget-alist-convert-option): - Hoist `(setq key-type` out of the if. + (widget-group-value-create, widget-choice-prompt-value): Use + `dolist'. + (widget-convert): Hoist `(setq current' out of the ifs. + (widget-convert): Hoist `(setq keys' out of the if. + (widget-after-change): Hoist `(setq begin' out of the if. + (widget-default-completions): Use `cond'. + (widget-default-value-set): Hoist `goto-char' out of the if. + (widget-choice-action): Hoist `nth' out of the if. + (widget-checkbox-action): Hoist `widget-apply' out of the if. + (widget-editable-list-value-create): Hoist `car' out of the if. + (widget-editable-list-entry-create): Hoist `(setq child ...' out + of the if. + (widget-documentation-link-action): Fold `if' into `cond'. + (widget-key-sequence-value-to-external): Use `key-parse'. + (widget-plist-convert-option, widget-alist-convert-option): Hoist + `(setq key-type' out of the if. 2024-03-21 Stefan Monnier - (widget--allow-insertion): New macro - * lisp/wid-edit.el (widget--allow-insertion): New macro. (widget-specify-insert, widget-insert, widget-setup) (widget-default-delete, widget-editable-list-insert-before) @@ -21018,9 +21098,8 @@ It's often necessary to update the representation of a single object in a table (e.g a struct, whose identity does not change - when its slots' - values are changed). To do so, now the function may be called - like this: + when its slots' values are changed). To do so, now the function + may be called like this: (vtable-update-object table object) @@ -21028,12 +21107,13 @@ (vtable-update-object table object object) - This also documents the behavior of the just-discovered limitation filed - as bug#69837. - * lisp/emacs-lisp/vtable.el (vtable-update-object): Make 'old-object' - argument optional. (Bug#69666) + This also documents the behavior of the just-discovered limitation + filed as bug#69837. + * lisp/emacs-lisp/vtable.el (vtable-update-object): Make + 'old-object' argument optional. (Bug#69666) - * doc/misc/vtable.texi (Interface Functions): Update documentation. + * doc/misc/vtable.texi (Interface Functions): Update + documentation. * etc/NEWS: Add news entry. @@ -21059,8 +21139,8 @@ being compared with the list rather than the intended value in it; that could cause the whole table to be recomputed, sometimes unnecessarily. - * lisp/emacs-lisp/vtable.el (vtable--recompute-numerical): Test the - car of ELEM, not ELEM itself, which is a list. (Bug#69927) + * lisp/emacs-lisp/vtable.el (vtable--recompute-numerical): Test + the car of ELEM, not ELEM itself, which is a list. (Bug#69927) 2024-03-21 Po Lu @@ -21069,18 +21149,19 @@ * doc/emacs/android.texi (Android Windowing): Document restrictions on number of windows under Android 4.4 and earlier. - * java/AndroidManifest.xml.in - : Assign each class - of activity a unique task affinity. + * java/AndroidManifest.xml.in + : + : Assign each class of activity a unique + task affinity. * java/org/gnu/emacs/EmacsDesktopNotification.java (display1): Remove redundant priority assignment. * java/org/gnu/emacs/EmacsOpenActivity.java (onCreate): Handle - file URIs when processing attachments from a mailto URI, and - check for KitKat before opening content ones. + file URIs when processing attachments from a mailto URI, and check + for KitKat before opening content ones. - * java/org/gnu/emacs/EmacsWindow.java + * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow) : (figureChange): Replace coordinate HashMap with a SparseArray. * java/org/gnu/emacs/EmacsWindowAttachmentManager.java @@ -21113,12 +21194,12 @@ Respect file display names during Android drag-and-drop - * java/org/gnu/emacs/EmacsService.java (buildContentName): - Remove redundant projection argument to resolver.query. + * java/org/gnu/emacs/EmacsService.java (buildContentName): Remove + redundant projection argument to resolver.query. - * java/org/gnu/emacs/EmacsWindow.java (onDragEvent): If a - content resolver is available, attempt to convert content URIs - into file names in advance. + * java/org/gnu/emacs/EmacsWindow.java (onDragEvent): If a content + resolver is available, attempt to convert content URIs into file + names in advance. * lisp/term/android-win.el (android-handle-dnd-event): Adjust correspondingly. @@ -21129,9 +21210,9 @@ Reported by john muhl . - * test/lisp/vc/vc-git-tests.el (vc-git-test--with-repo): Set - some environment variables (lifted from vc-tests.el) to let - 'git commit' compute dummy author and committer identities. + * test/lisp/vc/vc-git-tests.el (vc-git-test--with-repo): Set some + environment variables (lifted from vc-tests.el) to let 'git + commit' compute dummy author and committer identities. 2024-03-19 Eli Zaretskii @@ -21145,13 +21226,15 @@ 2024-03-19 Andrea Corallo - * test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-test-93): Add test. + * test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-test-93): Add + test. 2024-03-19 Andrea Corallo - * Use 'cl-type-of' in comp-cstr.el + Use 'cl-type-of' in comp-cstr.el - * lisp/emacs-lisp/comp-cstr.el (comp-cstr-union-homogeneous-no-range) + * lisp/emacs-lisp/comp-cstr.el + (comp-cstr-union-homogeneous-no-range) (comp-cstr-union-1-no-mem, comp-cstr-intersection-no-hashcons): Make use of 'cl-type-of' in place of 'type-of'. @@ -21174,8 +21257,7 @@ available. All callers changed. * lisp/international/mule-cmds.el (set-default-coding-systems): - Fix file name coding system as utf-8-unix on Android as on Mac - OS. + Fix file name coding system as utf-8-unix on Android as on Mac OS. * src/androidvfs.c (enum android_vnode_type): New enum ANDROID_VNODE_CONTENT_AUTHORITY_NAMED. @@ -21183,28 +21265,28 @@ type. (displayNameHash): New function. (android_get_content_name): New argument WITH_CHECKSUM. If - present, treat the final two components as a pair of checksum - and display name, and verify and exclude the two. + present, treat the final two components as a pair of checksum and + display name, and verify and exclude the two. (android_authority_name): Provide new argument as appropriate. (android_authority_initial_name): New function. 2024-03-18 Stefan Monnier - * lisp/emacs-lisp/cl-preloaded.el (user-ptr): Add predicate + * lisp/emacs-lisp/cl-preloaded.el (user-ptr): Add predicate. - Merge branch 'cl-type-of' (bug#69739) + Merge branch 'cl-type-of'. (bug#69739) 2024-03-18 Stefan Monnier - Followup changes to `cl-type-of` + Followup changes to `cl-type-of' - These changes came up while working on `cl-type-of` but are not - directly related to the new `cl-type-of`. + These changes came up while working on `cl-type-of' but are not + directly related to the new `cl-type-of'. The BASE_PURESIZE bump was needed at some point on one of my machine, not sure why. * src/puresize.h (BASE_PURESIZE): Bump up. - * src/sqlite.c (bind_value): Don't use `Ftype_of`. + * src/sqlite.c (bind_value): Don't use `Ftype_of'. * lisp/emacs-lisp/seq.el (seq-remove-at-position): Simplify. * lisp/emacs-lisp/cl-preloaded.el (finalizer): New (previously missing) type. @@ -21214,48 +21296,53 @@ (primitive-function): New type - The type hierarchy and `cl-type-of` code assumed that `subr-primitive` - only applies to functions, but since it also accepts special-forms it makes - it an unsuitable choice since it can't be a subtype of `compiled-function`. - So, use a new type `primitive-function` instead. + The type hierarchy and `cl-type-of' code assumed that + `subr-primitive' only applies to functions, but since it also + accepts special-forms it makes it an unsuitable choice since it + can't be a subtype of `compiled-function'. So, use a new type + `primitive-function' instead. * lisp/subr.el (subr-primitive-p): Fix docstring (bug#69832). (primitive-function-p): New function. * lisp/emacs-lisp/cl-preloaded.el (primitive-function): Rename - from `subr-primitive` since `subr-primitive-p` means something else. + from `subr-primitive' since `subr-primitive-p' means something + else. - * src/data.c (Fcl_type_of): Return `primitive-function` instead - of `subr-primitive` for C functions. + * src/data.c (Fcl_type_of): Return `primitive-function' instead of + `subr-primitive' for C functions. (syms_of_data): Adjust accordingly. - * test/src/data-tests.el (data-tests--cl-type-of): Remove workaround. + * test/src/data-tests.el (data-tests--cl-type-of): Remove + workaround. 2024-03-18 Stefan Monnier - (cl-type-of): New function to return more precise types (bug#69739) + (cl-type-of): New function to return more precise types - * src/data.c (Fcl_type_of): New function, extracted from `Ftype_of`. - Make it return more precise types for symbols, integers, and subrs. + * src/data.c (Fcl_type_of): New function, extracted from + `Ftype_of'. Make it return more precise types for symbols, + integers, and subrs. (Ftype_of): Use it. (syms_of_data): Define the corresponding new symbols and defsubr the new function. * doc/lispref/objects.texi (Type Predicates): Document it. - * src/comp.c (emit_limple_insn): Use `Fcl_type_of`. + * src/comp.c (emit_limple_insn): Use `Fcl_type_of'. - * lisp/emacs-lisp/cl-preloaded.el (subr): Demote it to `atom`. - (subr-native-elisp, subr-primitive): Add `compiled-function` as + * lisp/emacs-lisp/cl-preloaded.el (subr): Demote it to `atom'. + (subr-native-elisp, subr-primitive): Add `compiled-function' as parent instead. (special-form): New type. * lisp/emacs-lisp/eieio-core.el (cl--generic-struct-tag): * lisp/emacs-lisp/cl-generic.el (cl--generic-typeof-generalizer): - Use `cl-type-of`. - cl--generic--unreachable-types): Update accordingly. + Use `cl-type-of'. cl--generic--unreachable-types): Update + accordingly. - test/src/data-tests.el (data-tests--cl-type-of): New test. + * test/src/data-tests.el (data-tests--cl-type-of): New test. + (bug#69739) 2024-03-18 Po Lu @@ -21267,10 +21354,10 @@ 2024-03-17 Juri Linkov * lisp/tab-bar.el (tab-bar-select-restore-windows): New defcustom. - (tab-bar-select-restore-windows): New function. - (tab-bar-select-tab): Let-bind window-restore-killed-buffer-windows - to tab-bar-select-restore-windows (bug#68235). + (tab-bar-select-tab): Let-bind + window-restore-killed-buffer-windows to + tab-bar-select-restore-windows. (bug#68235) 2024-03-17 Protesilaos Stavrou @@ -21292,18 +21379,20 @@ * etc/themes/modus-vivendi-deuteranopia-theme.el: * etc/themes/modus-vivendi-theme.el: * etc/themes/modus-vivendi-tinted-theme.el: - * etc/themes/modus-vivendi-tritanopia-theme.el: Update the - palette of each theme. + * etc/themes/modus-vivendi-tritanopia-theme.el: Update the palette + of each theme. - * etc/themes/modus-themes.el (require): Remove call to cl-lib - and do not use relevant functions. + * etc/themes/modus-themes.el (require): Remove call to cl-lib and + do not use relevant functions. (modus-themes-operandi-colors, modus-themes-vivendi-colors) - (modus-themes-version, modus-themes-report-bug): Remove old - calls to 'make-obsolete' and related. + (modus-themes-version, modus-themes-report-bug): Remove old calls + to 'make-obsolete' and related. - (modus-themes--annotate-theme): Tweak the completion annotation function. + (modus-themes--annotate-theme): Tweak the completion annotation + function. - (modus-themes--org-block): Deprecate the user option 'modus-themes-org-blocks'. + (modus-themes--org-block): Deprecate the user option + 'modus-themes-org-blocks'. (modus-themes-faces): Update faces. (modus-themes-custom-variables): Update the list of custom variables. @@ -21315,30 +21404,28 @@ Fix vc-dir when "remote" Git branch is local - While in there, add that "tracking" branch to the vc-dir - buffer. For bug#68183. + While in there, add that "tracking" branch to the vc-dir buffer. - * lisp/vc/vc-git.el (vc-git-dir-extra-headers): Reduce - boilerplate with new function 'vc-git--out-ok'; stop calling + * lisp/vc/vc-git.el (vc-git-dir-extra-headers): Reduce boilerplate + with new function 'vc-git--out-ok'; stop calling vc-git-repository-url when REMOTE is "." to avoid throwing an error; display tracking branch; prefer "none ()" to - "not ()" since that reads more grammatically - correct. + "not ()" since that reads more grammatically correct. (vc-git--out-ok): Add documentation. (vc-git--out-str): New function to easily get the output from a Git command. * test/lisp/vc/vc-git-tests.el (vc-git-test--with-repo) (vc-git-test--run): New helpers, defined to steer clear of vc-git-- internal functions. - (vc-git-test-dir-track-local-branch): Check that vc-dir does - not crash. + (vc-git-test-dir-track-local-branch): Check that vc-dir does not + crash. (bug#68183) 2024-03-17 Po Lu Improve C++ standard library detection on Android - * configure.ac: Stop relaying --with-ndk-cxx-shared to the - nested invocation of configure. + * configure.ac: Stop relaying --with-ndk-cxx-shared to the nested + invocation of configure. * build-aux/ndk-build-helper-1.mk (SYSTEM_LIBRARIES): @@ -21354,9 +21441,8 @@ * cross/ndk-build/ndk-build.mk.in (NDK_BUILD_CXX_STL) (NDK_BUILD_CXX_LDFLAGS): New variables. - * cross/ndk-build/ndk-resolve.mk (NDK_SYSTEM_LIBRARIES): - Introduce several other C++ libraries sometimes present on - Android. + * cross/ndk-build/ndk-resolve.mk (NDK_SYSTEM_LIBRARIES): Introduce + several other C++ libraries sometimes present on Android. (NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE)): Insert NDK_BUILD_CXX_STL when any of these new C++ libraries are requested. @@ -21372,18 +21458,18 @@ debug.el: Prevent re-entering the debugger for the same error - We can have several active `handler-bind`s that all want to invoke the - debugger, in which case we can have the following sequence: + We can have several active `handler-bind's that all want to invoke + the debugger, in which case we can have the following sequence: - The more deeply nested handler calls the debugger. - - After a while the user invokes `debugger-continue`. - - `signal_or_quit` propagates the error up the stack to the + - After a while the user invokes `debugger-continue'. + - `signal_or_quit' propagates the error up the stack to the second handler, which calls the debugger again. - The user thus ends up right back at the same place, as if - `debugger-continue` had not be processed. + `debugger-continue' had not be processed. - Fix this by remembering the last processed error and skipping - the debugger if we bump into it again. + Fix this by remembering the last processed error and skipping the + debugger if we bump into it again. * lisp/emacs-lisp/debug.el (debugger--last-error): New var. (debugger--duplicate-p): New function. @@ -21414,7 +21500,8 @@ 2024-03-16 Martin Rudalics - In window-related documentation write 'symbol' instead of 'constant' + In window-related documentation write 'symbol' instead of + 'constant'. Suggested by Michael Heerdegen . @@ -21423,7 +21510,7 @@ * lisp/window.el (display-buffer--lru-window) (display-buffer-use-least-recent-window): In doc-strings write 'symbol' instead of 'constant'. - * doc/lispref/windows.texi (Window Configurations): Write + * doc/lisprqef/windows.texi (Window Configurations): Write 'symbol' instead of 'constant'. 2024-03-16 Po Lu @@ -21445,36 +21532,36 @@ Correct doc strings for x-*-keysym - * src/xterm.c (syms_of_xterm): Clarify whether x-*-keysym - affects the modifier key reported for a keysym or the other way - around. + * src/xterm.c (syms_of_xterm): Clarify whether x-*-keysym affects + the modifier key reported for a keysym or the other way around. 2024-03-16 Po Lu - * doc/lispref/frames.texi (Window System Selections): Fix misuse of xref. + * doc/lispref/frames.texi (Window System Selections): Fix misuse + of xref. 2024-03-16 Po Lu Fix calc.texi for Texinfo 4.13 - * doc/misc/calc.texi (Fractions): Replace instances of @U with - raw Unicode characters and adjust the document encoding - suitably. + * doc/misc/calc.texi (Fractions): Replace instances of @U with raw + Unicode characters and adjust the document encoding suitably. 2024-03-15 Stefan Monnier - * lisp/emacs-lisp/bindat.el (sint): Burp in dynbind (bug#69749) + * lisp/emacs-lisp/bindat.el (sint): Burp in dynbind. (bug#69749) 2024-03-15 Andrea Corallo - * Don't install unnecessary trampolines (bug#69573) + Don't install unnecessary trampolines (bug#69573) * lisp/emacs-lisp/comp-run.el (comp-subr-trampoline-install): Check that subr-name actually matches the target subr. 2024-03-15 Andrea Corallo - * lisp/emacs-lisp/advice.el (comp-subr-trampoline-install): Don't declare. + * lisp/emacs-lisp/advice.el (comp-subr-trampoline-install): Don't + declare. 2024-03-15 Martin Rudalics @@ -21485,7 +21572,7 @@ 2024-03-15 Martin Rudalics - Further adjustments for restoring killed buffer windows (Bug#68235) + Further adjustments for restoring killed buffer windows * etc/NEWS: Announce 'window-restore-killed-buffer-windows'. * src/buffer.h (struct buffer) : New field last_name_. @@ -21504,28 +21591,30 @@ 'window-kept-windows-functions'. * doc/lispref/windows.texi (Window Configurations): Describe 'window-restore-killed-buffer-windows' which replaces - 'window-kept-windows-functions'. + 'window-kept-windows-functions'. (Bug#68235) 2024-03-15 Juri Linkov - * lisp/vc/diff-mode.el (diff-mode-menu): Add menu item "Apply all hunks". - - It's bound to the recently added command 'diff-apply-buffer'. + * lisp/vc/diff-mode.el (diff-mode-menu): Add menu item "Apply all + hunks". It is bound to the recently added command + 'diff-apply-buffer'. 2024-03-15 Spencer Baugh - With visible-completions, only bind RET when completion is selected + With visible-completions, only bind RET when completion is + selected. - Previously, if minibuffer-visible-completions was non-nil, we bound RET - whenever the *Completions* buffer was visible. This meant that RET in - completion-in-region would not enter a newline, which is a somewhat - annoying behavior change from minibuffer-visible-completions=nil. + Previously, if minibuffer-visible-completions was non-nil, we + bound RET whenever the *Completions* buffer was visible. This + meant that RET in completion-in-region would not enter a newline, + which is a somewhat annoying behavior change from + minibuffer-visible-completions=nil. Now, we only bind RET when a completion is selected. This means RET will newline in completion-in-region. - So that completion help continues to suggest the correct keys, - we also add minibuffer-visible-completions--always-bind. When + So that completion help continues to suggest the correct keys, we + also add minibuffer-visible-completions--always-bind. When let-bound to a non-nil value, it makes the minibuffer-visible-completions binds always active. We let-bind it around substitute-command-keys. @@ -21536,8 +21625,8 @@ minibuffer-visible-completions--filter. (bug#68801) * lisp/simple.el (minibuffer-visible-completions--always-bind) (completion-setup-function): Let-bind - minibuffer-visible-completions--always-bind so the completion - help is correct. + minibuffer-visible-completions--always-bind so the completion help + is correct. 2024-03-15 Kévin Le Gouguec @@ -21572,42 +21661,40 @@ 2024-03-15 Dmitry Gutov - (project--value-in-dir): Ensure that the global value is still honored - - * lisp/progmodes/project.el (project--value-in-dir): - Ensure that the global value of the variable is still honored, - when the variable is not in dir-locals. + * lisp/progmodes/project.el (project--value-in-dir): Ensure that + the global value of the variable is still honored, when the + variable is not in dir-locals. 2024-03-15 Patrick Bader - fix: project submodule detection does not work for worktrees + * lisp/progmodes/project.el (project--submodule-p): Fix issue + where project submodule detection did not work for worktrees. 2024-03-15 Stefan Monnier (set-auto-mode): Streamline to fix bug#67795 - The old code tested if the mode function is `fboundp` but in an + The old code tested if the mode function is `fboundp' but in an inconsistent way and without paying attention to - `major-mode-remap`. - - * lisp/files.el (set-auto-mode-0): Return `:keep` rather than nil if - the mode was already set. And emit a warning when the mode function - doesn't exist. - (set-auto-mode): Remove checks that the mode function exists now that - `set-auto-mode-0` does it for us. Adjust to the new return values of - that function, and simplify the code using a big `or` instead of - a sequence of steps each setting&testing `done`. - (hack-local-variables--find-variables): Use `major-mode-remap` - when skipping the "mode:" entries that specify modes we don't have. - Also, when (eq handle-mode t), don't bother building a list of results - only to return a single element in the end. + `major-mode-remap'. + + * lisp/files.el (set-auto-mode-0): Return `:keep' rather than nil + if the mode was already set. And emit a warning when the mode + function doesn't exist. + (set-auto-mode): Remove checks that the mode function exists now + that `set-auto-mode-0' does it for us. Adjust to the new return + values of that function, and simplify the code using a big `or' + instead of a sequence of steps each setting&testing `done'. + (hack-local-variables--find-variables): Use `major-mode-remap' + when skipping the "mode:" entries that specify modes we don't + have. Also, when (eq handle-mode t), don't bother building a list + of results only to return a single element in the end. 2024-03-15 Stefan Monnier - (customize-mode): Fix bug#69501 - * lisp/cus-edit.el (customize-mode): Use the predicate arg of - `completing-read` instead of binding `completion-regexp-list`. + `completing-read' instead of binding `completion-regexp-list'. + (bug#69501) 2024-03-15 Po Lu @@ -21618,21 +21705,23 @@ 2024-03-14 Juri Linkov - * lisp/textmodes/flyspell.el (flyspell-check-changes): New user option. - - (flyspell--mode-on): Add flyspell-check-changes to post-command-hook - when flyspell-check-changes is non-nil. - (flyspell--mode-off): Remove flyspell-check-changes from post-command-hook. - (flyspell-check-changes): New function (bug#61874). + * lisp/textmodes/flyspell.el (flyspell-check-changes): New user + option. + (flyspell--mode-on): Add flyspell-check-changes to + post-command-hook when flyspell-check-changes is non-nil. + (flyspell--mode-off): Remove flyspell-check-changes from + post-command-hook. + (flyspell-check-changes): New function. (bug#61874) 2024-03-14 Juri Linkov * lisp/progmodes/project.el: Don't run modes from .dir-locals.el. - - (project--value-in-dir): Use 'alist-get' on 'file-local-variables-alist' - to avoid calling 'hack-local-variables-apply' via + (project--value-in-dir): Use 'alist-get' on + 'file-local-variables-alist' to avoid calling + 'hack-local-variables-apply' via 'hack-dir-local-variables-non-file-buffer' because it might enable - undesirable modes such as flyspell-mode in a temporary buffer (bug#69740). + undesirable modes such as flyspell-mode in a temporary buffer. + (bug#69740) 2024-03-14 Juri Linkov @@ -21662,14 +21751,14 @@ Detect the readline support for Python shell completion * lisp/progmodes/python.el - (python-shell-comint-watch-for-first-prompt-output-filter): - Detect the readline support. + (python-shell-comint-watch-for-first-prompt-output-filter): Detect + the readline support. (python-shell-readline-completer-delims): Update docstring. (python-shell-completion-native-setup): Move the readline detection code to ... (python-shell-readline-detect): ... new function. - (python-shell-completion-native-turn-on-maybe): Skip if Python - has no readline support. + (python-shell-completion-native-turn-on-maybe): Skip if Python has + no readline support. (python-shell-completion-at-point): Respect the delimiter of readline completer in non-native completion. * test/lisp/progmodes/python-tests.el @@ -21684,11 +21773,11 @@ (python-completion-at-point-native-with-eldoc-1): Skip tests if Python has no readline support. (python-shell-completion-at-point-jedi-completer): Add test for - non-native Python shell completion. (bug#68559) + non-native Python shell completion. (bug#68559) 2024-03-14 Adam Porter - Handle the case where 'vtable-update-object' doesn't find old object + Handle cases where 'vtable-update-object' doesn't find old object. * lisp/emacs-lisp/vtable.el (vtable-update-object): If OLD-OBJECT is not found, don't call ELT, since SEQ-POSITION may return nil. @@ -21696,10 +21785,10 @@ 2024-03-14 Phil Hagelberg (tiny change) - bug#69685: Add language server for Fennel to eglot + Add language server for Fennel to eglot - * lisp/progmodes/eglot.el (eglot-server-programs): Add - fennel-ls language server. + * lisp/progmodes/eglot.el (eglot-server-programs): Add fennel-ls + language server. (bug#69685) 2024-03-14 StrawberryTea (tiny change) @@ -21716,8 +21805,8 @@ (thing-at-point-hexadecimal-regexp): Extract regexps from... (number-at-point): ...here. Use them in 'number-at-point'. (number): Add 'bounds-of-thing-at-point' property as - `forward-word' does not always return the right boundary, - e.g., in latex-mode buffers. (Bug#69239) + `forward-word' does not always return the right boundary, e.g., in + latex-mode buffers. (Bug#69239) 2024-03-14 Noé Lopez @@ -21727,14 +21816,13 @@ variable to disable JavaScript in WebKit sessions. (Bug#68604) * etc/NEWS: - * doc/emacs/misc.texi (Embedded Webkit Widgets): Document - the change. + * doc/emacs/misc.texi (Embedded Webkit Widgets): Document the + change. 2024-03-14 Adam Porter - * lisp/emacs-lisp/vtable.el (vtable-update-object): Fix. - - The order of the arguments to 'seq-position' was wrong, and it did not + * lisp/emacs-lisp/vtable.el (vtable-update-object): Fix. The + order of the arguments to 'seq-position' was wrong, and it did not compare the correct values. (Bug#69664) 2024-03-14 Raffael Stocker @@ -21749,10 +21837,10 @@ (w32_wnd_proc, globals_of_w32fns, maybe_pass_notification): Register and manage session notifications in GUI Emacs. * src/w32console.c (initialize_w32_display, find_ime_window): - * src/w32xfns.c (drain_message_queue): Register notifications - and reset keyboard hook state in console Emacs. - * src/w32.c (term_ntproc): Un-register session notifications - when terminating. + * src/w32xfns.c (drain_message_queue): Register notifications and + reset keyboard hook state in console Emacs. + * src/w32.c (term_ntproc): Un-register session notifications when + terminating. 2024-03-14 Po Lu @@ -21782,8 +21870,8 @@ Fix name of gnus-notification(s)-close; ignore argument - * lisp/gnus/gnus-notifications.el (gnus-notifications-close): Original - name was probably a typo. + * lisp/gnus/gnus-notifications.el (gnus-notifications-close): + Original name was probably a typo. 2024-03-13 Po Lu @@ -21796,8 +21884,8 @@ Prevent freezes on macOS (bug#69561) - * src/nsterm.m (ns_select_1): Store pending input_events. Always call - [NSApp run]. + * src/nsterm.m (ns_select_1): Store pending input_events. Always + call [NSApp run]. 2024-03-13 Po Lu @@ -21815,10 +21903,10 @@ functions on those systems. * lisp/gnus/gnus-notifications.el (gnus-notifications-action) - (gnus-notification-close): Remove dismissed notifications from - the notification to message map. - (gnus-notifications-notify): Call android-notifications-notify - if possible. + (gnus-notification-close): Remove dismissed notifications from the + notification to message map. + (gnus-notifications-notify): Call android-notifications-notify if + possible. * src/androidselect.c (android_init_emacs_desktop_notification): Update accordingly. @@ -21828,57 +21916,52 @@ 2024-03-12 Jeremy Bryant - * lisp/which-key.el (which-key--create-pages): Untabify. - - * lisp/which-key.el (which-key--pad-column): Untabify. + * lisp/which-key.el (which-key--create-pages) + (which-key--pad-column): Untabify. 2024-03-12 Jeremy Bryant - Use string-empty-p for readability. - - * lisp/which-key.el (which-key--maybe-get-prefix-title): - Use string-empty-p for readability. + * lisp/which-key.el (which-key--maybe-get-prefix-title): Use + string-empty-p for readability. 2024-03-12 Jeremy Bryant - Don't quote t - * lisp/which-key.el (which-key--replace-in-repl-list-many): Don't quote t. 2024-03-12 Jeremy Bryant - Use declare form instead of put for clarity - - * lisp/which-key.el (which-key-add-keymap-based-replacements): - Use declare form instead of put property. + * lisp/which-key.el (which-key-add-keymap-based-replacements): Use + declare form instead of put property. 2024-03-12 Stefan Monnier Try and avoid hardcoding lists of function types - * lisp/bind-key.el (bind-key--get-binding-description): - Show docstrings for compiled functions also. Don't hardcode knowledge + * lisp/bind-key.el (bind-key--get-binding-description): Show + docstrings for compiled functions also. Don't hardcode knowledge about various particular kinds of functions. * lisp/emacs-lisp/bytecomp.el (display-call-tree): Remove special - support for functions with a `byte-code` body since we never generate - that nowadays. Don't hardcode knowledge - about various particular kinds of functions. + support for functions with a `byte-code' body since we never + generate that nowadays. Don't hardcode knowledge about various + particular kinds of functions. 2024-03-12 Stefan Monnier Cleanup some type predicates - Use the new `cl--define-built-in-type` to reduce the manually - maintained list of built-in type predicates. - Also tweak docstrings to use "supertype" rather than "super type", - since it seems to be what we use elsewhere. + Use the new `cl--define-built-in-type' to reduce the manually + maintained list of built-in type predicates. Also tweak + docstrings to use "supertype" rather than "super type", since it + seems to be what we use elsewhere. - * lisp/subr.el (special-form-p): Remove redundant `fboundp` test. - (compiled-function-p): Don'Return nil for subrs that aren't functions. + * lisp/subr.el (special-form-p): Remove redundant `fboundp' test. + (compiled-function-p): Don't return nil for subrs that aren't + functions. - * lisp/emacs-lisp/cl-macs.el (type predicates): Trim down the list. + * lisp/emacs-lisp/cl-macs.el (type predicates): Trim down the + list. * lisp/emacs-lisp/cl-preloaded.el (cl--define-built-in-type): Register the corresponding predicate if applicable. @@ -21888,7 +21971,8 @@ cl-generic: Signal an error when a type specializer won't work - * lisp/emacs-lisp/cl-generic.el (cl--generic--unreachable-types): New var. + * lisp/emacs-lisp/cl-generic.el (cl--generic--unreachable-types): + New var. (cl-generic-generalizers :extra "typeof"): Use it to signal an error for those types we can't handle. @@ -21899,8 +21983,8 @@ `run-at-time' keeps `timer-list' list sorted by inserting each timer based on the timer value. This means that `timer--time-less-p' needs is executed ~N*N/2 times for each N - pending messages. This means that jsonrpc becomes unusable - for connections that generate a lot messages at the same time. + pending messages. This means that jsonrpc becomes unusable for + connections that generate a lot messages at the same time. * lisp/jsonrpc.el (Version): Bump to 1.0.25. (jsonrpc--process-filter): Improve performance by activating @@ -21908,10 +21992,10 @@ 2024-03-12 Stefan Monnier - (comp-known-predicates): Fix overly optimistic `functionp` + (comp-known-predicates): Fix overly optimistic `functionp' - * lisp/emacs-lisp/comp.el (comp-known-predicates): `functionp` can also - be true for `cons` objects. + * lisp/emacs-lisp/comp.el (comp-known-predicates): `functionp' can + also be true for `cons' objects. 2024-03-12 Po Lu @@ -21924,8 +22008,8 @@ (gnus-convert-old-newsrc): Remove ancient converters - * lisp/gnus/gnus-start.el (gnus-convert-old-newsrc): Remove converters - from 2004 and before. + * lisp/gnus/gnus-start.el (gnus-convert-old-newsrc): Remove + converters from 2004 and before. * lisp/gnus/legacy-gnus-agent.el: Delete file. 2024-03-12 Po Lu @@ -21952,12 +22036,12 @@ * src/android.h (struct android_emacs_service): New function. * src/androidselect.c (android_notifications_notify_1) - (Fandroid_notifications_notify): New parameter QCresident; save - it within notification lists. + (Fandroid_notifications_notify): New parameter QCresident; save it + within notification lists. (android_notification_deleted, android_notification_action): - Adjust for changes to the format of notification lists and - cancel non-resident notifications when an action is selected. - (syms_of_androidselect): : New symbol. + Adjust for changes to the format of notification lists and cancel + non-resident notifications when an action is selected. + (syms_of_androidselect) : New symbol. 2024-03-12 Po Lu @@ -22020,49 +22104,51 @@ * src/androidvfs.c (java_string_class): Export. - * src/keyboard.c (kbd_buffer_get_event) : - Call callback specified by the event. + * src/keyboard.c (kbd_buffer_get_event) : Call + callback specified by the event. - * src/termhooks.h (enum event_kind) [HAVE_ANDROID]: New - enum NOTIFICATION_EVENT. + * src/termhooks.h (enum event_kind) [HAVE_ANDROID]: New enum + NOTIFICATION_EVENT. 2024-03-11 Paul Eggert Change bare-symbol back to match intent - Also, attempt to document the intent better. - Problem reported by Alan Mackenzie (Bug#69684). + Also, attempt to document the intent better. Problem reported by + Alan Mackenzie. + * src/data.c (Fbare_symbol): Do not signal if the SYM is a symbol with position and symbols-with-pos-enabled is nil. Instead, ignore symbols-with-pos-enabled, as that was the intent. - * test/src/data-tests.el (data-tests-bare-symbol): - New test, to help prevent this bug from reoccurring. + * test/src/data-tests.el (data-tests-bare-symbol): New test, to + help prevent this bug from reoccurring. (Bug#69684) 2024-03-11 Michael Heerdegen Improve pp-emacs-lisp-code backquote form printing - * lisp/emacs-lisp/pp.el (pp--quoted-or-unquoted-form-p): New helper - function. - (pp--insert-lisp): Take care of quoted, backquoted and - unquoted expressions; print using an recursive call. - (pp--format-list): Exclude more cases from printing as a function call - by default. Print lists whose second-last element is an (un)quoting - symbol using dotted list syntax; e.g. (a b . ,c) instead of (a b \, c). + * lisp/emacs-lisp/pp.el (pp--quoted-or-unquoted-form-p): New + helper function. + (pp--insert-lisp): Take care of quoted, backquoted and unquoted + expressions; print using an recursive call. + (pp--format-list): Exclude more cases from printing as a function + call by default. Print lists whose second-last element is an + (un)quoting symbol using dotted list syntax; e.g. (a b . ,c) + instead of (a b \, c). 2024-03-11 Michael Heerdegen Fix pp-emacs-lisp-code printing of symbols - * lisp/emacs-lisp/pp.el (pp--insert-lisp): Print symbols - readably (bug#69168). + * lisp/emacs-lisp/pp.el (pp--insert-lisp): Print symbols readably. + (bug#69168) 2024-03-11 Petteri Hintsanen (tiny change) (bindat--unpack-item): Sanitize vector length - - * lisp/emacs-lisp/bindat.el (bindat--unpack-item): Sanitize vector length + * lisp/emacs-lisp/bindat.el (bindat--unpack-item): Sanitize vector + length. 2024-03-10 Andreas Schwab @@ -22075,47 +22161,51 @@ 2024-03-10 Jim Porter - Let 'browse-url-interactive-arg' return more values for NEW-WINDOW-FLAG + Let 'browse-url-interactive-arg' return more values for + NEW-WINDOW-FLAG. - Previously it always returned t or nil for NEW-WINDOW-FLAG, but now it - can return the actual prefix arg when appropriate. This lets functions - for 'browse-url-browser-function' consult it and do more things than - just open a new window or not (for example, you could use "C--" as the - prefix arg to do something special in a custom function). + Previously it always returned t or nil for NEW-WINDOW-FLAG, but + now it can return the actual prefix arg when appropriate. This + lets functions for 'browse-url-browser-function' consult it and do + more things than just open a new window or not (for example, you + could use "C--" as the prefix arg to do something special in a + custom function). - * lisp/net/browse-url.el (browse-url-interactive-arg): Use 'xor' to - adjust the value of 'current-prefix-arg'. + * lisp/net/browse-url.el (browse-url-interactive-arg): Use 'xor' + to adjust the value of 'current-prefix-arg'. (browse-url): Update docstring. 2024-03-10 Stefan Monnier - syncdoc-type-hierarchy.el: Sort and remove `comp` dependency + syncdoc-type-hierarchy.el: Sort and remove `comp' dependency - * admin/syncdoc-type-hierarchy.el: Delay loading `org-table` so as + * admin/syncdoc-type-hierarchy.el: Delay loading `org-table' so as not to "pollute" the table with Org-specific types. (syncdoc-all-types): Sort the types topologically from the root. - (syncdoc-hierarchy): Use `cl--class-parents` instead if - `comp--direct-supertypes` so we don't depend on `comp-cstr`. - (syncdoc-make-type-table): Sort the table so supertypes always come before - their subtypes. - (syncdoc-make-type-table): Require `org-table` here. + (syncdoc-hierarchy): Use `cl--class-parents' instead if + `comp--direct-supertypes' so we don't depend on `comp-cstr'. + (syncdoc-make-type-table): Sort the table so supertypes always + come before their subtypes. + (syncdoc-make-type-table): Require `org-table' here. * doc/lispref/elisp_type_hierarchy.jpg: * doc/lispref/elisp_type_hierarchy.txt: Refresh. 2024-03-10 Tim Ruffing - * src/keyboard.c (read_key_sequence): Remove MSVC compatibility hack + * src/keyboard.c (read_key_sequence): Remove MSVC compatibility + hack. 2024-03-10 Tim Ruffing Stefan Monnier - * lisp/calc/calc-prog.el: Switch to new method of detecting end of kbd macro + * lisp/calc/calc-prog.el: Switch to new method of detecting end of + kbd macro. 'read-char' will no longer return -1 as of - ac82baea1c41ec974ad49f2861ae6c06bda2b4ed. This switches to a cleaner - method of detecting whether the end of a keyboard macro has been - reached. + ac82baea1c41ec974ad49f2861ae6c06bda2b4ed. This switches to a + cleaner method of detecting whether the end of a keyboard macro + has been reached. * lisp/calc/calc-prog.el (calc--at-end-of-kmacro-p): New function. (calc-kbd-skip-to-else-if): Use the function. @@ -22125,8 +22215,8 @@ Remove workarounds for solved 'read-event' bug * lisp/subr.el (read-char-choice-with-read-key): - * lisp/net/dbus.el (dbus-call-method): - Remove workarounds for the bug fixed in the previous commit + * lisp/net/dbus.el (dbus-call-method): Remove workarounds for the + bug fixed in the previous commit ac82baea1c41ec974ad49f2861ae6c06bda2b4ed, where 'read-event', 'read-char' and 'read-char-exclusively' could return wrongly -1. In the case of lisp/dbus.el, this reverts commit @@ -22134,21 +22224,22 @@ 2024-03-10 Tim Ruffing - Continue reading in 'read-event' etc. at the end of a keyboard macro + Continue reading in 'read-event' etc. at the end of a keyboard + macro This fixes a bug that could make 'read-event', 'read-char', and - 'read-char-exclusive' erroneously return -1, an internal magic return - value of 'read_char' leaked from C to lisp. Instead of returning -1, the - aforementioned lisp functions now transparently continue reading - available input (e.g., from the keyboard) when reaching the end of a - keyboard macro. - - * src/keyboard.c (read_char, read_key_sequence): Move handling - of the end of a keyboard macro from 'read_char' to its caller + 'read-char-exclusive' erroneously return -1, an internal magic + return value of 'read_char' leaked from C to lisp. Instead of + returning -1, the aforementioned lisp functions now transparently + continue reading available input (e.g., from the keyboard) when + reaching the end of a keyboard macro. + + * src/keyboard.c (read_char, read_key_sequence): Move handling of + the end of a keyboard macro from 'read_char' to its caller 'read_key_sequence', which is the only caller that can meaningfully deal with this case. - * src/macros.c (Fexecute_kbd_macro): Document how the end of keyboard - macro is processed. + * src/macros.c (Fexecute_kbd_macro): Document how the end of + keyboard macro is processed. * etc/NEWS: Announce this change. 2024-03-10 Tim Ruffing @@ -22156,29 +22247,31 @@ * src/keyboard.c (requeued_events_pending_p): New function * src/keyboard.c, src/keyboard.h (requeued_events_pending_p): Add - function 'requeued_events_pending_p' (whose name was made available in - the previous commit). As opposed to the previous function with the same - name, the new function covers both command and other events. + function 'requeued_events_pending_p' (whose name was made + available in the previous commit). As opposed to the previous + function with the same name, the new function covers both command + and other events. * src/keyboard.c (Finput_pending_p): Use the new function. 2024-03-10 Tim Ruffing - * src/keyboard.c (requeued_events_pending_p): Improve name and fix comment + * src/keyboard.c (requeued_events_pending_p): Improve name and fix + comment. - * src/keyboard.c, src/keyboard.h (requeued_events_pending_p): Rename to - 'requeued_command_events_pending_p' to clarify that the function covers - only command events. Fix wrong comment that claimed that the function - was unused. - * src/process.c (wait_reading_process_output): Update caller to use the - new name. + * src/keyboard.c (requeued_events_pending_p): + * src/keyboard.h (requeued_events_pending_p): Rename to + 'requeued_command_events_pending_p' to clarify that the function + covers only command events. Fix wrong comment that claimed that + the function was unused. + * src/process.c (wait_reading_process_output): Update caller to + use the new name. 2024-03-10 Tim Ruffing Extract check for end of macro to function * src/macros.h (at_end_of_macro_p): - * src/macros.c (at_end_of_macro_p): - New function. + * src/macros.c (at_end_of_macro_p): New function. * src/keyboard.c (read_char): Use the new function. 2024-03-10 F. Jason Park @@ -22187,20 +22280,20 @@ * lisp/erc/erc-stamp.el (erc-stamp--lr-date-on-pre-modify): Remove disruptive assertion for now. - (erc-stamp--time-as-day): Attempt to fix date being rewound by a whole - day when daylight saving time is in effect. Do this by forcing the - `dst' slot of the `decoded-time' object to -1 and the `zone' to nil. + (erc-stamp--time-as-day): Attempt to fix date being rewound by a + whole day when daylight saving time is in effect. Do this by + forcing the `dst' slot of the `decoded-time' object to -1 and the + `zone' to nil. 2024-03-10 F. Moukayed (tiny change) Redefine erc-spoiler-face to indicate revealed text - * lisp/erc/erc-goodies.el (erc-spoiler-face): Redefine role and redo - definition to inherit from `erc-control-default-face'. - (erc-controls-propertize): Include `cursor-face' in the applied hover - properties for spoiler text, and ensure they aren't clobbered by other - built-in modules, like `button'. - (Bug#69597) + * lisp/erc/erc-goodies.el (erc-spoiler-face): Redefine role and + redo definition to inherit from `erc-control-default-face'. + (erc-controls-propertize): Include `cursor-face' in the applied + hover properties for spoiler text, and ensure they aren't + clobbered by other built-in modules, like `button'. (Bug#69597) 2024-03-10 F. Jason Park @@ -22209,34 +22302,35 @@ * lisp/erc/erc-button.el (erc-button-remove-old-buttons): Restore original `mouse-face' values in areas marked as important after clobbering. - * lisp/erc/erc.el (erc--reserve-important-text-props): New function. + * lisp/erc/erc.el (erc--reserve-important-text-props): New + function. (erc--restore-important-text-props): New function. - * test/lisp/erc/erc-tests.el (erc--restore-important-text-props): New - test. - (Bug#69597) + * test/lisp/erc/erc-tests.el (erc--restore-important-text-props): + New test. (Bug#69597) 2024-03-10 F. Jason Park Leverage inverse-video for erc-inverse-face - * lisp/erc/erc-goodies.el (erc-inverse-face): Specify face attribute - `:inverse-video' (née :reverse-video) to swap foreground and - background colors over affected intervals, as per + * lisp/erc/erc-goodies.el (erc-inverse-face): Specify face + attribute `:inverse-video' (née :reverse-video) to swap foreground + and background colors over affected intervals, as per https://modern.ircdocs.horse/formatting#reverse-color. (erc-control-default-fg erc-control-default-bg): New faces for IRC color-code number 99. Ignore the ERC convention of prefixing control-code-derived faces with "fg:" and "bg:" because it doesn't - comport with modern sensibilities, which demand identifiers normally - be namespaced. - (erc-get-bg-color-face, erc-get-fg-color-face): Return new, dedicated - faces instead of `default', and don't nest them in a list. + comport with modern sensibilities, which demand identifiers + normally be namespaced. + (erc-get-bg-color-face, erc-get-fg-color-face): Return new, + dedicated faces instead of `default', and don't nest them in a + list. * test/lisp/erc/erc-goodies-tests.el - (erc-controls-highlight--inverse): Redo completely, asserting behavior - described in the spec linked to above. - (erc-controls-highlight--spoilers): New test based on the body of the - old `erc-controls-highlight--inverse', except without shadowing - `erc-insert-modify-hook' with an unrealistic, idealized value. Adjust - expected buffer state to reflect the new role of + (erc-controls-highlight--inverse): Redo completely, asserting + behavior described in the spec linked to above. + (erc-controls-highlight--spoilers): New test based on the body of + the old `erc-controls-highlight--inverse', except without + shadowing `erc-insert-modify-hook' with an unrealistic, idealized + value. Adjust expected buffer state to reflect the new role of `erc-spoiler-face'. (Bug#69597) 2024-03-09 Stefan Monnier @@ -22245,8 +22339,6 @@ 2024-03-09 Stefan Monnier - (eglot-server-programs): Comment and whitespace only change - * lisp/progmodes/eglot.el (eglot-server-programs): Add comment. Make the definition fit into 80 columns. @@ -22263,14 +22355,16 @@ * lisp/info-look.el (perl-mode): Simplify. - * lisp/cedet/semantic/symref/grep.el (semantic-symref-filepattern-alist): - Don't bother listing TS alternatives. + * lisp/cedet/semantic/symref/grep.el + (semantic-symref-filepattern-alist): Don't bother listing TS + alternatives. * lisp/emulation/viper.el (viper-vi-state-mode-list): Don't bother listing CPerl alternative. - * lisp/progmodes/gud.el (gud-tooltip-activate-mouse-motions-if-enabled): - Take into account the modes hierarchy. + * lisp/progmodes/gud.el + (gud-tooltip-activate-mouse-motions-if-enabled): Take into account + the modes hierarchy. (gud-tooltip-modes): Don't bother listing TS alternatives. * .dir-locals.el (c-ts-mode): Simplify. @@ -22279,15 +22373,16 @@ Add non-TS modes as extra parent of TS modes (bug#68246) - Record the fact that TS modes are alternatives to the non-TS - modes using the new `derived-mode-add-parents` functionality. - Do the same for long standing similar issues with CPerl-mode. + Record the fact that TS modes are alternatives to the non-TS modes + using the new `derived-mode-add-parents' functionality. Do the + same for long standing similar issues with CPerl-mode. * lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode): * lisp/textmodes/toml-ts-mode.el (toml-ts-mode): * lisp/textmodes/html-ts-mode.el (html-ts-mode): * lisp/textmodes/css-mode.el (css-ts-mode): - * lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode, tsx-ts-mode): + * lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode) + (tsx-ts-mode): * lisp/progmodes/sh-script.el (bash-ts-mode): * lisp/progmodes/rust-ts-mode.el (rust-ts-mode): * lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode): @@ -22302,29 +22397,29 @@ * lisp/progmodes/dockerfile-ts-mode.el (dockerfile-ts-mode): * lisp/progmodes/csharp-mode.el (csharp-ts-mode): * lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode): - * lisp/progmodes/c-ts-mode.el (c-ts-mode, c++-ts-mode): - Add non-TS mode as extra parent. + * lisp/progmodes/c-ts-mode.el (c-ts-mode, c++-ts-mode): Add non-TS + mode as extra parent. - * lisp/progmodes/cperl-mode.el (cperl-mode): Add `perl-mode` as + * lisp/progmodes/cperl-mode.el (cperl-mode): Add `perl-mode' as extra parent. 2024-03-09 Stefan Monnier (dir-locals-collect-variables): Avoid spurious safety warnings - * lisp/files.el (dir-locals-collect-variables): Silence warnings for - extra parents' variables. + * lisp/files.el (dir-locals-collect-variables): Silence warnings + for extra parents' variables. 2024-03-09 Andrea Corallo Run 'syncdoc-update-type-hierarchy'. - * doc/lispref/elisp_type_hierarchy.jpg: Update. - * doc/lispref/elisp_type_hierarchy.txt: Likewise. + * doc/lispref/elisp_type_hierarchy.jpg: Update. + * doc/lispref/elisp_type_hierarchy.txt: Likewise. 2024-03-09 Andrea Corallo - * 'syncdoc-type-hierarchy.el' update due to recent changes + Update 'syncdoc-type-hierarchy.el' after recent changes * admin/syncdoc-type-hierarchy.el (syncdoc-all-types): Update. @@ -22345,10 +22440,10 @@ Enable stack overflow recovery on Android * src/sysdep.c (handle_sigsegv): Return after restoring the - original signal handler, which should proceed to call debuggerd - to generate a tombstone. - (init_sigsegv): Save the original signal handler on Android, to - be restored after a signal is received. + original signal handler, which should proceed to call debuggerd to + generate a tombstone. + (init_sigsegv): Save the original signal handler on Android, to be + restored after a signal is received. (init_signals): Call init_sigsegv on Android. 2024-03-09 Eli Zaretskii @@ -22367,23 +22462,24 @@ Do interactive mode tagging for locate.el * lisp/locate.el (locate-tags, locate-find-directory) - (locate-find-directory-other-window): Do interactive mode - tagging. (Bug#69619) + (locate-find-directory-other-window): Do interactive mode tagging. + (Bug#69619) 2024-03-08 Stefan Monnier (eieio--generic-subclass-specializers): Autoload class - * lisp/emacs-lisp/eieio-core.el (eieio--generic-subclass-specializers): - Don't forget to handle autoloaded classes. + * lisp/emacs-lisp/eieio-core.el + (eieio--generic-subclass-specializers): Don't forget to handle + autoloaded classes. 2024-03-08 Stefan Monnier EIEIO: Fix regression (bug#69631) Not sure why earlier tests did not catch it, but there are more - places where we bump into problems because `eieio--class-precedence-list` - now returns also non-EIEIO classes. + places where we bump into problems because + `eieio--class-precedence-list' now returns also non-EIEIO classes. * lisp/obsolete/eieio-compat.el (eieio--generic-static-object-generalizer): @@ -22395,23 +22491,20 @@ 2024-03-08 Stefan Monnier - eieio-core.el: Try and fix bug#69631 - * lisp/emacs-lisp/eieio-core.el (eieio--class-precedence-c3) (eieio--class-precedence-dfs, eieio--class-precedence-bfs): Use - `cl--class-parents` since some of the parents aren't EIEIO classes. + `cl--class-parents' since some of the parents aren't EIEIO + classes. (bug#69631) 2024-03-08 Andrea Corallo - * Fix `capitalize` entry in `comp-known-type-specifiers` (bug#69631) + Fix `capitalize' entry in `comp-known-type-specifiers' * lisp/emacs-lisp/comp-common.el (comp-known-type-specifiers): Fix - 'capitalize' entry. + 'capitalize' entry. (bug#69631) 2024-03-08 Po Lu - Update android_wc_lookup_string - * src/android.c (android_wc_lookup_string): Don't clear compose state upon modifier key depress. @@ -22420,19 +22513,20 @@ Simplify type hierarchy operations Now that built-in types have classes that describe their - relationships exactly like struct/eieio/oclosure classes, - we can the code that navigates that DAG. + relationships exactly like struct/eieio/oclosure classes, we can + the code that navigates that DAG. * lisp/emacs-lisp/cl-generic.el (cl--generic-struct-tag): Move to - `eieio-core.el`. + `eieio-core.el'. (cl--generic-type-specializers): Rename from - `cl--generic-struct-specializers`. Make it work for any class. - (cl--generic-typeof-generalizer, cl--generic-oclosure-generalizer): Use it. + `cl--generic-struct-specializers'. Make it work for any class. + (cl--generic-typeof-generalizer) + (cl--generic-oclosure-generalizer): Use it. (cl--generic-struct-generalizer): Delete generalizer. (cl-generic-generalizers :extra "cl-struct"): Delete method. (prefill 0 cl--generic-generalizer): Move to after the typeof. - (cl-generic-generalizers :extra "typeof"): Rewrite to use - classes rather than `cl--all-builtin-types`. + (cl-generic-generalizers :extra "typeof"): Rewrite to use classes + rather than `cl--all-builtin-types'. (cl-generic--oclosure-specializers): Delete function. * lisp/emacs-lisp/cl-preloaded.el (cl--direct-supertypes-of-type) @@ -22442,29 +22536,31 @@ Delete constant. (comp--cl-class-hierarchy): Simplify. (comp--compute-typeof-types): Simplify now that - `comp--cl-class-hierarchy` and `comp--all-classes` work for built-in - types as well. - (comp--direct-supertypes): Just use `cl--class-parents`. - (comp-supertypes): Simplify since typeof-types should now be complete. - - * lisp/emacs-lisp/eieio-core.el (eieio-defclass-autoload): - Use `superclasses` argument, so we can find parents before it's loaded. - (eieio--class-precedence-c3, eieio--class-precedence-dfs): - Don't add a `eieio-default-superclass` parent any more. + `comp--cl-class-hierarchy' and `comp--all-classes' work for + built-in types as well. + (comp--direct-supertypes): Just use `cl--class-parents'. + (comp-supertypes): Simplify since typeof-types should now be + complete. + + * lisp/emacs-lisp/eieio-core.el (eieio-defclass-autoload): Use + `superclasses' argument, so we can find parents before it's + loaded. + (eieio--class-precedence-c3, eieio--class-precedence-dfs): Don't + add a `eieio-default-superclass' parent any more. (eieio--class/struct-parents): Delete function. - (eieio--class-precedence-bfs): Use `eieio--class-parents` instead. - Don't stop when reaching `eieio-default-superclass`. - (cl--generic-struct-tag): Move from `cl-generic.el`. + (eieio--class-precedence-bfs): Use `eieio--class-parents' instead. + Don't stop when reaching `eieio-default-superclass'. + (cl--generic-struct-tag): Move from `cl-generic.el'. 2024-03-08 Stefan Monnier eieio-core.el: Always put a parent in the parents of a class - * lisp/emacs-lisp/eieio-core.el (eieio-defclass-internal): - Always put a parent in the `parents` slot of the class. + * lisp/emacs-lisp/eieio-core.el (eieio-defclass-internal): Always + put a parent in the `parents' slot of the class. * lisp/emacs-lisp/eieio.el (eieio-class-parents): Remove the - `eieio-default-superclass` if it's the only parent. + `eieio-default-superclass' if it's the only parent. (child-of-class-p): Handle all classes in the parents. (eieio-default-superclass): Adjust docstring. @@ -22474,14 +22570,15 @@ * lisp/emacs-lisp/cl-preloaded.el (cl--struct-register-child): Register child only in struct parents. - (cl-struct-define): Put the "type" as parent of parentless :type structs. - Copy slots only from struct parent classes. - (cl-structure-object): Set (manually) its parent to `record` - and remove assertion that it has no parents. + (cl-struct-define): Put the "type" as parent of parentless :type + structs. Copy slots only from struct parent classes. + (cl-structure-object): Set (manually) its parent to `record' and + remove assertion that it has no parents. 2024-03-08 Stefan Monnier - * lisp/emacs-lisp/oclosure.el (oclosure): Make it a subtype of `function` + * lisp/emacs-lisp/oclosure.el (oclosure): Make it a subtype of + `function'. 2024-03-08 Stefan Monnier @@ -22494,26 +22591,28 @@ (all built-in types): "Define" them with it. (cl--builtin-type-p): New aux function. (cl--struct-name-p): Use it. - (cl--direct-supertypes-of-type, cl--typeof-types, cl--all-builtin-types): - Move the definitions to after the built-in classes are defined, - and rewrite to make use of those classes. - - * lisp/emacs-lisp/cl-extra.el (cl-describe-type): - Accept two (unused) optional args, for use with `describe-symbol-backends`. - (describe-symbol-backends): Simplify accordingly and - add ourselves at the end. + (cl--direct-supertypes-of-type, cl--typeof-types) + (cl--all-builtin-types): Move the definitions to after the + built-in classes are defined, and rewrite to make use of those + classes. + + * lisp/emacs-lisp/cl-extra.el (cl-describe-type): Accept two + (unused) optional args, for use with `describe-symbol-backends'. + (describe-symbol-backends): Simplify accordingly and add ourselves + at the end. (cl--class-children): New function. - (cl--describe-class): Use it. Also don't show a silly empty list of slots - for the built-in types. + (cl--describe-class): Use it. Also don't show a silly empty list + of slots for the built-in types. 2024-03-08 Stefan Monnier comp-cstr.el: Fix a minor error and prepare for upcoming changes - * lisp/emacs-lisp/comp-cstr.el (comp--cl-class-hierarchy): Add `atom` - and `t` only to those types whose "allparents" is clearly not complete. + * lisp/emacs-lisp/comp-cstr.el (comp--cl-class-hierarchy): Add + `atom' and `t' only to those types whose "allparents" is clearly + not complete. (comp--compute--pred-type-h): Store the cstr rather than the type - in the hash-table, as expected by `comp--pred-to-cstr`. + in the hash-table, as expected by `comp--pred-to-cstr'. 2024-03-08 Po Lu @@ -22527,24 +22626,22 @@ enable invoking features they protect from code running inside Emacs. -2024-03-08 Justin Burkett - - Merge pull request #367 from tarsiiformes/long-gone - 2024-03-08 Jonas Bernoulli Remove reference to long gone which-key-manual-update - * lisp/which-key.el (which-key--paging-functions): Remove reference to - which-key-manual-update. + * lisp/which-key.el (which-key--paging-functions): Remove + reference to which-key-manual-update. - This commands was remove in 42a25055163141165aa0269dbca69735e704825c. + This command was removed in + 42a25055163141165aa0269dbca69735e704825c. 2024-03-07 Jim Porter Support expanding Eshell globs for remote file names - * lisp/eshell/em-glob.el (eshell-glob-chars-regexp): New function... + * lisp/eshell/em-glob.el (eshell-glob-chars-regexp): New + function... (eshell-glob-regexp): ... use it. (eshell-glob-p): New function... (eshell-glob-convert): ... use it, and return the deepest start @@ -22557,25 +22654,23 @@ (em-glob-test/convert/current-start-directory) (em-glob-test/convert/relative-start-directory) (em-glob-test/convert/absolute-start-directory) - (em-glob-test/convert/remote-start-directory): New tests (bug#69592). + (em-glob-test/convert/remote-start-directory): New tests. + (bug#69592) 2024-03-07 Jeremy Bryant - Remove unnecessary eval-when-compile - * lisp/which-key.el (which-key--ignore-non-evil-keys-regexp): Remove unnecessary eval-when-compile in regexp-opt. 2024-03-07 Jeremy Bryant - Replace internet link by Info node - - * lisp/which-key.el (which-key-hide-alt-key-translations): - Replace internet link by Info node. + * lisp/which-key.el (which-key-hide-alt-key-translations): Replace + internet link by Info node. 2024-03-07 Justin Burkett - Sharp quote which-key-sort-order default. + * lisp/which-key.el (which-key-sort-order): Sharp quote + which-key-sort-order default. 2024-03-07 Mattias Engdegård @@ -22589,16 +22684,18 @@ Single string literal in body is return value only, not doc string - A function or macro body consisting of a single string literal now only - uses it as a return value. Previously, it had the dual uses as return - value and doc string, which was never what the programmer wanted and - had some inconvenient consequences (bug#69387). + A function or macro body consisting of a single string literal now + only uses it as a return value. Previously, it had the dual uses + as return value and doc string, which was never what the + programmer wanted and had some inconvenient consequences + (bug#69387). - This change applies to `lambda`, `defun`, `defsubst` and `defmacro` - forms; most other defining forms already worked in the sensible way. + This change applies to `lambda', `defun', `defsubst' and + `defmacro' forms; most other defining forms already worked in the + sensible way. - * lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): - Don't use a lone string literal as doc string. + * lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Don't use a + lone string literal as doc string. * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defun.el (foo): Update docstring warning test. * doc/lispref/functions.texi (Function Documentation): Update. @@ -22606,19 +22703,22 @@ 2024-03-07 Juri Linkov - * lisp/follow.el: Put property 'isearch-scroll' on 'follow-recenter'. + * lisp/follow.el: Put property 'isearch-scroll' on + 'follow-recenter'. 2024-03-06 Jim Porter - When navigating through history in EWW, don't keep adding to 'eww-history' + When navigating through history in EWW, don't keep adding to + 'eww-history' This resolves an issue where navigating back and then forward kept - adding new history entries so you could never hit the "end" (bug#69232). + adding new history entries so you could never hit the "end". - * lisp/net/eww.el (eww-before-browse-history-function): New option. + * lisp/net/eww.el (eww-before-browse-history-function): New + option. (eww-history-position): Add docstring. - (eww-mode-map, eww-context-menu): Use correct predicates for when to - enable back/forward. + (eww-mode-map, eww-context-menu): Use correct predicates for when + to enable back/forward. (eww-save-history): Save history entry in its original place when viewing a historical page. (eww--before-browse): New function... @@ -22629,7 +22729,8 @@ 'eww-save-history'. (eww-forward-url): Set 'eww-history-position' directly, since 'eww-save-history' no longer adds a new entry in this case. - (eww-delete-future-history, eww-clone-previous-history): New functions. + (eww-delete-future-history, eww-clone-previous-history): New + functions. (bug#69232) * test/lisp/net/eww-tests.el: New file. @@ -22639,17 +22740,18 @@ Tramp fixes after running regression tests on Android - * lisp/net/tramp-adb.el (tramp-adb-maybe-open-connection): - Unset environment variable PS2. + * lisp/net/tramp-adb.el (tramp-adb-maybe-open-connection): Unset + environment variable PS2. - * lisp/net/tramp-androidsu.el (tramp-default-host-alist): - Don't add an entry; `tramp-default-host' is set properly. + * lisp/net/tramp-androidsu.el (tramp-default-host-alist): Don't + add an entry; `tramp-default-host' is set properly. (tramp-androidsu-maybe-open-connection): Don't set connection property "remote-namespace" to nil, this is the default anyway. Don't set connection property "remote-path", we use connection-local values instead. Unset environment variable PS2. Dump shell options after setting all of them. - (tramp-androidsu-handle-make-process): Don't use hard-coded user "root". + (tramp-androidsu-handle-make-process): Don't use hard-coded user + "root". (tramp-androidsu-connection-local-default-variables): New defvar. Add it to connection-local profiles. @@ -22662,7 +22764,8 @@ * doc/lispref/Makefile.in (auxfiles) ($(buildinfodir)/elisp_type_hierarchy.txt) ($(buildinfodir)/elisp_type_hierarchy.jpg): Update. - * admin/syncdoc-type-hierarchy.el (syncdoc-update-type-hierarchy0): Likewise. + * admin/syncdoc-type-hierarchy.el + (syncdoc-update-type-hierarchy0): Likewise. * Makefile.in (install-info, uninstall): Likewise. 2024-03-06 Andrea Corallo @@ -22674,7 +22777,7 @@ 2024-03-06 Andrea Corallo - * Update syncdoc to dump all preloaded type hierarchy + Update syncdoc to dump all preloaded type hierarchy * admin/syncdoc-type-hierarchy.el (syncdoc-file) (syncdoc-emacs-repo-dir): New constants. @@ -22690,19 +22793,20 @@ Don't report files from read-only adb partitions as writable - * lisp/net/tramp-adb.el (tramp-adb-handle-file-writable-p): - Ignore the file-attributes cache, since file mode is not a - reliable indicator of writability. + * lisp/net/tramp-adb.el (tramp-adb-handle-file-writable-p): Ignore + the file-attributes cache, since file mode is not a reliable + indicator of writability. 2024-03-05 Vincenzo Pupillo - * Makefile.in (install-info): Fix target (bug#69569). + * Makefile.in (install-info): Fix target. (bug#69569) 2024-03-05 Juri Linkov - * lisp/tab-bar.el (tab-bar-tab-post-select-functions): New hook (bug#69093). - - (tab-bar-select-tab): Call tab-bar-tab-post-select-functions at the end. + * lisp/tab-bar.el (tab-bar-tab-post-select-functions): New hook. + (bug#69093) + (tab-bar-select-tab): Call tab-bar-tab-post-select-functions at + the end. 2024-03-05 Juri Linkov @@ -22712,8 +22816,8 @@ text property to '(image-context-menu)'. * lisp/image.el (image-context-menu): New function. - (put-image): Set context-menu-functions overlay property - to '(image-context-menu)'. + (put-image): Set context-menu-functions overlay property to + '(image-context-menu)'. (insert-image, insert-sliced-image): Set context-menu-functions text property to '(image-context-menu)'. @@ -22722,23 +22826,25 @@ 2024-03-05 Juri Linkov - * lisp/net/dictionary.el: More fixes for dictionary-new-matching (bug#69312) + More fixes for dictionary-new-matching. - (dictionary-new-matching): Change the order of standard calls - to be the same as in 'dictionary-new-search'. - Use new function 'dictionary-new-matching-internal'. + * lisp/net/dictionary.el (dictionary-new-matching): Change the + order of standard calls to be the same as in + 'dictionary-new-search'. Use new function + 'dictionary-new-matching-internal'. (dictionary-new-matching-internal): New function based on - 'dictionary-new-search-internal'. + 'dictionary-new-search-internal'. (bug#69312) 2024-03-05 Andrea Corallo * Makefile.in (uninstall): Clean-up type_hierarchy* files. - * Makefile.in (install-info): Install type_hierarchy* files as well. + * Makefile.in (install-info): Install type_hierarchy* files as + well. 2024-03-05 Andrea Corallo - * Copy type hierarchy representation to the info dir + Copy type hierarchy representation to the info dir * doc/lispref/Makefile.in (auxfiles) ($(buildinfodir)/type_hierarchy.txt) @@ -22756,9 +22862,9 @@ disass.el (disassemble-1): Minor simplification - * lisp/emacs-lisp/disass.el (disassemble-1): Remove code for functions - of the form (lambda ARGS (byte-code ...)) which we don't use any - more nowadays. + * lisp/emacs-lisp/disass.el (disassemble-1): Remove code for + functions of the form (lambda ARGS (byte-code ...)) which we don't + use any more nowadays. 2024-03-05 Stefan Monnier @@ -22766,12 +22872,12 @@ * lisp/emacs-lisp/cl-preloaded.el (cl--direct-supertypes-of-type): Fix some left over issues: - - Remove redundant `number-or-marker` from `marker`s parents. - - Add `function` to the types, since it was missing. + - Remove redundant `number-or-marker' from `marker's parents. + - Add `function' to the types, since it was missing. (cl--typeof-types): Add a warning for missing type info. - * admin/syncdoc-type-hierarchy.el (syncdoc-hierarchy): Fix parent of - `oclosure`. + * admin/syncdoc-type-hierarchy.el (syncdoc-hierarchy): Fix parent + of `oclosure'. * doc/lispref/type_hierarchy.txt: * doc/lispref/type_hierarchy.jpg: Update. @@ -22795,8 +22901,7 @@ Remove unnecessary :group attributes - * lisp/which-key.el: Remove :group 'which-key in defcustoms. - (which-key-idle-delay): + * lisp/which-key.el (which-key-idle-delay): (which-key-idle-secondary-delay): (which-key-echo-keystrokes): (which-key-max-description-length): @@ -22839,23 +22944,23 @@ (which-key-allow-regexps): (which-key-inhibit-regexps): (which-key-show-transient-maps): - (which-key-init-buffer-hook): + (which-key-init-buffer-hook): Remove :group 'which-key in + defcustoms. 2024-03-04 Stefan Monnier - syncdoc-type-hierarchy.el: Adjust to changes in `cl-preloaded.el` + syncdoc-type-hierarchy.el: Adjust to changes in `cl-preloaded.el' - * admin/syncdoc-type-hierarchy.el (syncdoc-lispref-dir): - Use `macroexp-file-name`. + * admin/syncdoc-type-hierarchy.el (syncdoc-lispref-dir): Use + `macroexp-file-name'. (syncdoc-hierarchy): New var. (syncdoc-insert-dot-content, syncdoc-make-type-table): Use it. - (syncdoc-update-type-hierarchy): Don't crash if `dot` is absent. + (syncdoc-update-type-hierarchy): Don't crash if `dot' is absent. 2024-03-04 Stefan Monnier - admin/syncdoc-type-hierarchy.el: Move from `etc` - - AFAICT `admin` is where we keep these kinds of files. + * admin/syncdoc-type-hierarchy.el: Move from `etc'. AFAICT + `admin' is where we keep these kinds of files. 2024-03-04 Stefan Monnier @@ -22864,7 +22969,7 @@ This reverts commit 4a0d430bdc3650ca3dfd8bdd14781764fbcbdc7e. AFAICT that commit was made to accommodate regressions introduced - in the new `cl-preloaded.el` code and these have been fixed. + in the new `cl-preloaded.el' code and these have been fixed. 2024-03-04 Michael Albinus @@ -22886,18 +22991,18 @@ This reverts commit de6b1e1efb1a36c69e7a6e09297e1de5b1477121. - While it did simplify code, there aren't much in the way of technical - benefits the change at this time, and there were protest against the - unwarranted style change. + While it did simplify code, there aren't much in the way of + technical benefits the change at this time, and there were protest + against the unwarranted style change. 2024-03-04 Mattias Engdegård - Repair miscompilation of single-arg `apply` (bug#69533) + Repair miscompilation of single-arg `apply' (bug#69533) - * lisp/emacs-lisp/byte-opt.el (byte-optimize-apply): - Don't optimize single-argument `apply`; it's a legacy construct. - * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases): - Add test case. + * lisp/emacs-lisp/byte-opt.el (byte-optimize-apply): Don't + optimize single-argument `apply'; it's a legacy construct. + * test/lisp/emacs-lisp/bytecomp-tests.el + (bytecomp-tests--test-cases): Add test case. 2024-03-04 Eli Zaretskii @@ -22910,19 +23015,19 @@ Fix 'set-window-configuration' and 'window-state-put' - Fix some bugs with 'window-state-put' (Bug#69093). Add new - hook 'window-kept-windows-functions' (Bug#68235). + Fix some bugs with 'window-state-put' (Bug#69093). Add new hook + 'window-kept-windows-functions' (Bug#68235). * doc/lispref/windows.texi (Window Configurations): Mention 'window-kept-windows-functions'. (Window Hooks): Describe new abnormal hook 'window-kept-windows-functions'. - * src/marker.c (Fmarker_last_position): New function to return - the last position of a marker even if its buffer is now dead. + * src/marker.c (Fmarker_last_position): New function to return the + last position of a marker even if its buffer is now dead. * src/window.c (Fset_window_configuration): If 'window-kept-windows-functions' is non-nil, do not delete any - window whose buffer is now dead but remember all such windows in - a list to pass to 'window-kept-windows-functions'. Run + window whose buffer is now dead but remember all such windows in a + list to pass to 'window-kept-windows-functions'. Run 'window-kept-windows-functions' if it is non-nil. (Vwindow_kept_windows_functions): New abnormal hook run by Fset_window_configuration and 'window-state-put' with two @@ -22936,8 +23041,8 @@ (window--state-put-2): Make sure buffer is live before restoring its state. Set 'window-state-put-selected-window' to state's selected window. If 'window-kept-windows-functions' is non-nil, - do not delete any windows whose buffer is found dead but - remember all such windows in a list to pass to + do not delete any windows whose buffer is found dead but remember + all such windows in a list to pass to 'window-kept-windows-functions'. (window-state-put): Run 'window-kept-windows-functions' if it is non-nil. Select window recorded in @@ -22947,40 +23052,42 @@ (major-mode-remap(-defaults)): New var and function (bug#69191) - While `major-mode-remap-alist` provides a way for users to indicate the - major mode of their choice, we need a similar variable for the - use of packages. + While `major-mode-remap-alist' provides a way for users to + indicate the major mode of their choice, we need a similar + variable for the use of packages. - This patch adds a new `major-mode-remap-defaults` and changes various - packages to obey it or make use of it. - I think it nicely cleans the regexp duplication between CC-mode and - `c-ts-mode.el` and also makes it easier/cleaner for users to override - the changes made by `*-ts-mode.el`. + This patch adds a new `major-mode-remap-defaults' and changes + various packages to obey it or make use of it. I think it nicely + cleans the regexp duplication between CC-mode and `c-ts-mode.el' + and also makes it easier/cleaner for users to override the changes + made by `*-ts-mode.el'. * lisp/files.el (major-mode-remap-defaults): New variable. (major-mode-remap): New function. (set-auto-mode-0): Use it. * doc/lispref/modes.texi (Auto Major Mode): Document them. - * lisp/textmodes/tex-mode.el (tex--redirect-to-submode): - Use `major-mode-remap`. - (major-mode-remap-defaults): Set it to remap AUCTeX modes by default. - * lisp/progmodes/ruby-ts-mode.el (auto-mode-alist): Leave it alone. + * lisp/textmodes/tex-mode.el (tex--redirect-to-submode): Use + `major-mode-remap'. + (major-mode-remap-defaults): Set it to remap AUCTeX modes by + default. + * lisp/progmodes/ruby-ts-mode.el (auto-mode-alist): Leave it + alone. (major-mode-remap-defaults): Set this one instead. - * lisp/progmodes/c-ts-mode.el (c-or-c++-ts-mode): Use `major-mode-remap`. + * lisp/progmodes/c-ts-mode.el (c-or-c++-ts-mode): Use + `major-mode-remap'. (auto-mode-alist): Leave it alone. (major-mode-remap-defaults): Set this one instead. - * lisp/org/ox.el (org-export-to-buffer): Modernize docstring accordingly. + * lisp/org/ox.el (org-export-to-buffer): Modernize docstring + accordingly. * lisp/progmodes/cc-mode.el (c-or-c++-mode): * lisp/org/ox-latex.el (org-latex-export-as-latex): * lisp/org/ox-koma-letter.el (org-koma-letter-export-as-latex): - * lisp/org/ox-beamer.el (org-beamer-export-as-latex): - Use `major-mode-remap` when available. + * lisp/org/ox-beamer.el (org-beamer-export-as-latex): Use + `major-mode-remap' when available. 2024-03-04 Po Lu - Update tramp-androidsu - * doc/misc/tramp.texi (Quick Start Guide): Remove documentation pertaining to tramp-androidsu.el. (Inline methods): Document it here instead. @@ -23104,27 +23211,28 @@ (cl--typeof-types): Rework to fix some regressions - Initialize the variables directly in their declaration, so - there no time where they exist but aren't yet initialized. - This also allows us to mark `cl--typeof-types` as a `defconst` again. + Initialize the variables directly in their declaration, so there + no time where they exist but aren't yet initialized. This also + allows us to mark `cl--typeof-types' as a `defconst' again. - More importantly, specify the DAG by direct supertypes rather - than direct subtypes. This is slightly less compact, but it's - necessary to let us specify the *order* of the supertypes, - which is necessary for example to preserve the desired ordering - of methods when several methods can be applied. + More importantly, specify the DAG by direct supertypes rather than + direct subtypes. This is slightly less compact, but it's + necessary to let us specify the *order* of the supertypes, which + is necessary for example to preserve the desired ordering of + methods when several methods can be applied. - Fix a few more regressions, such as removing `atom` from the parents - of `function` since some lists are considered as functions, - adding `number-or-marker` as supertype of `integer-or-marker`, - and re-adding `native-comp-unit`. + Fix a few more regressions, such as removing `atom' from the + parents of `function' since some lists are considered as + functions, adding `number-or-marker' as supertype of + `integer-or-marker', and re-adding `native-comp-unit'. - I carefully compared all elements of `cl--typeof-types` to make - sure they are the same as before (with one exception for `null`). + I carefully compared all elements of `cl--typeof-types' to make + sure they are the same as before (with one exception for `null'). - * lisp/emacs-lisp/cl-preloaded.el (cl--type-hierarchy): Delete var. - (cl--direct-supertypes-of-type, cl--typeof-types): - Initialize directly in the declaration. + * lisp/emacs-lisp/cl-preloaded.el (cl--type-hierarchy): Delete + var. + (cl--direct-supertypes-of-type, cl--typeof-types): Initialize + directly in the declaration. (cl--supertypes-lane, cl--supertypes-lanes-res): Delete vars. (cl--supertypes-for-typeof-types-rec) (cl--supertypes-for-typeof-types): Delete functions. @@ -23137,48 +23245,50 @@ ox-texinfo:: Require only TEXINFO_DIR_CATEGORY - Until now @dircategory/@direntry entries were added only if - both TEXINFO_DIR_CATEGORY and TEXINFO_DIR_TITLE were set. - And the setting of TEXINFO_DIR_TITLE had to be careful to - provide exactly the right syntax. + Until now @dircategory/@direntry entries were added only if both + TEXINFO_DIR_CATEGORY and TEXINFO_DIR_TITLE were set. And the + setting of TEXINFO_DIR_TITLE had to be careful to provide exactly + the right syntax. This patch changes various things in this regard: - Only require TEXINFO_DIR_CATEGORY in order to generate - `@dircategory` and `@direntry`. - - Use the document title by default if TEXINFO_DIR_DESC is missing. + `@dircategory' and `@direntry'. + - Use the document title by default if TEXINFO_DIR_DESC is + missing. - Use the filename by default when TEXINFO_DIR_TITLE is missing. - Try and make it harder to provide a direntry that does not have the right format or refers to a different filename than the one we're outputting to. - * lisp/org/ox-texinfo.el: Remove redundant `:group` arguments. + * lisp/org/ox-texinfo.el: Remove redundant `:group' arguments. Prefer #' to quote function names. - (org-texinfo-template): Use sane defaults for `@direntry`. + (org-texinfo-template): Use sane defaults for `@direntry'. - * doc/misc/org.org (Texinfo specific export settings): Adjust accordingly. + * doc/misc/org.org (Texinfo specific export settings): Adjust + accordingly. 2024-03-03 Juri Linkov - * lisp/net/dictionary.el (dictionary-display-match-result): More fixes. - - Remove 'dictionary-pre-buffer' that was moved to - 'dictionary-new-matching' in the previous commit (bug#69312). + * lisp/net/dictionary.el (dictionary-display-match-result): More + fixes. Remove 'dictionary-pre-buffer' that was moved to + 'dictionary-new-matching' in the previous commit. (bug#69312) 2024-03-03 Juri Linkov - * lisp/net/dictionary.el (dictionary-new-matching): Add dictionary-pre-buffer. - - This is necessary to prepare the dictionary buffer for further processing - that also includes setting buffer-read-only to nil to be able to insert text. + * lisp/net/dictionary.el (dictionary-new-matching): Add + dictionary-pre-buffer. This is necessary to prepare the + dictionary buffer for further processing that also includes + setting buffer-read-only to nil to be able to insert text. (bug#69312) 2024-03-03 Andrea Corallo - * test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-test-62): Revert change. + * test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-test-62): + Revert change. 2024-03-03 Andrea Corallo - * Fix 'cl--typeof-types' computation + Fix 'cl--typeof-types' computation * lisp/emacs-lisp/cl-preloaded.el (cl--supertypes-lane) (cl--supertypes-lanes-res): Define vars. @@ -23189,47 +23299,43 @@ Use funcall on function values in gnus-agent.el - See bug#68931 - - * lisp/gnus/gnus-agent.el (gnus-category-make-function-1): Don't just - pass function values in to be byte compiled, wrap them in funcall first. + * lisp/gnus/gnus-agent.el (gnus-category-make-function-1): Don't + just pass function values in to be byte compiled, wrap them in + funcall first. (bug#68931) 2024-03-03 Jeremy Bryant - Replace member by memq for clarity - * lisp/which-key.el (which-key--side-window-max-dimensions): - Replace member by memq. + Replace member by memq for clarity. 2024-03-03 Jeremy Bryant - Use declare form instead of put, for clarity - * lisp/which-key.el (which-key-add-major-mode-key-based-replacements): - Use declare form instead of put. + Use declare form instead of put for clarity. 2024-03-02 Juri Linkov - * lisp/net/dictionary.el: Better handling of messages and errors. + Better handling of messages and errors in dictionary.el - (dictionary-do-search, dictionary-do-matching): Insert formatted - messages to the top of the output buffer instead of displaying - transient messages in the echo area (bug#69312). + * lisp/net/dictionary.el (dictionary-do-search) + (dictionary-do-matching): Insert formatted messages to the top of + the output buffer instead of displaying transient messages in the + echo area. (bug#69312) (dictionary-do-matching, dictionary-lookup-definition) - (dictionary-popup-matching-words): Use 'user-error' - instead of 'error' for non-technical errors. + (dictionary-popup-matching-words): Use 'user-error' instead of + 'error' for non-technical errors. 2024-03-02 Juri Linkov - * lisp/replace.el (perform-replace): Accept default bindings in lookup-key. - - Set ACCEPT-DEFAULT arg of lookup-key to t (bug#69342). - This will allow the users to ignore unbound keys with - ‘(define-key query-replace-map [t] 'ignore)’. + * lisp/replace.el (perform-replace): Accept default bindings in + lookup-key. Set ACCEPT-DEFAULT arg of lookup-key to t. This will + allow the users to ignore unbound keys with ‘(define-key + query-replace-map [t] 'ignore)’. (bug#69342) 2024-03-02 Juri Linkov - * lisp/buff-menu.el (Buffer-menu-marked-buffers): Add save-excursion. + * lisp/buff-menu.el (Buffer-menu-marked-buffers): Add + save-excursion. * doc/lispref/modes.texi (Tabulated List Mode): Unindent example. @@ -23255,7 +23361,7 @@ 2024-03-02 Kazuhiro Ito - * lisp/language/japanese.el (map): Fix typo (bug#69494). + * lisp/language/japanese.el (map): Fix typo. (bug#69494) 2024-03-02 Kazuhiro Ito @@ -23263,7 +23369,8 @@ * lisp/language/japan-util.el (setup-japanese-environment-internal): Prefer UTF-8 for Cygwin and - other Posix hosts; prefer Codepage 932 on DOS/Windows. (Bug#69493) + other Posix hosts; prefer Codepage 932 on DOS/Windows. + (Bug#69493) 2024-03-02 Po Lu @@ -23273,45 +23380,45 @@ (android_get_dead_char): New functions. (android_wc_lookup_string): New argument COMPOSE_STATE. Ignore key events with the COMBINING_ACCENT flag set while recording - their character values there, and combine such characters with - the key event when processing a subsequent key event. + their character values there, and combine such characters with the + key event when processing a subsequent key event. - * src/androidgui.h (struct android_compose_status): New - structure. + * src/androidgui.h (struct android_compose_status): New structure. * src/androidterm.c (handle_one_android_event): Port dead key combination code from X. (bug#69321) 2024-03-01 Andrea Corallo - * lisp/emacs-lisp/cl-preloaded.el (cl--typeof-types): Define as var. + * lisp/emacs-lisp/cl-preloaded.el (cl--typeof-types): Define as + var. 2024-03-01 Wilson Snyder Verilog-mode update from upstream https://github.com/veripool/verilog-mode * lisp/progmodes/verilog-mode.el (verilog-auto-inst) - (verilog-auto-inst-param): Remove intended formfeeds. Our ability to - detect unintended formfeeds elsewhere outweighs their limited utility here. - Contributed by Mattias Engdegård. + (verilog-auto-inst-param): Remove intended formfeeds. Our ability + to detect unintended formfeeds elsewhere outweighs their limited + utility here. Contributed by Mattias Engdegård. (verilog-at-constraint-p) (verilog-at-struct-mv-p, verilog-at-struct-p, verilog-calc-1) (verilog-in-case-region-p, verilog-in-fork-region-p) - (verilog-in-generate-region-p, verilog-set-auto-endcomments): - Fix indentation problem when there is a signal named "module_something" + (verilog-in-generate-region-p, verilog-set-auto-endcomments): Fix + indentation problem when there is a signal named + "module_something" (#1861). Cleanup RexEx groupings. - (verilog-read-sub-decls-expr): - Fix apostrophe parser in AUTOWIRE (#1854) (#1855). - (verilog-auto-inst-port): Fix AUTOINST - multi-dimensional array [] substitution. Reported by Caleb Begly. + (verilog-read-sub-decls-expr): Fix apostrophe parser in AUTOWIRE + (#1854) (#1855). + (verilog-auto-inst-port): Fix AUTOINST multi-dimensional array [] + substitution. Reported by Caleb Begly. (verilog-property-re, verilog-beg-of-statement, verilog-calc-1): - Concurrent SVA statement pattern-matching learns 'restrict property' and - 'cover sequence' expression for proper indentation around those constructs. This - addresses more patterns in IEEE 1800-2017's 'concurrent_sasertion_statement' - grammar. - (verilog-read-sub-decls-line): - Fix `verilog-auto-ignore-concat' with parenthesis signals. - Reported by Dmitri Sorkin. + Concurrent SVA statement pattern-matching learns 'restrict + property' and 'cover sequence' expression for proper indentation + around those constructs. This addresses more patterns in IEEE + 1800-2017's 'concurrent_sasertion_statement' grammar. + (verilog-read-sub-decls-line): Fix `verilog-auto-ignore-concat' + with parenthesis signals. Reported by Dmitri Sorkin. (verilog-simplify-range-expression): Fix `verilog-auto-inst-param-value' confusing structure selects. Reported by Mike Bertone. @@ -23328,45 +23435,45 @@ Merge branch 'feature/type-hierarchy' into 'master' - * doc/lispref/objects.texi (Type Hierarchy): Small improvements + * doc/lispref/objects.texi (Type Hierarchy): Small improvements. 2024-03-01 Andrea Corallo - * Fix compilation warning in 'cl--supertypes-for-typeof-types' + Fix compilation warning in 'cl--supertypes-for-typeof-types' - * lisp/emacs-lisp/cl-preloaded.el (cl--supertypes-for-typeof-types): Fix - warning. + * lisp/emacs-lisp/cl-preloaded.el + (cl--supertypes-for-typeof-types): Fix warning. 2024-02-29 Juri Linkov Add tabulated-list-groups and Buffer-menu-group-by (bug#69305) - * doc/lispref/modes.texi (Tabulated List Mode): - Add defvar tabulated-list-groups. + * doc/lispref/modes.texi (Tabulated List Mode): Add defvar + tabulated-list-groups. * lisp/buff-menu.el (Buffer-menu-group-by): New defcustom. - (Buffer-menu-unmark-all-buffers): Use tabulated-list-get-entry - to check whether the current line contains an entry. - (list-buffers-noselect): Enable outline-minor-mode - for tabulated-list-groups. - (list-buffers--refresh): When Buffer-menu-group-by is non-nil, - set tabulated-list-groups. - (Buffer-menu-group-by-mode, Buffer-menu-group-by-root): - New functions. + (Buffer-menu-unmark-all-buffers): Use tabulated-list-get-entry to + check whether the current line contains an entry. + (list-buffers-noselect): Enable outline-minor-mode for + tabulated-list-groups. + (list-buffers--refresh): When Buffer-menu-group-by is non-nil, set + tabulated-list-groups. + (Buffer-menu-group-by-mode, Buffer-menu-group-by-root): New + functions. - * lisp/emacs-lisp/tabulated-list.el (tabulated-list-groups): - New buffer-local variable. - (tabulated-list-print-fake-header): Add distinct overlay - property 'fake-header'. - (tabulated-list-header-overlay-p): Filter out overlays that - don't have the property 'fake-header'. + * lisp/emacs-lisp/tabulated-list.el (tabulated-list-groups): New + buffer-local variable. + (tabulated-list-print-fake-header): Add distinct overlay property + 'fake-header'. + (tabulated-list-header-overlay-p): Filter out overlays that don't + have the property 'fake-header'. (tabulated-list-print): Use the variable 'tabulated-list-groups' to sort entries in groups separately. (tabulated-list-print-entries): New function factored out from 'tabulated-list-print'. - * test/lisp/emacs-lisp/tabulated-list-tests.el (tabulated-list-groups): - New test. + * test/lisp/emacs-lisp/tabulated-list-tests.el + (tabulated-list-groups): New test. 2024-02-29 Eli Zaretskii @@ -23381,21 +23488,23 @@ 2024-02-29 Andrea Corallo - * etc/TODO (Native compiler improvements): Remove an entry as completed. + * etc/TODO (Native compiler improvements): Remove an entry as + completed. 2024-02-29 Andrea Corallo - * Add 'native-comp-async-report-warnings-errors-kind' + Add 'native-comp-async-report-warnings-errors-kind' - * lisp/emacs-lisp/comp-run.el (native-comp-async-report-warnings-errors-kind): - Add new customize. + * lisp/emacs-lisp/comp-run.el + (native-comp-async-report-warnings-errors-kind): Add new + customize. 2024-02-29 Andrea Corallo - * Improve 'native-comp-async-report-warnings-errors' tag + Improve 'native-comp-async-report-warnings-errors' tag - * lisp/emacs-lisp/comp-run.el (native-comp-async-report-warnings-errors): - Improve tag. + * lisp/emacs-lisp/comp-run.el + (native-comp-async-report-warnings-errors): Improve tag. 2024-02-29 Robert Pluim @@ -23419,15 +23528,13 @@ 2024-02-29 Jeremy Bryant - Remove github reference in preparation for integration to Emacs core - - * lisp/which-key.el: Remove github reference. + * lisp/which-key.el: Remove GitHub reference in preparation for + integration to Emacs core. 2024-02-29 Jeremy Bryant - Specify more precise customization type, natnum instead of integer - - * lisp/which-key.el (which-key-add-column-padding): Use natnum + * lisp/which-key.el (which-key-add-column-padding): Specify more + precise customization type, natnum instead of integer. 2024-02-28 Andrea Corallo @@ -23438,9 +23545,11 @@ 2024-02-28 Andrea Corallo - * lisp/emacs-lisp/cl-macs.el (cl-deftype-satisfies): Add 'symbol-with-pos'. + * lisp/emacs-lisp/cl-macs.el (cl-deftype-satisfies): Add + 'symbol-with-pos'. - * lisp/emacs-lisp/comp.el (comp-known-predicates): Add 'symbol-with-pos-p'. + * lisp/emacs-lisp/comp.el (comp-known-predicates): Add + 'symbol-with-pos-p'. 2024-02-28 Basil L. Contovounesios commit 1194ebe3a71f97b0ce7c8dcc4edaf7b0f81fdc6f Author: Gerd Möllmann Date: Wed Feb 19 08:05:56 2025 +0100 Handle nil top frame (bug#76410) * src/frame.c (do_switch_frame): Don't assume that top_frame is always a frame, it can be nil. diff --git a/src/frame.c b/src/frame.c index 2ccdec6fc41..bcf11e25222 100644 --- a/src/frame.c +++ b/src/frame.c @@ -1807,7 +1807,7 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor /* When FRAME's root frame is not its terminal's top frame, make that root frame the new top frame of FRAME's terminal. */ - if (root_frame (f) != XFRAME (top_frame)) + if (NILP (top_frame) || root_frame (f) != XFRAME (top_frame)) { struct frame *p = FRAME_PARENT_FRAME (f); commit 9143c18ae4752cef8465579dcd713db2032ab045 Author: Stefan Monnier Date: Tue Feb 18 22:27:08 2025 -0500 (json-pretty-print): Rework a bit * lisp/json.el (json-pretty-print): Call 'replace-buffer-contents' separately for each json object rather than once at the end, so its work is easier. Use 'json--print' rather than 'json-encode' so as to avoid creating yet more temp buffers. diff --git a/lisp/json.el b/lisp/json.el index a797423a2f8..6e62e594910 100644 --- a/lisp/json.el +++ b/lisp/json.el @@ -800,58 +800,44 @@ With prefix argument MINIMIZE, minimize it instead." (json-object-type 'alist) ;; Ensure that keys survive roundtrip (bug#24252, bug#42545). (json-key-type 'string) - (orig-buf (current-buffer)) - error) + (orig-buf (current-buffer))) ;; Strategy: Repeatedly `json-read' from the original buffer and - ;; write the pretty-printed snippet to a temporary buffer. As - ;; soon as we get an error from `json-read', simply append the - ;; remainder which we couldn't pretty-print to the temporary - ;; buffer as well (probably the region ends _inside_ a JSON - ;; object). - ;; - ;; Finally, use `replace-region-contents' to swap the original + ;; write the pretty-printed snippet to a temporary buffer. + ;; Use `replace-buffer-contents' to swap the original ;; region with the contents of the temporary buffer so that point, ;; marks, etc. are kept. + ;; Stop as soon as we get an error from `json-read'. (with-temp-buffer (let ((tmp-buf (current-buffer))) + ;; This apparently affords decent performance gains in `json--print'. + (setq-local inhibit-modification-hooks t) (set-buffer orig-buf) - (replace-region-contents - begin end - (lambda () - (let ((pos (point)) - (keep-going t)) - (while keep-going - (condition-case err - ;; We want to format only the JSON snippets in the - ;; region without modifying the whitespace between - ;; them. - (let ((space (buffer-substring - (point) - (+ (point) (skip-chars-forward " \t\n")))) - (json (json-read))) - (setq pos (point)) ; End of last good json-read. - (set-buffer tmp-buf) - (insert space (json-encode json)) - (set-buffer orig-buf)) - (t - (setq keep-going nil) - (set-buffer orig-buf) - ;; Rescue the remainder we couldn't pretty-print. - (append-to-buffer tmp-buf pos (point-max)) - ;; EOF is expected because we json-read until we hit - ;; the end of the narrow region. - (unless (eq (car err) 'json-end-of-file) - (setq error err))))) - tmp-buf)) - json-pretty-print-max-secs - ;; FIXME: What's a good value here? Can we use something better, - ;; e.g., by deriving a value from the size of the region? - 64))) - ;; If we got an error during JSON processing (possibly the region - ;; starts or ends inside a JSON object), signal it to the user. - ;; We did our best. - (when error - (signal (car error) (cdr error))))) + (save-excursion + (save-restriction + (narrow-to-region begin end) + (goto-char begin) + (while + (progn + (skip-chars-forward " \t\n") + (condition-case nil + (let ((beg (point)) + (json (json-read)) + (standard-output tmp-buf)) + (with-current-buffer tmp-buf + (erase-buffer) (json--print json)) + (save-restriction + (narrow-to-region beg (point)) + (replace-buffer-contents + tmp-buf + json-pretty-print-max-secs + ;; FIXME: What's a good value here? Can we use + ;; something better, e.g., by deriving a value + ;; from the size of the region? + 64) + 'keep-going)) + ;; EOF is expected because we json-read until we hit + ;; the end of the narrow region. + (json-end-of-file nil)))))))))) (defun json-pretty-print-buffer-ordered (&optional minimize) "Pretty-print current buffer with object keys ordered. commit bb45d35ea7db5dc93a7856dccf14c01f01bd95fe Author: Po Lu Date: Wed Feb 19 10:17:24 2025 +0800 ; * etc/NEWS: Document the previous change. diff --git a/etc/NEWS b/etc/NEWS index bd7ee0f8b13..79a48280191 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1238,6 +1238,15 @@ This macro adds the current buffer to 'inhibit-auto-revert-buffers', runs its body, and removes the current buffer from 'inhibit-auto-revert-buffers' afterwards. +** Strokes + +-- +** 'strokes-mode' no longer demands the presence of a mouse. +'strokes-mode' now permits itself to be enabled if no mouse is +connected, to facilitate enabling 'strokes-mode' in sessions where the +availability of a mouse device varies during execution (as is frequently +observed on Android). + * New Modes and Packages in Emacs 31.1 commit d05894f82d90c6d739aa3d424651fda2c86f68ec Author: Po Lu Date: Wed Feb 19 10:13:00 2025 +0800 Don't insist on the presence of a mouse in strokes-mode * lisp/strokes.el (strokes-mode): Don't test `display-mouse-p', as the presence of a mouse may vary over the course of an Emacs session. diff --git a/lisp/strokes.el b/lisp/strokes.el index cfec2d382ea..4020538c942 100644 --- a/lisp/strokes.el +++ b/lisp/strokes.el @@ -1382,9 +1382,7 @@ Encode/decode your strokes with \\[strokes-encode-buffer], \\{strokes-mode-map}" :lighter strokes-lighter :global t - (cond ((not (display-mouse-p)) - (error "Can't use Strokes without a mouse")) - (strokes-mode ; turn on strokes + (cond (strokes-mode ; turn on strokes (and (file-exists-p strokes-file) (null strokes-global-map) (strokes-load-user-strokes)) commit 450966223679d51d78cd8bbdba70bda684dd3a36 Author: kobarity Date: Mon Feb 17 23:00:04 2025 +0900 Add python-ts-mode to ffap-alist * lisp/progmodes/python.el (ffap-alist): Add python-ts-mode. (Bug#76364) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 460862578b6..d910c816188 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -5547,9 +5547,8 @@ def __FFAP_get_module_path(objstr): (defvar ffap-alist) (eval-after-load "ffap" - '(progn - (push '(python-mode . python-ffap-module-path) ffap-alist) - (push '(inferior-python-mode . python-ffap-module-path) ffap-alist))) + '(dolist (mode '(python-mode python-ts-mode inferior-python-mode)) + (add-to-list 'ffap-alist `(,mode . python-ffap-module-path)))) ;;; Code check commit 4faade9f844db5dc09f2805c0f07376663402e41 Author: Stefan Kangas Date: Tue Feb 18 22:35:16 2025 +0100 ; * etc/NEWS: Move cl-lib related entries to proper section. diff --git a/etc/NEWS b/etc/NEWS index e6a7ab9e90b..bd7ee0f8b13 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -484,6 +484,14 @@ Emacs 25.1), and gnudoit (obsolete since Emacs 25.1). ** CL-Lib ++++ +*** Some cl-lib functions are now built-in. +The functions 'cl-plusp', 'cl-minusp', 'cl-oddp', and 'cl-evenp', have +been added to Emacs Lisp, and are thus now aliases for the built-in +functions 'plusp', 'minusp', 'oddp' and 'evenp'. The old names are +considered deprecated, and will be marked as obsolete in some future +release. + +++ *** 'cl-labels' now also accepts '(FUNC EXP)' bindings, like 'cl-flet'. Such bindings make it possible to compute which function to bind to FUNC. @@ -1311,15 +1319,12 @@ change it globally with: +++ ** New functions 'plusp' and 'minusp'. They return non-nil if a number is positive or negative, respectively, -and signal an error if they are given a non-number. The 'cl-lib' -functions 'cl-plusp' and 'cl-minusp' are now aliases for 'plusp' and -'minusp'. +and signal an error if they are given a non-number. +++ ** New functions 'oddp' and 'evenp'. They return non-nil if an integer is odd or even, respectively, and -signal an error if they are given a non-integer. The 'cl-lib' functions -'cl-oddp' and 'cl-evenp' are now aliases for 'oddp' and 'evenp'. +signal an error if they are given a non-integer. ** Time & Date commit 4c4f907bad1ad616dda6e5f5eec0b78ebea9f1c4 Author: Stefan Kangas Date: Tue Feb 18 22:29:40 2025 +0100 Make cl-locally obsolete * doc/misc/cl.texi (Declarations): Don't document cl-locally. * lisp/emacs-lisp/cl-macs.el (cl-locally): Make into obsolete function alias for progn. diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 029f11f520d..da73aeb6387 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -2786,10 +2786,6 @@ etc. Currently the only declaration understood by @code{cl-declare} is @code{special}. @end defmac -@defmac cl-locally declarations@dots{} forms@dots{} -In this package, @code{cl-locally} is no different from @code{progn}. -@end defmac - @defmac cl-the type form @code{cl-the} returns the value of @code{form}, first checking (if optimization settings permit) that it is of type @code{type}. Future diff --git a/etc/NEWS b/etc/NEWS index 0f4562645cd..e6a7ab9e90b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -491,6 +491,10 @@ Such bindings make it possible to compute which function to bind to FUNC. --- *** 'cl-block' names are now lexically scoped, as documented. ++++ +*** 'cl-locally' is now obsolete. +It is an alias for the 'progn' special-form. + ** Whitespace --- diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index e73edbadaf2..2712dae0d5e 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -2624,10 +2624,8 @@ values. For compatibility, (cl-values A B C) is a synonym for (list A B C). ;;; Declarations. ;;;###autoload -(defmacro cl-locally (&rest body) - "Equivalent to `progn'." - (declare (debug t)) - (cons 'progn body)) +(define-obsolete-function-alias 'cl-locally #'progn "31.1") + ;;;###autoload (defmacro cl-the (type form) "Return FORM. If type-checking is enabled, assert that it is of TYPE." commit ef34303eaf98e0a8a041c741715c741f0a01fd77 Author: Stefan Kangas Date: Tue Feb 18 21:52:33 2025 +0100 ; Fix copyright year in last commit diff --git a/lisp/textmodes/markdown-ts-mode.el b/lisp/textmodes/markdown-ts-mode.el index 49fe1baf011..62fa23c7105 100644 --- a/lisp/textmodes/markdown-ts-mode.el +++ b/lisp/textmodes/markdown-ts-mode.el @@ -1,6 +1,6 @@ ;;; markdown-ts-mode.el --- tree sitter support for Markdown -*- lexical-binding: t; -*- -;; Copyright (C) 2024 Free Software Foundation, Inc. +;; Copyright (C) 2024-2025 Free Software Foundation, Inc. ;; Author : Rahul Martim Juliato ;; Maintainer : Rahul Martim Juliato commit a102dcebb7d10275cc3818f47cd042ddd27868ff Author: Rahul Martim Juliato Date: Fri Apr 19 23:21:20 2024 -0300 Add markdown-ts-mode * lisp/textmodes/markdown-ts-mode.el: New file. Ref: https://lists.gnu.org/r/emacs-devel/2024-06/msg01061.html diff --git a/etc/NEWS b/etc/NEWS index 63393dd2ff5..0f4562645cd 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1231,6 +1231,9 @@ runs its body, and removes the current buffer from ** New major modes based on the tree-sitter library +*** New major mode 'markdown-ts-mode'. +A major mode based on the tree-sitter library for editing Markdown files. + *** New major mode 'mhtml-ts-mode'. An optional major mode based on the tree-sitter library for editing HTML files. This mode handles indentation, fontification, and commenting for diff --git a/lisp/textmodes/markdown-ts-mode.el b/lisp/textmodes/markdown-ts-mode.el new file mode 100644 index 00000000000..49fe1baf011 --- /dev/null +++ b/lisp/textmodes/markdown-ts-mode.el @@ -0,0 +1,113 @@ +;;; markdown-ts-mode.el --- tree sitter support for Markdown -*- lexical-binding: t; -*- + +;; Copyright (C) 2024 Free Software Foundation, Inc. + +;; Author : Rahul Martim Juliato +;; Maintainer : Rahul Martim Juliato +;; Created : April 2024 +;; Keywords : markdown md languages tree-sitter + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: +;; + +;;; Code: + +(require 'treesit) +(require 'subr-x) + +(declare-function treesit-node-parent "treesit.c") +(declare-function treesit-node-type "treesit.c") +(declare-function treesit-parser-create "treesit.c") + +(defvar markdown-ts--treesit-settings + (treesit-font-lock-rules + :language 'markdown + :override t + :feature 'delimiter + '([ "[" "]" "(" ")" ] @shadow) + + + :language 'markdown + :feature 'paragraph + '([((setext_heading) @font-lock-keyword-face) + ((atx_heading) @font-lock-keyword-face) + ((thematic_break) @shadow) + ((indented_code_block) @font-lock-string-face) + (list_item (list_marker_star) @font-lock-keyword-face) + (list_item (list_marker_plus) @font-lock-keyword-face) + (list_item (list_marker_minus) @font-lock-keyword-face) + (list_item (list_marker_dot) @font-lock-keyword-face) + (fenced_code_block (fenced_code_block_delimiter) @font-lock-doc-face) + (fenced_code_block (code_fence_content) @font-lock-string-face) + ((block_quote_marker) @font-lock-string-face) + (block_quote (paragraph) @font-lock-string-face) + (block_quote (block_quote_marker) @font-lock-string-face) + ]) + + :language 'markdown-inline + :feature 'paragraph-inline + '([ + ((image_description) @link) + ((link_destination) @font-lock-string-face) + ((code_span) @font-lock-string-face) + ((emphasis) @underline) + ((strong_emphasis) @bold) + (inline_link (link_text) @link) + (inline_link (link_destination) @font-lock-string-face) + (shortcut_link (link_text) @link)]))) + +(defun markdown-ts-imenu-node-p (node) + "Check if NODE is a valid entry to imenu." + (equal (treesit-node-type (treesit-node-parent node)) + "atx_heading")) + +(defun markdown-ts-imenu-name-function (node) + "Return an imenu entry if NODE is a valid header." + (let ((name (treesit-node-text node))) + (if (markdown-ts-imenu-node-p node) + (thread-first (treesit-node-parent node)(treesit-node-text)) + name))) + +(defun markdown-ts-setup () + "Setup treesit for `markdown-ts-mode'." + (setq-local treesit-font-lock-settings markdown-ts--treesit-settings) + (treesit-major-mode-setup)) + +;;;###autoload +(define-derived-mode markdown-ts-mode text-mode "Markdown" + "Major mode for editing Markdown using tree-sitter grammar." + (setq-local font-lock-defaults nil + treesit-font-lock-feature-list '((delimiter) + (paragraph) + (paragraph-inline))) + + (setq-local treesit-simple-imenu-settings + `(("Headings" markdown-ts-imenu-node-p nil markdown-ts-imenu-name-function))) + + (when (treesit-ready-p 'markdown) + (treesit-parser-create 'markdown-inline) + (treesit-parser-create 'markdown) + (markdown-ts-setup))) + +(derived-mode-add-parents 'markdown-ts-mode '(markdown-mode)) + +(if (treesit-ready-p 'markdown) + (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-ts-mode))) + +(provide 'markdown-ts-mode) +;;; markdown-ts-mode.el ends here commit d685d21e8ae0cee566420d4dd68586f018b2ce0b Author: Stefan Monnier Date: Tue Feb 18 15:37:50 2025 -0500 (lexical-binding): Allow changing the default value (bug#74145) * lisp/loadup.el: Preserve (default-toplevel-value 'lexical-binding). * src/lread.c (Fload, Feval_buffer): Obey (default-toplevel-value 'lexical-binding). * doc/lispintro/emacs-lisp-intro.texi (Lexical vs Dynamic Binding Example): Use the lexical dialect also for the dynamic scoping example. * doc/lispref/edebug.texi (Edebug Eval): Remove long-obsolete mention of Edebug support for `lexical-let`. diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index b041678d8c8..4317e399677 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -3845,7 +3845,9 @@ well. When executing @code{getx}, the current global value of If we use dynamic binding instead, the behavior is different: @example -;;; -*- lexical-binding: nil -*- +;;; -*- lexical-binding: t -*- + +(defvar x) ;; Use dynamic binding for 'x'. (setq x 0) @@ -3867,8 +3869,9 @@ binding. This time, @code{getx} doesn't see the global value for @code{x}, since its binding is below the one from our @code{let} expression in the stack of bindings. -(Some variables are also ``special'', and they are always dynamically -bound even when @code{lexical-binding} is @code{t}. @xref{defvar, , +(The @code{defvar} declaration above is said to make the variable +``special'', which causes it to obey the dynamic binding rules instead of +the default binding rules. @xref{defvar, , Initializing a Variable with @code{defvar}}.) @node if diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index e234db6fce5..15836591032 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -722,13 +722,6 @@ lists). Any other prefix will result in the value being pretty-printed in a separate buffer. @end table -@cindex lexical binding (Edebug) - Edebug supports evaluation of expressions containing references to -lexically bound symbols created by the following constructs in -@file{cl.el}: @code{lexical-let}, @code{macrolet}, and -@code{symbol-macrolet}. -@c FIXME? What about lexical-binding = t? - @node Eval List @subsection Evaluation List Buffer diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 89ccb8ea740..998a74d067a 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -285,7 +285,7 @@ previous example is equivalent to using nested @code{let} bindings: @defspec letrec (bindings@dots{}) forms@dots{} This special form is like @code{let*}, but all the variables are bound before any of the local values are computed. The values are then -assigned to the locally bound variables. This is only useful when +assigned to the locally bound variables. This is useful only when lexical binding is in effect, and you want to create closures that refer to bindings that would otherwise not yet be in effect when using @code{let*}. @@ -351,7 +351,7 @@ A function call is in the tail position if it's the very last thing done so that the value returned by the call is the value of @var{body} itself, as is the case in the recursive call to @code{sum} above. -@code{named-let} can only be used when lexical-binding is enabled. +@code{named-let} can be used only when lexical-binding is enabled. @xref{Lexical Binding}. @end defspec @@ -392,7 +392,7 @@ object can be; but it is still a value. If a variable is void, trying to evaluate the variable signals a @code{void-variable} error, instead of returning a value. - Under the optional lexical scoping rule, the value cell only holds + Under the optional lexical scoping rule, the value cell holds only the variable's global value---the value outside of any lexical binding construct. When a variable is lexically bound, the local value is determined by the lexical environment; hence, variables can have local @@ -710,8 +710,8 @@ completely. The usual way to reference a variable is to write the symbol which names it. @xref{Symbol Forms}. - Occasionally, you may want to reference a variable which is only -determined at run time. In that case, you cannot specify the variable + Occasionally, you may want to reference a variable which is determined +only at run time. In that case, you cannot specify the variable name in the text of the program. You can use the @code{symbol-value} function to extract the value. @@ -1991,8 +1991,8 @@ to use this, @pxref{Auto Major Mode}. @defvar permanently-enabled-local-variables Some local variable settings will, by default, be heeded even if -@code{enable-local-variables} is @code{nil}. By default, this is only -the case for the @code{lexical-binding} local variable setting, but +@code{enable-local-variables} is @code{nil}. By default, this is the +case only for the @code{lexical-binding} local variable setting, but this can be controlled by using this variable, which is a list of symbols. @end defvar diff --git a/etc/NEWS b/etc/NEWS index dc2374c319c..63393dd2ff5 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1293,6 +1293,14 @@ Previously, its argument was always evaluated using dynamic binding. * Lisp Changes in Emacs 31.1 +--- +** You can change the default value of 'lexical-binding'. +While the default is still the use dynamic binding dialect of ELisp +in those places that don't explicitly set 'lexical-binding' you can +change it globally with: + + (set-default-toplevel-value 'lexical-binding t) + +++ ** New functions 'plusp' and 'minusp'. They return non-nil if a number is positive or negative, respectively, diff --git a/lisp/loadup.el b/lisp/loadup.el index 98a47f2867f..ebd35291050 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -617,9 +617,9 @@ directory got moved. This is set to be a pair in the form of: (unwind-protect (let ((tmp-dump-mode dump-mode) (dump-mode nil) - ;; Set `lexical-binding' to nil by default + ;; Set `lexical-binding' to its default value ;; in the dumped Emacs. - (lexical-binding nil)) + (lexical-binding (default-toplevel-value 'lexical-binding))) (if (member tmp-dump-mode '("pdump" "pbootstrap")) (dump-emacs-portable (expand-file-name output invocation-directory)) (dump-emacs output (if (eq system-type 'ms-dos) diff --git a/src/lread.c b/src/lread.c index 46c705e5c76..df1caaf5732 100644 --- a/src/lread.c +++ b/src/lread.c @@ -1720,8 +1720,11 @@ Return t if the file exists and loads successfully. */) } else { - if (lisp_file_lexical_cookie (Qget_file_char) == Cookie_Lex) - Fset (Qlexical_binding, Qt); + lexical_cookie_t lexc = lisp_file_lexical_cookie (Qget_file_char); + Fset (Qlexical_binding, + (lexc == Cookie_Lex ? Qt + : lexc == Cookie_Dyn ? Qnil + : Fdefault_toplevel_value (Qlexical_binding))); if (! version || version >= 22) readevalloop (Qget_file_char, &input, hist_file_name, @@ -2606,8 +2609,11 @@ This function preserves the position of point. */) specbind (Qstandard_output, tem); record_unwind_protect_excursion (); BUF_TEMP_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf))); + lexical_cookie_t lexc = lisp_file_lexical_cookie (buf); specbind (Qlexical_binding, - lisp_file_lexical_cookie (buf) == Cookie_Lex ? Qt : Qnil); + lexc == Cookie_Lex ? Qt + : lexc == Cookie_Dyn ? Qnil + : Fdefault_toplevel_value (Qlexical_binding)); BUF_TEMP_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf))); readevalloop (buf, 0, filename, !NILP (printflag), unibyte, Qnil, Qnil, Qnil); commit 790c2f7c1c8c947b286c09525fc5a0425004a1f6 Author: Gerd Möllmann Date: Tue Feb 18 21:27:03 2025 +0100 ; * .mailmap: Change my entries. diff --git a/.mailmap b/.mailmap index 18b278961ca..635d9d1ba3f 100644 --- a/.mailmap +++ b/.mailmap @@ -74,8 +74,9 @@ Fabián Ezequiel Gallina Felicián Németh Francis Litterio Gabor Vida -Gerd Möllmann -Gerd Möllmann +Gerd Möllmann +Gerd Möllmann +Gerd Möllmann Glenn Morris Glenn Morris Glenn Morris commit db8af88222bbf06948622d2b4fc4d27b73350b83 Author: Liu Hui Date: Tue Feb 18 17:52:36 2025 +0800 Disable PyREPL in Python shell The new default REPL (PyREPL) in Python 3.13 is incompatible with Python shell and displays a warning message when reverting to the old basic REPL. * lisp/progmodes/python.el (python-shell--calculate-process-environment): Use the basic REPL. (Bug#76205) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 2dc0441bd47..460862578b6 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -2930,6 +2930,7 @@ virtualenv related vars." (let* ((virtualenv (when python-shell-virtualenv-root (directory-file-name python-shell-virtualenv-root))) (res python-shell-process-environment)) + (push "PYTHON_BASIC_REPL=1" res) (when python-shell-unbuffered (push "PYTHONUNBUFFERED=1" res)) (when python-shell-extra-pythonpaths commit a75f4449fa2aceab54f28c5ef46f82225376c2a4 Author: kobarity Date: Sun Feb 16 19:07:04 2025 +0900 Improve completion in IPython/Python 3.13 IPython/Python 3.13 indirectly imports rlcompleter, and the completer is set up to reference rlcompleter.__main__. However, this rlcompleter.__main__ is different from the __main__ in the REPL execution. Therefore, this completer cannot correctly complete the REPL globals. To address this issue, we override rlcompleter.__main__ with __main__ only in the case of IPython. * lisp/progmodes/python.el (python-shell-completion-native-setup): Modify __PYTHON_EL_native_completion_setup(). (Bug#76205) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index a42e2b2a28a..2dc0441bd47 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -4537,6 +4537,13 @@ def __PYTHON_EL_native_completion_setup(): if not is_ipython: readline.set_completer(new_completer) else: + # Ensure that rlcompleter.__main__ and __main__ are identical. + # (Bug#76205) + import sys + try: + sys.modules['rlcompleter'].__main__ = sys.modules['__main__'] + except KeyError: + pass # Try both initializations to cope with all IPython versions. # This works fine for IPython 3.x but not for earlier: readline.set_completer(new_completer) commit c180966b313c87fd8a3a48218340b48ac0b933f2 Author: Stefan Kangas Date: Tue Feb 18 06:11:24 2025 +0100 Prefer defvar-keymap in tcl.el * lisp/progmodes/tcl.el (tcl-mode-map, inferior-tcl-mode-map): Prefer defvar-keymap. diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el index faf5b583617..c4b40f4a170 100644 --- a/lisp/progmodes/tcl.el +++ b/lisp/progmodes/tcl.el @@ -201,26 +201,24 @@ quoted for Tcl." ;; Keymaps, abbrevs, syntax tables. ;; -(defvar tcl-mode-map - (let ((map (make-sparse-keymap))) - (define-key map "{" 'tcl-electric-char) - (define-key map "}" 'tcl-electric-brace) - (define-key map "[" 'tcl-electric-char) - (define-key map "]" 'tcl-electric-char) - (define-key map ";" 'tcl-electric-char) - (define-key map "#" 'tcl-electric-hash) ;Remove? -stef - (define-key map "\e\C-q" 'tcl-indent-exp) - (define-key map "\177" 'backward-delete-char-untabify) - (define-key map "\t" 'tcl-indent-command) - (define-key map "\M-\C-x" 'tcl-eval-defun) - (define-key map "\C-c\C-i" 'tcl-help-on-word) - (define-key map "\C-c\C-v" 'tcl-eval-defun) - (define-key map "\C-c\C-f" 'tcl-load-file) - (define-key map "\C-c\C-t" 'inferior-tcl) - (define-key map "\C-c\C-x" 'tcl-eval-region) - (define-key map "\C-c\C-s" 'switch-to-tcl) - map) - "Keymap used in `tcl-mode'.") +(defvar-keymap tcl-mode-map + :doc "Keymap used in `tcl-mode'." + "{" #'tcl-electric-char + "}" #'tcl-electric-brace + "[" #'tcl-electric-char + "]" #'tcl-electric-char + ";" #'tcl-electric-char + "#" #'tcl-electric-hash ;Remove? -stef + "C-M-q" #'tcl-indent-exp + "DEL" #'backward-delete-char-untabify + "TAB" #'tcl-indent-command + "C-M-x" #'tcl-eval-defun + "C-c C-i" #'tcl-help-on-word + "C-c C-v" #'tcl-eval-defun + "C-c C-f" #'tcl-load-file + "C-c C-t" #'inferior-tcl + "C-c C-x" #'tcl-eval-region + "C-c C-s" #'switch-to-tcl) (defvar tcl-mode-syntax-table (let ((st (make-syntax-table))) @@ -249,23 +247,21 @@ quoted for Tcl." st) "Syntax table in use in `tcl-mode' buffers.") -(defvar inferior-tcl-mode-map +(defvar-keymap inferior-tcl-mode-map + :doc "Keymap used in `inferior-tcl-mode'." ;; FIXME we override comint keybindings here. ;; Maybe someone has a better set? - (let ((map (make-sparse-keymap))) - ;; Will inherit from `comint-mode-map' thanks to define-derived-mode. - (define-key map "\t" #'completion-at-point) - (define-key map "\M-?" #'comint-dynamic-list-filename-completions) - (define-key map "\177" #'backward-delete-char-untabify) - (define-key map "\M-\C-x" #'tcl-eval-defun) - (define-key map "\C-c\C-i" #'tcl-help-on-word) - (define-key map "\C-c\C-v" #'tcl-eval-defun) - (define-key map "\C-c\C-f" #'tcl-load-file) - (define-key map "\C-c\C-t" #'inferior-tcl) - (define-key map "\C-c\C-x" #'tcl-eval-region) - (define-key map "\C-c\C-s" #'switch-to-tcl) - map) - "Keymap used in `inferior-tcl-mode'.") + ;; Will inherit from `comint-mode-map' thanks to define-derived-mode. + "TAB" #'completion-at-point + "M-?" #'comint-dynamic-list-filename-completions + "DEL" #'backward-delete-char-untabify + "C-M-x" #'tcl-eval-defun + "C-c C-i" #'tcl-help-on-word + "C-c C-v" #'tcl-eval-defun + "C-c C-f" #'tcl-load-file + "C-c C-t" #'inferior-tcl + "C-c C-x" #'tcl-eval-region + "C-c C-s" #'switch-to-tcl) (easy-menu-define tcl-mode-menu tcl-mode-map "Menu used in `tcl-mode'." '("Tcl" commit 697e7c321144f1d91bcd8f6ed26c78968a156186 Author: Stefan Kangas Date: Tue Feb 18 06:06:37 2025 +0100 Prefer defvar-keymap in pascal.el * lisp/progmodes/pascal.el (pascal-mode-map, pascal-outline-map): Prefer defvar-keymap. diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el index 02022a59cac..b6316d4dfe1 100644 --- a/lisp/progmodes/pascal.el +++ b/lisp/progmodes/pascal.el @@ -67,35 +67,34 @@ "Abbrev table in use in Pascal mode buffers.") (define-abbrev-table 'pascal-mode-abbrev-table ()) -(defvar pascal-mode-map - (let ((map (make-sparse-keymap))) - (define-key map ";" 'electric-pascal-semi-or-dot) - (define-key map "." 'electric-pascal-semi-or-dot) - (define-key map ":" 'electric-pascal-colon) - (define-key map "=" 'electric-pascal-equal) - (define-key map "#" 'electric-pascal-hash) - ;; These are user preferences, so not to set by default. - ;;(define-key map "\r" 'electric-pascal-terminate-line) - ;;(define-key map "\t" 'electric-pascal-tab) - (define-key map "\M-\t" 'completion-at-point) - (define-key map "\M-?" 'completion-help-at-point) - (define-key map "\177" 'backward-delete-char-untabify) - (define-key map "\M-\C-h" 'pascal-mark-defun) - (define-key map "\C-c\C-b" 'pascal-insert-block) - (define-key map "\M-*" 'pascal-star-comment) - (define-key map "\C-c\C-c" 'pascal-comment-area) - (define-key map "\C-c\C-u" 'pascal-uncomment-area) - (define-key map "\M-\C-a" 'pascal-beg-of-defun) - (define-key map "\M-\C-e" 'pascal-end-of-defun) - (define-key map "\C-c\C-d" 'pascal-goto-defun) - (define-key map "\C-c\C-o" 'pascal-outline-mode) - ;; A command to change the whole buffer won't be used terribly - ;; often, so no need for a key binding. - ;; (define-key map "\C-cd" 'pascal-downcase-keywords) - ;; (define-key map "\C-cu" 'pascal-upcase-keywords) - ;; (define-key map "\C-cc" 'pascal-capitalize-keywords) - map) - "Keymap used in Pascal mode.") +(defvar-keymap pascal-mode-map + :doc "Keymap used in Pascal mode." + ";" #'electric-pascal-semi-or-dot + "." #'electric-pascal-semi-or-dot + ":" #'electric-pascal-colon + "=" #'electric-pascal-equal + "#" #'electric-pascal-hash + ;; These are user preferences, so not to set by default. + ;; "RET" #'electric-pascal-terminate-line + ;; "TAB" #'electric-pascal-tab + "C-M-i" #'completion-at-point + "M-?" #'completion-help-at-point + "DEL" #'backward-delete-char-untabify + "C-M-h" #'pascal-mark-defun + "C-c C-b" #'pascal-insert-block + "M-*" #'pascal-star-comment + "C-c C-c" #'pascal-comment-area + "C-c C-u" #'pascal-uncomment-area + "C-M-a" #'pascal-beg-of-defun + "C-M-e" #'pascal-end-of-defun + "C-c C-d" #'pascal-goto-defun + "C-c C-o" #'pascal-outline-mode + ;; A command to change the whole buffer won't be used terribly + ;; often, so no need for a key binding. + ;; "C-c d" #'pascal-downcase-keywords + ;; "C-c u" #'pascal-upcase-keywords + ;; "C-c c" #'pascal-capitalize-keywords + ) (defvar pascal-imenu-generic-expression '((nil "^[ \t]*\\(function\\|procedure\\)[ \t\n]+\\([a-zA-Z0-9_.:]+\\)" 2)) @@ -1368,15 +1367,13 @@ The default is a name found in the buffer around point." ;;; ;;; Pascal-outline-mode ;;; -(defvar pascal-outline-map - (let ((map (make-sparse-keymap))) - (define-key map "\M-\C-a" 'pascal-outline-prev-defun) - (define-key map "\M-\C-e" 'pascal-outline-next-defun) - (define-key map "\C-c\C-d" 'pascal-outline-goto-defun) - (define-key map "\C-c\C-s" 'pascal-show-all) - (define-key map "\C-c\C-h" 'pascal-hide-other-defuns) - map) - "Keymap used in Pascal Outline mode.") +(defvar-keymap pascal-outline-map + :doc "Keymap used in Pascal Outline mode." + "C-M-a" #'pascal-outline-prev-defun + "C-M-e" #'pascal-outline-next-defun + "C-c C-d" #'pascal-outline-goto-defun + "C-c C-s" #'pascal-show-all + "C-c C-h" #'pascal-hide-other-defuns) (define-minor-mode pascal-outline-mode "Outline-line minor mode for Pascal mode. commit 941ba65d1e0b9a42deeff25d793db21cc56c94e0 Author: Stefan Kangas Date: Tue Feb 18 06:03:04 2025 +0100 Prefer defvar-keymap in meta-mode.el * lisp/progmodes/meta-mode.el (meta-common-mode-map): Prefer defvar-keymap. diff --git a/lisp/progmodes/meta-mode.el b/lisp/progmodes/meta-mode.el index 4fcfede3b00..b34edd0dfec 100644 --- a/lisp/progmodes/meta-mode.el +++ b/lisp/progmodes/meta-mode.el @@ -800,26 +800,24 @@ The environment marked is the one that contains point or follows point." st) "Syntax table used in Metafont or MetaPost mode.") -(defvar meta-common-mode-map - (let ((map (make-sparse-keymap))) - ;; Navigation: - (define-key map "\M-\C-a" 'meta-beginning-of-defun) - (define-key map "\M-\C-e" 'meta-end-of-defun) - (define-key map "\M-\C-h" 'meta-mark-defun) - ;; Indentation: - (define-key map "\M-\C-q" 'meta-indent-defun) - (define-key map "\C-c\C-qe" 'meta-indent-defun) - (define-key map "\C-c\C-qr" 'meta-indent-region) - (define-key map "\C-c\C-qb" 'meta-indent-buffer) - ;; Commenting Out: - (define-key map "\C-c%" 'meta-comment-defun) - ;; (define-key map "\C-uC-c%" 'meta-uncomment-defun) - (define-key map "\C-c;" 'meta-comment-region) - (define-key map "\C-c:" 'meta-uncomment-region) - ;; Symbol Completion: - (define-key map "\M-\t" 'completion-at-point) - map) - "Keymap used in Metafont or MetaPost mode.") +(defvar-keymap meta-common-mode-map + :doc "Keymap used in Metafont or MetaPost mode." + ;; Navigation: + "C-M-a" #'meta-beginning-of-defun + "C-M-e" #'meta-end-of-defun + "C-M-h" #'meta-mark-defun + ;; Indentation: + "C-M-q" #'meta-indent-defun + "C-c C-q e" #'meta-indent-defun + "C-c C-q r" #'meta-indent-region + "C-c C-q b" #'meta-indent-buffer + ;; Commenting Out: + "C-c %" #'meta-comment-defun + ;; "C-u C - c %" #'meta-uncomment-defun + "C-c ;" #'meta-comment-region + "C-c :" #'meta-uncomment-region + ;; Symbol Completion: + "C-M-i" #'completion-at-point) (easy-menu-define meta-mode-menu meta-common-mode-map commit 93206cd138ff01d9c2a56e52dd0e5edd8e386ec0 Author: Stefan Kangas Date: Tue Feb 18 05:56:02 2025 +0100 Prefer plusp to open-coding it in image-dired * lisp/image/image-dired.el (image-dired-display-thumbs) (image-dired-forward-image, image-dired-slideshow-start) (image-dired-line-up-interactive): Prefer plusp to open-coding it. diff --git a/lisp/image/image-dired.el b/lisp/image/image-dired.el index 906e3521a61..8edc73d09b8 100644 --- a/lisp/image/image-dired.el +++ b/lisp/image/image-dired.el @@ -609,7 +609,7 @@ thumbnail buffer to be selected." (image-dired-insert-thumbnail (image-dired--get-create-thumbnail-file file) file dired-buf) (cl-incf image-dired--number-of-thumbnails)))) - (if (> image-dired--number-of-thumbnails 0) + (if (plusp image-dired--number-of-thumbnails) (if do-not-pop (display-buffer buf) (pop-to-buffer buf)) @@ -697,21 +697,21 @@ point is on the last image, move to the last one and vice versa." (setq arg (or arg 1)) (let (pos) (dotimes (_ (abs arg)) - (if (and (not (if (> arg 0) (eobp) (bobp))) + (if (and (not (if (plusp arg) (eobp) (bobp))) (save-excursion - (forward-char (if (> arg 0) 1 -1)) - (while (and (not (if (> arg 0) (eobp) (bobp))) + (forward-char (if (plusp arg) 1 -1)) + (while (and (not (if (plusp arg) (eobp) (bobp))) (not (image-dired-image-at-point-p))) - (forward-char (if (> arg 0) 1 -1))) + (forward-char (if (plusp arg) 1 -1))) (setq pos (point)) (image-dired-image-at-point-p))) (goto-char pos) (if wrap-around - (goto-char (if (> arg 0) + (goto-char (if (plusp arg) (point-min) ;; There are two spaces after the last image. (- (point-max) 2))) - (message "At %s image" (if (> arg 0) "last" "first")))))) + (message "At %s image" (if (plusp arg) "last" "first")))))) (image-dired--update-header-line) (when image-dired-track-movement (image-dired-track-original-file))) @@ -1133,7 +1133,7 @@ With a negative prefix argument, prompt user for the delay." (let ((delay (cond ((not arg) image-dired-slideshow-delay) - ((> arg 0) + ((plusp arg) arg) ((<= arg 0) (string-to-number @@ -1247,7 +1247,7 @@ Ask user how many thumbnails should be displayed per row." (interactive nil image-dired-thumbnail-mode) (let ((image-dired-thumbs-per-row (string-to-number (read-string "How many thumbs per row: ")))) - (if (not (> image-dired-thumbs-per-row 0)) + (if (not (plusp image-dired-thumbs-per-row)) (message "Number must be greater than 0") (image-dired-line-up)))) commit 20edecd21f777848d51b1b892c4ed6192a088fc7 Merge: 41624d94cec 4d3a6189418 Author: Stefan Monnier Date: Tue Feb 18 10:07:34 2025 -0500 Merge remote-tracking branch 'refs/remotes/origin/master' commit 4d3a6189418d9fe6b743ce3924a5eead6638dccb Author: Gerd Möllmann Date: Tue Feb 18 16:05:38 2025 +0100 ; * src/menu.c (x_popup_menu_1): Fix typo. diff --git a/src/menu.c b/src/menu.c index c0245b42a48..11a0a10d87d 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1112,7 +1112,7 @@ Lisp_Object x_popup_menu_1 (Lisp_Object position, Lisp_Object menu) { if (!NILP (Vx_popup_menu_function)) - return calln (Qx_popup_menu_function, position, menu); + return calln (Vx_popup_menu_function, position, menu); Lisp_Object keymap, tem, tem2 = Qnil; int xpos = 0, ypos = 0; commit 41624d94cec98c1239c4fc9bb624e55ce0606068 Author: Stefan Monnier Date: Tue Feb 18 10:05:34 2025 -0500 (replace_range): Delete last arg, always the negation of the first bool * src/insdel.c (replace_range): Merge last arg, with `prepare`. Rename `prepare` to `run-mode-hooks`. * src/lisp.h (replace_range): Adjust accordingly. * src/editfns.c (Ftranslate_region_internal): * src/cmds.c (internal_self_insert): * src/search.c (Freplace_match): Adjust callers. diff --git a/src/cmds.c b/src/cmds.c index 7179822c21c..20893e85647 100644 --- a/src/cmds.c +++ b/src/cmds.c @@ -458,7 +458,7 @@ internal_self_insert (int c, EMACS_INT n) ptrdiff_t to; if (ckd_add (&to, PT, chars_to_delete)) to = PTRDIFF_MAX; - replace_range (PT, to, string, 1, 1, 1, 0, false); + replace_range (PT, to, string, true, true, true, false); Fforward_char (make_fixnum (n)); } else if (n > 1) diff --git a/src/editfns.c b/src/editfns.c index 5a5db32cc68..8fe2ecf1a03 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -2518,7 +2518,7 @@ It returns the number of characters changed. */) but it should handle multibyte characters correctly. */ string = make_multibyte_string ((char *) str, 1, str_len); replace_range (pos, pos + 1, string, - true, false, true, false, false); + true, false, true, false); len = str_len; } else @@ -2562,8 +2562,7 @@ It returns the number of characters changed. */) = (VECTORP (val) ? Fconcat (1, &val) : Fmake_string (make_fixnum (1), val, Qnil)); - replace_range (pos, pos + len, string, true, false, true, false, - false); + replace_range (pos, pos + len, string, true, false, true, false); pos_byte += SBYTES (string); pos += SCHARS (string); characters_changed += SCHARS (string); diff --git a/src/insdel.c b/src/insdel.c index 57e98018872..d3917bf668c 100644 --- a/src/insdel.c +++ b/src/insdel.c @@ -1425,8 +1425,8 @@ adjust_after_insert (ptrdiff_t from, ptrdiff_t from_byte, void replace_range (ptrdiff_t from, ptrdiff_t to, Lisp_Object new, - bool prepare, bool inherit, bool markers, - bool adjust_match_data, bool inhibit_mod_hooks) + bool run_mod_hooks, bool inherit, bool markers, + bool adjust_match_data) { ptrdiff_t inschars = SCHARS (new); ptrdiff_t insbytes = SBYTES (new); @@ -1440,7 +1440,7 @@ replace_range (ptrdiff_t from, ptrdiff_t to, Lisp_Object new, deletion = Qnil; - if (prepare) + if (run_mod_hooks) { ptrdiff_t range_length = to - from; prepare_to_modify_buffer (from, to, &from); @@ -1584,7 +1584,7 @@ replace_range (ptrdiff_t from, ptrdiff_t to, Lisp_Object new, if (adjust_match_data) update_search_regs (from, to, from + SCHARS (new)); - if (!inhibit_mod_hooks) + if (run_mod_hooks) { signal_after_change (from, nchars_del, GPT - from); update_compositions (from, GPT, CHECK_BORDER); diff --git a/src/lisp.h b/src/lisp.h index 6aea51f8322..89a47f0d2fe 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4361,7 +4361,7 @@ extern void adjust_markers_for_insert (ptrdiff_t, ptrdiff_t, extern void adjust_markers_bytepos (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, int); extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, bool, bool, - bool, bool, bool); + bool, bool); extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, const char *, ptrdiff_t, ptrdiff_t, bool); extern void syms_of_insdel (void); diff --git a/src/search.c b/src/search.c index 81466be323a..c8eb04e388b 100644 --- a/src/search.c +++ b/src/search.c @@ -2761,7 +2761,7 @@ since only regular expressions have distinguished subexpressions. */) newpoint = sub_start + SCHARS (newtext); /* Replace the old text with the new in the cleanest possible way. */ - replace_range (sub_start, sub_end, newtext, 1, 0, 1, true, false); + replace_range (sub_start, sub_end, newtext, true, false, true, true); if (case_action == all_caps) Fupcase_region (make_fixnum (search_regs.start[sub]), commit 19f5ccbf39383f9744b9513166a2d2e7ccb85e1c Author: Stefan Monnier Date: Tue Feb 18 09:54:48 2025 -0500 src/search.c (Freplace_match): Let `replace_range` call the a-c-f diff --git a/src/search.c b/src/search.c index 4a1a4868a82..81466be323a 100644 --- a/src/search.c +++ b/src/search.c @@ -2761,8 +2761,7 @@ since only regular expressions have distinguished subexpressions. */) newpoint = sub_start + SCHARS (newtext); /* Replace the old text with the new in the cleanest possible way. */ - replace_range (sub_start, sub_end, newtext, 1, 0, 1, true, true); - signal_after_change (sub_start, sub_end - sub_start, SCHARS (newtext)); + replace_range (sub_start, sub_end, newtext, 1, 0, 1, true, false); if (case_action == all_caps) Fupcase_region (make_fixnum (search_regs.start[sub]), commit 9854103b52a666db258bd10e4cd7f1291fb3bd6e Author: Stefan Monnier Date: Tue Feb 18 09:52:35 2025 -0500 * src/editfns.c (Fsubst_char_in_region): Delete left-over code This code was missed back in 2000 (commit 1b16afa45bb6). diff --git a/src/editfns.c b/src/editfns.c index f9258392146..5a5db32cc68 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -2230,11 +2230,6 @@ Both characters must have the same length of multi-byte form. */) unsigned char fromstr[MAX_MULTIBYTE_LENGTH], tostr[MAX_MULTIBYTE_LENGTH]; unsigned char *p; specpdl_ref count = SPECPDL_INDEX (); -#define COMBINING_NO 0 -#define COMBINING_BEFORE 1 -#define COMBINING_AFTER 2 -#define COMBINING_BOTH (COMBINING_BEFORE | COMBINING_AFTER) - int maybe_byte_combining = COMBINING_NO; ptrdiff_t last_changed = 0; bool multibyte_p = !NILP (BVAR (current_buffer, enable_multibyte_characters)); @@ -2253,17 +2248,6 @@ Both characters must have the same length of multi-byte form. */) len = CHAR_STRING (fromc, fromstr); if (CHAR_STRING (toc, tostr) != len) error ("Characters in `subst-char-in-region' have different byte-lengths"); - if (!ASCII_CHAR_P (*tostr)) - { - /* If *TOSTR is in the range 0x80..0x9F and TOCHAR is not a - complete multibyte character, it may be combined with the - after bytes. If it is in the range 0xA0..0xFF, it may be - combined with the before and after bytes. */ - if (!CHAR_HEAD_P (*tostr)) - maybe_byte_combining = COMBINING_BOTH; - else if (BYTES_BY_CHAR_HEAD (*tostr) > len) - maybe_byte_combining = COMBINING_AFTER; - } } else { @@ -2338,53 +2322,14 @@ Both characters must have the same length of multi-byte form. */) goto restart; } - /* Take care of the case where the new character - combines with neighboring bytes. */ - if (maybe_byte_combining - && (maybe_byte_combining == COMBINING_AFTER - ? (pos_byte_next < Z_BYTE - && ! CHAR_HEAD_P (FETCH_BYTE (pos_byte_next))) - : ((pos_byte_next < Z_BYTE - && ! CHAR_HEAD_P (FETCH_BYTE (pos_byte_next))) - || (pos_byte > BEG_BYTE - && ! ASCII_CHAR_P (FETCH_BYTE (pos_byte - 1)))))) - { - Lisp_Object tem, string; - - tem = BVAR (current_buffer, undo_list); - - /* Make a multibyte string containing this single character. */ - string = make_multibyte_string ((char *) tostr, 1, len); - /* replace_range is less efficient, because it moves the gap, - but it handles combining correctly. */ - replace_range (pos, pos + 1, string, - false, false, true, false, false); - pos_byte_next = CHAR_TO_BYTE (pos); - if (pos_byte_next > pos_byte) - /* Before combining happened. We should not increment - POS. So, to cancel the later increment of POS, - decrease it now. */ - pos--; - else - pos_byte_next += next_char_len (pos_byte_next); - - if (! NILP (noundo)) - bset_undo_list (current_buffer, tem); - } - else - { - if (NILP (noundo)) - record_change (pos, 1); - for (i = 0; i < len; i++) *p++ = tostr[i]; + if (NILP (noundo)) + record_change (pos, 1); + for (i = 0; i < len; i++) *p++ = tostr[i]; #ifdef HAVE_TREE_SITTER - /* In the previous branch, replace_range() notifies - changes to tree-sitter, but in this branch, we - modified buffer content manually, so we need to - notify tree-sitter manually. */ - treesit_record_change (pos_byte, pos_byte + len, pos_byte + len); + /* FIXME: Why not do it when we `signal_after_change`? */ + treesit_record_change (pos_byte, pos_byte + len, pos_byte + len); #endif - } last_changed = pos + 1; } pos_byte = pos_byte_next; commit bf067daf0df9441ef94ffe6ba2b2d1add3a4ee39 Author: Gerd Möllmann Date: Tue Feb 18 15:41:07 2025 +0100 * src/menu.c (x_popup_menu_1): Use calln. diff --git a/src/menu.c b/src/menu.c index f7a3f55b070..c0245b42a48 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1112,10 +1112,7 @@ Lisp_Object x_popup_menu_1 (Lisp_Object position, Lisp_Object menu) { if (!NILP (Vx_popup_menu_function)) - { - Lisp_Object args[] = { Qx_popup_menu_function, position, menu, }; - return run_hook_with_args (3, args, Ffuncall); - } + return calln (Qx_popup_menu_function, position, menu); Lisp_Object keymap, tem, tem2 = Qnil; int xpos = 0, ypos = 0; commit c54d6680d3622802709e79d2daac28218f65fb97 Author: Eli Zaretskii Date: Tue Feb 18 16:40:42 2025 +0200 ; * etc/NEWS: Fix punctuation. diff --git a/etc/NEWS b/etc/NEWS index 56df5365135..dc2374c319c 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -69,7 +69,7 @@ like tooltips. Other use-cases of child frames are not supported yet. In particular: - trying to create minibuffer-only child frames on a TTY frame will - signal an error. + signal an error; and - a TTY child frame cannot be converted to a root frame or vice-versa. To enable tooltips on TTY frames, call 'tty-tip-mode'. commit 37fad0483025b0eeaa33c5418b07bf6a14937ebf Author: Po Lu Date: Tue Feb 18 21:00:08 2025 +0800 * src/menu.c (x_popup_menu_1): Fix coding style. diff --git a/src/menu.c b/src/menu.c index a37cb359623..f7a3f55b070 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1112,10 +1112,10 @@ Lisp_Object x_popup_menu_1 (Lisp_Object position, Lisp_Object menu) { if (!NILP (Vx_popup_menu_function)) - return run_hook_with_args (3, ((Lisp_Object[]) { - Qx_popup_menu_function, position, - menu}), - Ffuncall); + { + Lisp_Object args[] = { Qx_popup_menu_function, position, menu, }; + return run_hook_with_args (3, args, Ffuncall); + } Lisp_Object keymap, tem, tem2 = Qnil; int xpos = 0, ypos = 0; commit 0cf3823463e9a52a6fbdc5e02555381cd6e0f5b5 Author: Po Lu Date: Tue Feb 18 20:58:32 2025 +0800 Don't access overriding-text-conversion-style when unbound * lisp/replace.el (perform-replace): Don't access overriding-text-conversion-style when unbound, and also avoid needlessly polluting this symbol with a binding. (bug#76371) diff --git a/lisp/replace.el b/lisp/replace.el index b1b417b226f..acb0e340266 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -2880,7 +2880,8 @@ characters." (region-filter nil) ;; Disable text conversion during the replacement operation. - (old-text-conversion-style overriding-text-conversion-style) + (old-text-conversion-style (and (boundp 'overriding-text-conversion-style) + overriding-text-conversion-style)) overriding-text-conversion-style ;; Data for the next match. If a cons, it has the same format as @@ -2940,10 +2941,9 @@ characters." (push-mark) (undo-boundary) - (when query-flag + (when (and query-flag (fboundp 'set-text-conversion-style)) (setq overriding-text-conversion-style nil) - (when (fboundp 'set-text-conversion-style) - (set-text-conversion-style text-conversion-style))) + (set-text-conversion-style text-conversion-style)) (unwind-protect ;; Loop finding occurrences that perhaps should be replaced. (while (and keep-going @@ -3362,12 +3362,11 @@ characters." (replace-dehighlight) (when region-filter (remove-function isearch-filter-predicate region-filter)) - (when query-flag + (when (and query-flag (fboundp 'set-text-conversion-style)) ;; Resume text conversion. (setq overriding-text-conversion-style old-text-conversion-style) - (when (fboundp 'set-text-conversion-style) - (set-text-conversion-style text-conversion-style)))) + (set-text-conversion-style text-conversion-style))) (or unread-command-events (message (ngettext "Replaced %d occurrence%s" "Replaced %d occurrences%s" commit ccaa0be8e71d70adeb6c881c8ef0e8a14054851c Author: Po Lu Date: Tue Feb 18 20:50:03 2025 +0800 ; * ChangeLog.4: Check in ommitted change. diff --git a/ChangeLog.4 b/ChangeLog.4 index b4a7733f0db..9b553d2c24e 100644 --- a/ChangeLog.4 +++ b/ChangeLog.4 @@ -183,7 +183,7 @@ `trusted-content'. * lisp/ielm.el (ielm): * lisp/simple.el (get-scratch-buffer-create): Set - `trusted-content` here instead. + `trusted-content' here instead. * lisp/files.el (trusted-content): Doc fix; warn against setting this option to :all in a major or mode mode. Problem reported by Max Nikulin . commit b5410cbea2ef8dab973430539649b8d424350925 Author: Po Lu Date: Tue Feb 18 20:47:32 2025 +0800 ; * ChangeLog.4: Fix log entries down to the 1 May 2024. diff --git a/ChangeLog.4 b/ChangeLog.4 index 6fa988dc127..b4a7733f0db 100644 --- a/ChangeLog.4 +++ b/ChangeLog.4 @@ -98,8 +98,8 @@ Fix gnus-score-find-score-files-function :type - * lisp/gnus/gnus-score.el (gnus-score-find-score-files-function): Delete - extra quotes. (Bug#76118) + * lisp/gnus/gnus-score.el (gnus-score-find-score-files-function): + Delete extra quotes. (Bug#76118) 2025-02-06 Eli Zaretskii @@ -115,7 +115,8 @@ 2025-02-03 Stefan Monnier - * lisp/emacs-lisp/track-changes.el (track-changes-fetch): Fix bug#75906 + * lisp/emacs-lisp/track-changes.el (track-changes-fetch): Fix + bug#75906. 2025-02-03 Michael Albinus @@ -135,7 +136,7 @@ 2025-02-02 Eli Zaretskii - Improve documentation of 'display-monitor-attributes- + Improve documentation of 'display-monitor-attributes-list' * doc/lispref/frames.texi (Multiple Terminals): * lisp/frame.el (display-monitor-attributes-list): Better @@ -166,24 +167,26 @@ eglot: Allow omnisharp binary to be capitalized "OmniSharp" - Some distributors (e.g. nixpkgs) provide a binary "OmniSharp" instead of - "omnisharp", which breaks on case-sensitive file-systems. + Some distributors (e.g. nixpkgs) provide a binary "OmniSharp" + instead of "omnisharp", which breaks on case-sensitive + file-systems. - * lisp/progmodes/eglot.el (eglot-server-programs): Add "OmniSharp" as a - valid binary name to search for. (Bug#75954) + * lisp/progmodes/eglot.el (eglot-server-programs): Add "OmniSharp" + as a valid binary name to search for. (Bug#75954) 2025-01-31 Stefan Kangas - Do not set `trusted-content` in major modes + Do not set `trusted-content' in major modes * lisp/progmodes/elisp-mode.el (lisp-interaction-mode): - * lisp/ielm.el (inferior-emacs-lisp-mode): Do not set `trusted-content. + * lisp/ielm.el (inferior-emacs-lisp-mode): Do not set + `trusted-content'. * lisp/ielm.el (ielm): - * lisp/simple.el (get-scratch-buffer-create): Set `trusted-content` here - instead. - * lisp/files.el (trusted-content): Doc fix; warn against setting this - option to :all in a major or mode mode. - Problem reported by Max Nikulin . + * lisp/simple.el (get-scratch-buffer-create): Set + `trusted-content` here instead. + * lisp/files.el (trusted-content): Doc fix; warn against setting + this option to :all in a major or mode mode. Problem reported by + Max Nikulin . 2025-01-30 Eli Zaretskii @@ -196,8 +199,8 @@ * doc/misc/cc-mode.texi (Getting Started) (Custom Filling and Breaking, Updating CC Mode) (Mailing Lists and Bug Reports): - * lisp/progmodes/cc-mode.el: Update cc-mode URL to point to nongnu.org, - instead of old URL on SourceForge. + * lisp/progmodes/cc-mode.el: Update cc-mode URL to point to + nongnu.org, instead of old URL on SourceForge. 2025-01-28 Michael Albinus @@ -207,8 +210,8 @@ Don't signal an error in treesit-node-at - * lisp/treesit.el (treesit-node-at): Wrap - treesit-buffer-root-node within condition-case. + * lisp/treesit.el (treesit-node-at): Wrap treesit-buffer-root-node + within condition-case. 2025-01-26 Stefan Kangas @@ -219,10 +222,10 @@ 2025-01-25 Stefan Monnier - doc/lispref/modes.texi (Syntactic Font Lock): Update for commit 644c6b414f3 - - Remove outdated `nil` element, as discussed in - https://lists.gnu.org/archive/html/help-gnu-emacs/2025-01/msg00244.html + * doc/lispref/modes.texi (Syntactic Font Lock): Update for commit + 644c6b414f3, by removing an outdated `nil' element, as discussed + in + https://lists.gnu.org/archive/html/help-gnu-emacs/2025-01/msg00244.html. 2025-01-25 Zhengyi Fu (tiny change) @@ -273,7 +276,7 @@ * doc/misc/idlwave.texi (Online Help, Catalogs): * doc/misc/wisent.texi (Wisent Overview): Be more consistent with abbreviations. Use @: or comma or rewrite to avoid double spaces. - Ref: https://lists.gnu.org/r/emacs-devel/2025-01/msg00909.html + Ref: https://lists.gnu.org/r/emacs-devel/2025-01/msg00909.html. 2025-01-24 Rudolf Adamkovič @@ -294,8 +297,8 @@ Fix go-ts-mode type declaration indentation (Bug#75785) - * lisp/progmodes/go-ts-mode.el (go-ts-mode--indent-rules): - Add rule for type_declaration. + * lisp/progmodes/go-ts-mode.el (go-ts-mode--indent-rules): Add + rule for type_declaration. 2025-01-21 Arthur Miller @@ -316,9 +319,7 @@ Improve 'key-valid-p' docstring * lisp/keymap.el (key-valid-p): Add "RET", "", and "C-m" - examples. - - (Bug#75586) + examples. (Bug#75586) 2025-01-19 Stefan Kangas @@ -331,16 +332,16 @@ Better document side-effect free and pure C functions - * doc/lispref/internals.texi (Writing Emacs Primitives): - Document that side-effect free and pure properties of C functions - are defined in byte-opt.el. + * doc/lispref/internals.texi (Writing Emacs Primitives): Document + that side-effect free and pure properties of C functions are + defined in byte-opt.el. 2025-01-14 Robert Pluim Add smtpmail cross-reference to 'auth-sources'. - * doc/misc/smtpmail.texi (Authentication): Add cross-reference - to 'auth-sources'. + * doc/misc/smtpmail.texi (Authentication): Add cross-reference to + 'auth-sources'. 2025-01-12 Mauro Aranda @@ -351,7 +352,7 @@ (Defining New Types): Emphasize the use of the :tag keyword when using the lazy widget. (Bug#74409) - (cherry picked from commit 99b85e116f09e68e0d5750c9772d0a2489680078) + (cherry picked from commit 99b85e116f09e68e0d5750c9772d0a2489680078) 2025-01-11 Mauro Aranda @@ -389,15 +390,15 @@ v0.21.1 and onwards changed how this was indented. - * lisp/progmodes/go-ts-mode.el (go-ts-mode--indent-rules): - Add rule for var_spec_list. + * lisp/progmodes/go-ts-mode.el (go-ts-mode--indent-rules): Add + rule for var_spec_list. 2025-01-09 Kohei Tsuruta (tiny change) Add "text" as a thing in tsx-ts-mode - * lisp/progmodes/typescript-ts-mode.el (tsx-ts-mode): - Add definition of "text" (bug#75422). + * lisp/progmodes/typescript-ts-mode.el (tsx-ts-mode): Add + definition of "text" (bug#75422). 2025-01-09 Nikolaos Chatzikonstantinou @@ -411,16 +412,16 @@ Clarify that 'mac' line ending convention is not used on macOS * doc/emacs/mule.texi (Coding Systems): - * doc/lispref/nonascii.texi (Coding System Basics): Clarify that the - 'mac' line ending convention is not used on macOS, and is now rare - outside of legacy software. + * doc/lispref/nonascii.texi (Coding System Basics): Clarify that + the 'mac' line ending convention is not used on macOS, and is now + rare outside of legacy software. 2025-01-07 Ellis Kenyo (tiny change) Add language server for Odin - * lisp/progmodes/eglot.el (eglot-server-programs): Add language server - for the Odin programming language. (Bug#75421) + * lisp/progmodes/eglot.el (eglot-server-programs): Add language + server for the Odin programming language. (Bug#75421) 2025-01-07 Stefan Kangas @@ -437,9 +438,9 @@ Improve the documentation of 'key-valid-p' * lisp/keymap.el (key-valid-p): Add an function key and mouse - button example. Mention '' as a cursor control key - instead of a function key. Briefly explain what an event may - be. (Bug#75366) + button example. Mention '' as a cursor control key instead + of a function key. Briefly explain what an event may be. + (Bug#75366) 2025-01-04 Ulrich Müller @@ -450,11 +451,12 @@ 2025-01-04 Hong Xu - Use `keymap*-set' over `global-set-key'/`define-key' in elisp intro + Use `keymap*-set' over `global-set-key'/`define-key' in elisp + intro * doc/lispintro/emacs-lisp-intro.texi (Key Bindings): Since - `global-set-key' and `define-key' are considered legacy, we encourage - `keymap-global-set' and `keymap-set' now. (Bug#74999) + `global-set-key' and `define-key' are considered legacy, we + encourage `keymap-global-set' and `keymap-set' now. (Bug#74999) 2025-01-04 Eli Zaretskii @@ -476,8 +478,8 @@ Add expression handling to heex-ts-mode - On the latest update of the grammar expressions were added and won't be - seen as directives anymore. + On the latest update of the grammar expressions were added and + won't be seen as directives anymore. * lisp/progmodes/heex-ts-mode.el (heex-ts--sexp-regexp): Match on expression as well. @@ -503,15 +505,16 @@ 2025-01-02 Dmitry Gutov - [project-vc]: Make project-buffers more consistent with project-files + [project-vc]: Make project-buffers more consistent with + project-files - * lisp/progmodes/project.el (project-buffers): - Catch 'file-missing' error to continue anyway if .git does not - exist (bug#74826). + * lisp/progmodes/project.el (project-buffers): Catch + 'file-missing' error to continue anyway if .git does not exist + (bug#74826). 2025-01-02 Stefan Monnier - (elisp-flymake-byte-compile): Improve UX with `debug-on-error` + (elisp-flymake-byte-compile): Improve UX with `debug-on-error * lisp/progmodes/elisp-mode.el (elisp-flymake-byte-compile): Don't jump into the debugger just because the content is not trusted. @@ -520,8 +523,8 @@ Always match underscore variables for elixir-ts-mode - The code comment is invalid, as it is common to treat any _variable as a - comment. + The code comment is invalid, as it is common to treat any + _variable as a comment. * lisp/progmodes/elixir-ts-mode.el (elixir-ts-font-lock-settings): Add ":override t" to comment identifier match. (Bug#75156) @@ -530,8 +533,9 @@ Add missing fontification matches for elixir-ts-mode - * lisp/progmodes/elixir-ts-mode.el (elixir-ts--font-lock-settings): Add - matches for missing tokens and fix atom type face. (Bug#75156) + * lisp/progmodes/elixir-ts-mode.el + (elixir-ts--font-lock-settings): Add matches for missing tokens + and fix atom type face. (Bug#75156) 2024-12-26 Stefan Kangas @@ -554,8 +558,8 @@ * lisp/progmodes/xscheme.el (xscheme-running-p): (xscheme-control-g-disabled-p): * lisp/tab-bar.el (tab-bar--event-to-item): - * lisp/which-key.el (which-key--hide-popup): Don't start docstrings with - "This function" or "This variable". + * lisp/which-key.el (which-key--hide-popup): Don't start + docstrings with "This function" or "This variable". 2024-12-26 Stefan Kangas @@ -568,40 +572,44 @@ Fix comment indent in 'lua-ts-mode' and old grammar * lisp/progmodes/lua-ts-mode.el (lua-ts--simple-indent-rules): - Improve multi-line comment indentation for pre-0.0.19 grammars that - used a different structure for comment start/end markers. + Improve multi-line comment indentation for pre-0.0.19 grammars + that used a different structure for comment start/end markers. (Bug#75107) 2024-12-25 Corwin Brust - * admin/nt/dist-build/build-dep-zips.py: (deps src) handle zst + * admin/nt/dist-build/build-dep-zips.py (deps src): Handle zst + format. This patch fixes various problems preventing this script from - working. The job of this script is to collect Emacs' dependanicies and - the (MSYS2/MinGW64) source archives for dependencies (including 2nd - etc. order dependencies) into zip archives. GPL requires distributing such - archives (along with Emacs' own sources) when distributing GPL binaries. - - Most principle of the changes is support for MSYS2 "w64" source archives - in zst format; previously this script assumed all sources were available - as tar.gz files. Additionally several DLLs are added to list of - required, including sqllite3 and tree-sitter. - - In general this is a maintenance fix to ensure others have access to the - code used to create pretest (and, presumably release) version of Emacs - 30. Additional changes are required to progmatically identify changes - in Emacs' dependencies (e.g. after building a new Emacs binary for - distribution). There is commented out code to this effect in the - changes I've installed which did work, for a brief period in time; I - suspect some changes in MSYS2 made it more difficult (or impossible?) to - invoke the MSYS2 shell (under which this python script must run) from - the MINGW64 (under which Emacs is built). I may resort to a powershell - script as a way to orchistrate/invoke both MSYS2 and MING64 but I'm - currently still messing with a Makefile based approach (which would run - under MINGW64), in any event I believe we're all agreed this script - must interigate Emacs to create the "starting list" of dependencies to - include as a way to resolve this issue (missing/incorrect deps are - frequent source of broken binary releases). (bug#65206) + working. The job of this script is to collect Emacs' dependanicies + and the (MSYS2/MinGW64) source archives for dependencies + (including 2nd etc. order dependencies) into zip archives. GPL + requires distributing such archives (along with Emacs' own + sources) when distributing GPL binaries. + + Most principle of the changes is support for MSYS2 "w64" source + archives in zst format; previously this script assumed all sources + were available as tar.gz files. Additionally several DLLs are + added to list of required, including sqllite3 and tree-sitter. + + In general this is a maintenance fix to ensure others have access + to the code used to create pretest (and, presumably release) + version of Emacs 30. Additional changes are required to + progmatically identify changes in Emacs' dependencies (e.g. after + building a new Emacs binary for distribution). There is commented + out code to this effect in the changes I've installed which did + work, for a brief period in time; I suspect some changes in MSYS2 + made it more difficult (or impossible?) to invoke the MSYS2 shell + (under which this python script must run) from the MINGW64 (under + which Emacs is built). I may resort to a powershell script as a + way to orchistrate/invoke both MSYS2 and MING64 but I'm currently + still messing with a Makefile based approach (which would run + under MINGW64), in any event I believe we're all agreed this + script must interigate Emacs to create the "starting list" of + dependencies to include as a way to resolve this issue + (missing/incorrect deps are frequent source of broken binary + releases). (bug#65206) 2024-12-24 Eli Zaretskii @@ -617,40 +625,38 @@ 2024-12-23 Corwin Brust - * admin/nt/dist-build/emacs.nsi: (Uninstall) delete only one Emacs + * admin/nt/dist-build/emacs.nsi (Uninstall): Delete only one + Emacs. - Previously, the uninstaller would recursively, unconditionally, remove - the parent folder in which Emacs was installed (the folder selected by - when running the installer), into which the installer places a folder - named for the given release (e.g. emacs-30.1). This was a problem - during uinstalation when the selected folder contained other versions of - Emacs the user did not wish to remove. Additionally, deleting Start Menu - short-cuts did not work (bug#68756). + Previously, the uninstaller would recursively, unconditionally, + remove the parent folder in which Emacs was installed (the folder + selected by when running the installer), into which the installer + places a folder named for the given release (e.g. emacs-30.1). + This was a problem during uinstalation when the selected folder + contained other versions of Emacs the user did not wish to remove. + Additionally, deleting Start Menu short-cuts did not work + (bug#68756). Some installer language now better reflects that users are not required to "Accept" the GNU Public License in order to use (etc.) Emacs (bug#67667). - Users selections related to where to create (or not create) Start Menu - shortcuts are no longer ignored. (bug#75013) + Users selections related to where to create (or not create) Start + Menu shortcuts are no longer ignored. (bug#75013) Emacs (as installed by the installer) can now be uninstalled via Windows' Add/Remove Progrms Control Panel. The uninstaller will now remove (empty) parent folders, both under - Program Files and (when creation of shortcuts is enabled) under the - select Start Menu location. - -2024-12-22 Eli Zaretskii - - ;* doc/misc/efaq.texi (New in Emacs 30): Mention 'trusted-contents'. + Program Files and (when creation of shortcuts is enabled) under + the select Start Menu location. 2024-12-22 Michael Albinus Improve D-Bus and Tramp manual * doc/misc/dbus.texi (Overview): - * doc/misc/tramp.texi (GVFS-based methods): Describe, how the + * doc/misc/tramp.texi (GVFS-based methods): Describe how the feature can be checked at runtime. (Bug#75004) 2024-12-21 john muhl @@ -700,7 +706,7 @@ 2024-12-18 Eli Zaretskii - Document 'trusted-content + Document 'trusted-content' * doc/emacs/misc.texi (Host Security): Document 'trusted-content'. @@ -745,23 +751,27 @@ 2024-12-16 Stefan Monnier - * lisp/files.el (trusted-content-p): Make `:all` work in non-file buffers + * lisp/files.el (trusted-content-p): Make `:all' work in non-file + buffers. 2024-12-15 Stefan Monnier - * lisp/org/ox-texinfo.el (org-texinfo-template): Fix Info format (bug#74844) + * lisp/org/ox-texinfo.el (org-texinfo-template): Fix Info format. + (bug#74844) 2024-12-15 Stefan Monnier - trusted-content: Adjust the last patch based on preliminary feedback + trusted-content: Adjust the last patch based on preliminary + feedback. - * lisp/files.el (trusted-content): Rename from `trusted-files`. + * lisp/files.el (trusted-content): Rename from `trusted-files'. Update all references. * lisp/progmodes/elisp-mode.el (lisp-interaction-mode): * lisp/ielm.el (inferior-emacs-lisp-mode): - * lisp/simple.el (read--expression): Set `trusted-content` since - these buffers contain code that the user presumably intends to run anyway. + * lisp/simple.el (read--expression): Set `trusted-content' since + these buffers contain code that the user presumably intends to run + anyway. (elisp--safe-macroexpand-all): Make the warning more discreet. 2024-12-15 Paul Eggert @@ -776,30 +786,32 @@ Update documentation of 'etags' regexps * doc/emacs/maintaining.texi (Etags Regexps): - * doc/man/etags.1: Say that shy groups are not supported (bug#74861). + * doc/man/etags.1: Say that shy groups are not supported + (bug#74861). 2024-12-14 Stefan Monnier elisp-mode.el: Disable Flymake byte-compile backend in untrusted files To address serious security issues (CVE-2024-53920), disable - `elisp-flymake-byte-compile` except in those files explicitly - specified as "trusted". + `elisp-flymake-byte-compile' except in those files which are + explicitly specified as "trusted". - For that introduce a new custom var `trusted-files` and new - function `trusted-content-p`. + For that introduce a new custom var `trusted-files' and new + function `trusted-content-p'. - While at it, similarly skip the implicit macroexpansion done during - completion if the current file is not trusted. + While at it, similarly skip the implicit macroexpansion done + during completion if the current file is not trusted. * lisp/files.el (trusted-files): New variable. (trusted-content-p): New function. * lisp/progmodes/elisp-mode.el (elisp--safe-macroexpand-all): - New function, extracted from `elisp--local-variables`. - Use `trusted-content-p`. + New function, extracted from `elisp--local-variables'. + Use `trusted-content-p'. (elisp--local-variables): Use it. - (elisp-flymake-byte-compile): Disable according to `trusted-content-p`. + (elisp-flymake-byte-compile): Disable according to + `trusted-content-p'. 2024-12-13 Stephen Gildea @@ -816,8 +828,8 @@ Fix 'gnus-select-method' custom type * lisp/gnus/gnus.el (gnus-redefine-select-method-widget): Cater - for the 'gnus-search-engine' configuration variable, which takes - 2 args instead of 1. (Bug#74759) + for the 'gnus-search-engine' configuration variable, which takes 2 + args instead of 1. (Bug#74759) 2024-12-10 Chu (tiny change) @@ -848,16 +860,16 @@ Don't restrict 'lua-ts-send-file' to 'lua-ts-mode' * lisp/progmodes/lua-ts-mode.el (lua-ts-send-file): Remove - restriction on interactive use. Unlike related send-* commands - it can be useful to send a file to the Lua interpreter outside of - a 'lua-ts-mode' buffer. (Bug#74705) + restriction on interactive use. Unlike related send-* commands it + can be useful to send a file to the Lua interpreter outside of a + 'lua-ts-mode' buffer. (Bug#74705) 2024-12-07 Vincenzo Pupillo Remove unnecessary function call from 'php-ts-mode' - * lisp/progmodes/php-ts-mode.el (php-ts-mode): Remove - unnecessary function call 'treesit-font-lock-recompute-features'. + * lisp/progmodes/php-ts-mode.el (php-ts-mode): Remove unnecessary + function call 'treesit-font-lock-recompute-features'. (Bug#74688) (cherry picked from commit c87c5b95e1309b59b6cb07d07a20234a74a73f35) @@ -891,13 +903,13 @@ Improve docstrings of functions for moving to message headers - * lisp/gnus/message.el (message-goto-to, message-goto-from, - message-goto-subject, message-goto-cc, message-goto-bcc, - message-goto-fcc, message-goto-reply-to, - message-goto-newsgroups, message-goto-distribution, - message-goto-followup-to, message-goto-mail-followup-to, - message-goto-keywords, message-goto-summary): Mention that these - will insert an empty header if the header is not found. + * lisp/gnus/message.el (message-goto-to, message-goto-from) + (message-goto-subject, message-goto-cc, message-goto-bcc) + (message-goto-fcc, message-goto-reply-to, message-goto-newsgroups) + (message-goto-distribution, message-goto-followup-to) + (message-goto-mail-followup-to, message-goto-keywords) + (message-goto-summary): Mention that these will insert an empty + header if the header is not found. (message-position-on-field): Explain that this inserts an empty header if the header is missing, and that insertion is done after the headers mentioned in AFTERS. @@ -908,11 +920,12 @@ Fix the latest dabbrev-expand test fix - * test/lisp/dabbrev-tests.el (dabbrev-expand-after-killing-buffer): - In batch runs of this file, the user-error message contains curved - quotes, but grave quotes when running `make check' (so here was - evidently not passed to `substitute-command-keys'), so use grave - quotes so the test succeeds in both modes of execution. + * test/lisp/dabbrev-tests.el + (dabbrev-expand-after-killing-buffer): In batch runs of this file, + the user-error message contains curved quotes, but grave quotes + when running `make check' (so here was evidently not passed to + `substitute-command-keys'), so use grave quotes so the test + succeeds in both modes of execution. 2024-12-02 Michael Albinus @@ -934,15 +947,17 @@ Fix latest test for dabbrev-expand - * test/lisp/dabbrev-tests.el (dabbrev-expand-after-killing-buffer): - Fix typo in a 'should' test, use part of return value of 'should-error' - test, and remove mistaken and unfounded FIXME comment. + * test/lisp/dabbrev-tests.el + (dabbrev-expand-after-killing-buffer): Fix typo in a 'should' + test, use part of return value of 'should-error' test, and remove + mistaken and unfounded FIXME comment. 2024-12-01 Yuan Fu Allow passing nil to treesit-node-match-p (bug#74612) - * src/treesit.c (Ftreesit_node_match_p): Return nil if NODE is nil. + * src/treesit.c (Ftreesit_node_match_p): Return nil if NODE is + nil. 2024-12-01 Manuel Giraud @@ -981,7 +996,7 @@ Support PHP 8.4 and more reliable indentation (bug#74525) - Added support for PHP 8.4 property hook. More reliable CSS and + Added support for PHP 8.4 property hook. More reliable CSS and Javascript syntax indentation when there are attributes in + +When nil, indentation of the tag body starts just below the +tag, like: + + + +When `ignore', the tag body starts in the first column, like: + + " + :type '(choice (const nil) (const t) (const ignore)) + :safe 'symbolp + :set #'mhtml-ts-mode--tag-relative-indent-offset + :version "31.1") + +(defcustom mhtml-ts-mode-css-fontify-colors t + "Whether CSS colors should be fontified using the color as the background. +If non-nil, text representing a CSS color will be fontified +such that its background is the color itself. +Works like `css--fontify-region'." + :tag "HTML colors the CSS properties values." + :version "31.1" + :type 'boolean + :safe 'booleanp) + +(defvar mhtml-ts-mode-saved-pretty-print-command nil + "The command last used to pretty print in this buffer.") + +(defun mhtml-ts-mode-pretty-print (command) + "Prettify the current buffer. +Argument COMMAND The command to use." + (interactive + (list (read-string + "Prettify command: " + (or mhtml-ts-mode-saved-pretty-print-command + (concat mhtml-ts-mode-pretty-print-command " "))))) + (setq mhtml-ts-mode-saved-pretty-print-command command) + (save-excursion + (shell-command-on-region + (point-min) (point-max) + command (buffer-name) t + "*mhtml-ts-mode-pretty-pretty-print-errors*" t))) + +(defun mhtml-ts-mode--switch-fill-defun (&rest arguments) + "Switch between `fill-paragraph' and `prog-fill-reindent-defun'. +In an HTML region it calls `fill-paragraph' as does `html-ts-mode', +otherwise it calls `prog-fill-reindent-defun'. +Optional ARGUMENTS to to be passed to it." + (interactive) + (if (eq (treesit-language-at (point)) 'html) + (funcall-interactively #'fill-paragraph arguments) + (funcall-interactively #'prog-fill-reindent-defun arguments))) + +(defvar-keymap mhtml-ts-mode-map + :doc "Keymap for `mhtml-ts-mode' buffers." + :parent html-mode-map + ;; `mhtml-ts-mode' derive from `html-ts-mode' so the keymap is the + ;; same, we need to add some mapping from others languages. + "C-c C-f" #'css-cycle-color-format + "M-q" #'mhtml-ts-mode--switch-fill-defun) + +;; Place the CSS menu in the menu bar as well. +(easy-menu-define mhtml-ts-mode-menu mhtml-ts-mode-map + "Menu bar for `mhtml-ts-mode'." + css-mode--menu) + +;; To enable some basic treesiter functionality, you should define +;; a function that recognizes which grammar is used at-point. +;; This function should be assigned to `treesit-language-at-point-function' +(defun mhtml-ts-mode--language-at-point (point) + "Return the language at POINT assuming the point is within a HTML buffer." + (let* ((node (treesit-node-at point 'html)) + (parent (treesit-node-parent node)) + (node-query (format "(%s (%s))" + (treesit-node-type parent) + (treesit-node-type node)))) + (cond + ((equal "(script_element (raw_text))" node-query) (js--treesit-language-at-point point)) + ((equal "(style_element (raw_text))" node-query) 'css) + (t 'html)))) + +;; Custom font-lock function that's used to apply color to css color +;; The signature of the function should be conforming to signature +;; QUERY-SPEC required by `treesit-font-lock-rules'. +(defun mhtml-ts-mode--colorize-css-value (node override start end &rest _) + "Colorize CSS property value like `css--fontify-region'. +For NODE, OVERRIDE, START, and END, see `treesit-font-lock-rules'." + (if (and mhtml-ts-mode-css-fontify-colors + (string-equal "plain_value" (treesit-node-type node))) + (let ((color (css--compute-color start (treesit-node-text node t)))) + (when color + (with-silent-modifications + (add-text-properties + (treesit-node-start node) (treesit-node-end node) + (list 'face (list :background color + :foreground (readable-foreground-color + color) + :box '(:line-width -1))))))) + (treesit-fontify-with-override + (treesit-node-start node) (treesit-node-end node) + 'font-lock-variable-name-face + override start end))) + +;; Embedded languages ​​should be indented according to the language +;; that embeds them. +;; This function signature complies with `treesit-simple-indent-rules' +;; ANCHOR. +(defun mhtml-ts-mode--js-css-tag-bol (_node _parent &rest _) + "Find the first non-space characters of html tags