commit a99ea4b7616025cf78c2f6bf69bc8e5cafb730b7 (HEAD, refs/remotes/origin/master) Author: Eli Zaretskii Date: Fri Aug 12 09:49:35 2022 +0300 ; Fix documentation of 'loaddefs-generate' (bug#57144) * lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Doc fix. diff --git a/lisp/emacs-lisp/loaddefs-gen.el b/lisp/emacs-lisp/loaddefs-gen.el index 3b329357ad..0c9bc4832b 100644 --- a/lisp/emacs-lisp/loaddefs-gen.el +++ b/lisp/emacs-lisp/loaddefs-gen.el @@ -519,15 +519,21 @@ binds `generated-autoload-file' as a file-local variable, write its autoloads into the specified file instead. The function does NOT recursively descend into subdirectories of the -directory or directories specified. +directory or directories specified by DIRS. -If EXTRA-DATA, include this string at the start of the generated -file. This will also force generation of OUTPUT-FILE even if -there are no autoloads to put into the file. +Optional argument EXCLUDED-FILES, if non-nil, should be a list of +files, such as preloaded files, whose autoloads should not be written +to OUTPUT-FILE. -If INCLUDE-PACKAGE-VERSION, include package version data. +If EXTRA-DATA is non-nil, it should be a string; include that string +at the beginning of the generated file. This will also force the +generation of OUTPUT-FILE even if there are no autoloads to put into +that file. -If GENERATE-FULL, don't update, but regenerate all the loaddefs files." +If INCLUDE-PACKAGE-VERSION is non-nil, include package version data. + +If GENERATE-FULL is non-nil, regenerate all the loaddefs files anew, +instead of just updating them with the new/changed autoloads." (let* ((files-re (let ((tmp nil)) (dolist (suf (get-load-suffixes)) ;; We don't use module-file-suffix below because commit 687fcc2c40d693bbe342d938e37a4c9a245a1b02 Merge: 05c4e7bfbd 9419bc904d Author: Stefan Kangas Date: Fri Aug 12 06:30:31 2022 +0200 Merge from origin/emacs-28 9419bc904d ; * lisp/printing.el: Delete outdated download instructions. 31af0f4eb7 Don't list Emacs as requirement for built-in package ae348b719e Fix wrong metrics for bitmap-only fonts with HarfBuzz 5 commit 05c4e7bfbdc5c0ed462be7356e6841e1e59d3851 Author: Po Lu Date: Fri Aug 12 09:25:12 2022 +0800 Prevent SelectionNotify etc from reaching GTK 3 * src/xterm.c (handle_one_xevent): Prevent selection events from reaching GTK if they are destined for an Emacs window. diff --git a/src/xterm.c b/src/xterm.c index 4372fdb959..48f10269df 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -17877,6 +17877,12 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (!x_window_to_frame (dpyinfo, event->xselection.requestor)) goto OTHER; #endif /* not USE_X_TOOLKIT and not USE_GTK */ +#ifdef HAVE_GTK3 + /* GTK 3 apparently chokes on these events since they have no + associated device. (bug#56869, another bug as well that I + can't find) */ + *finish = X_EVENT_DROP; +#endif x_handle_selection_notify (&event->xselection); break; @@ -17885,6 +17891,9 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (!x_window_to_frame (dpyinfo, event->xselectionclear.window)) goto OTHER; #endif /* not USE_X_TOOLKIT and not USE_GTK */ +#ifdef HAVE_GTK3 + *finish = X_EVENT_DROP; +#endif { const XSelectionClearEvent *eventp = &event->xselectionclear; @@ -17911,6 +17920,9 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (!x_window_to_frame (dpyinfo, event->xselectionrequest.owner)) goto OTHER; #endif /* USE_X_TOOLKIT */ +#ifdef HAVE_GTK3 + *finish = X_EVENT_DROP; +#endif { const XSelectionRequestEvent *eventp = &event->xselectionrequest; commit 48215c41d16fadb69e85121b3baca0dfca82cc44 Author: Alan Mackenzie Date: Thu Aug 11 19:31:09 2022 +0000 New debugging facility: backtraces from errors in Lisp called from redisplay Setting backtrace-on-redisplay-error to non-nil enables the generation of a Lisp backtrace in buffer *Redisplay-trace* following an error in Lisp called from redisplay. * doc/lispref/debugging.texi (Debugging Redisplay): New subsection. (Error Debugging): Reference to the new subsection. * etc/NEWS: New entry for the new facility. * src/eval.c (redisplay_deep_handler): New variable. (init_eval): Initialize redisplay_deep_handler. (call_debugger): Don't throw to top-level after calling debug-early (internal_condition_case_n): "Bind" redisplay_deep_handler to the current handler. (backtrace_yet): New boolean variable. (signal_or_quit): New code section to handle Lisp errors occurring in redisplay. (syms_of_eval): New DEFVAR_BOOL backtrace-on-redisplay-error. * src/keyboard.c (command_loop_1): Set backtrace_yet to false each time around the loop. (safe_run_hooks_error): Allow args to be up to four Lisp_Objects long. (safe_run_hooks_2): New function. * src/lisp.h (top level): declare as externs backtrace_yet and safe_run_hooks_2. * src/xdisp.c (run_window_scroll_functions): Replace a call to run_hook_with_args_2 with one to safe_run_hooks_2. diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi index 058c931954..9ae40949d1 100644 --- a/doc/lispref/debugging.texi +++ b/doc/lispref/debugging.texi @@ -77,6 +77,7 @@ debugger recursively. @xref{Recursive Editing}. @menu * Error Debugging:: Entering the debugger when an error happens. +* Debugging Redisplay:: Getting backtraces from redisplay errors. * Infinite Loops:: Stopping and debugging a program that doesn't exit. * Function Debugging:: Entering it when a certain function is called. * Variable Debugging:: Entering it when a variable is modified. @@ -105,6 +106,10 @@ debugger, set the variable @code{debug-on-error} to non-@code{nil}. (The command @code{toggle-debug-on-error} provides an easy way to do this.) +Note that, for technical reasons, you cannot use the facilities +defined in this subsection to debug errors in Lisp that the redisplay +code has invoked. @xref{Debugging Redisplay}, for help with these. + @defopt debug-on-error This variable determines whether the debugger is called when an error is signaled and not handled. If @code{debug-on-error} is @code{t}, @@ -213,6 +218,45 @@ file, use the option @samp{--debug-init}. This binds bypasses the @code{condition-case} which normally catches errors in the init file. +@node Debugging Redisplay +@subsection Debugging Redisplay Errors +@cindex redisplay errors +@cindex debugging redisplay errors + +When an error occurs in Lisp code which redisplay has invoked, Emacs's +usual debugging mechanisms are unusable, for technical reasons. This +subsection describes how to get a backtrace from such an error, which +should be helpful in debugging it. + +These directions apply to Lisp forms used, for example, in +@code{:eval} mode line constructs (@pxref{Mode Line Data}), and in all +hooks invoked from redisplay, such as: + +@itemize +@item +@code{fontification-functions} (@pxref{Auto Faces}). +@item +@code{window-scroll-functions} (@pxref{Window Hooks}). +@end itemize + +Note that if you have had an error in a hook function called from +redisplay, the error handling might have removed this function from +the hook. You will thus need to reinitialize that hook somehow, +perhaps with @code{add-hook}, to be able to replay the bug. + +To generate a backtrace in these circumstances, set the variable +@code{backtrace-on-redisplay-error} to non-@code{nil}. When the error +occurs, Emacs will dump the backtrace to the buffer +@file{*Redisplay-trace*}, but won't automatically display it in a +window. This is to avoid needlessly corrupting the redisplay you are +debugging. You will thus need to display the buffer yourself, with a +command such as @code{switch-to-buffer-other-frame} @key{C-x 5 b}. + +@defvar backtrace-on-redisplay-error +Set this variable to non-@code{nil} to enable the generation of a +backtrace when an error occurs in any Lisp called from redisplay. +@end defvar + @node Infinite Loops @subsection Debugging Infinite Loops @cindex infinite loops diff --git a/etc/NEWS b/etc/NEWS index 8d54ccc0dc..2747cec18c 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1339,6 +1339,13 @@ When invoked with a non-zero prefix argument, as in 'C-u C-x C-e', this command will pop up a new buffer and show the full pretty-printed value there. ++++ +*** You can now generate a backtrace from Lisp errors in redisplay. +To do this, set the new variable 'backtrace-on-redisplay-error' to a +non-nil value. The backtrace will be written to buffer +*Redisplay-trace*. This buffer will not be automatically displayed in +a window. + ** Compile +++ diff --git a/src/eval.c b/src/eval.c index d82d05797b..56b4296662 100644 --- a/src/eval.c +++ b/src/eval.c @@ -57,6 +57,12 @@ Lisp_Object Vrun_hooks; /* FIXME: We should probably get rid of this! */ Lisp_Object Vsignaling_function; +/* The handler structure which will catch errors in Lisp hooks called + from redisplay. We do not use it for this; we compare it with the + handler which is about to be used in signal_or_quit, and if it + matches, cause a backtrace to be generated. */ +static struct handler *redisplay_deep_handler; + /* These would ordinarily be static, but they need to be visible to GDB. */ bool backtrace_p (union specbinding *) EXTERNALLY_VISIBLE; Lisp_Object *backtrace_args (union specbinding *) EXTERNALLY_VISIBLE; @@ -246,6 +252,7 @@ init_eval (void) lisp_eval_depth = 0; /* This is less than the initial value of num_nonmacro_input_events. */ when_entered_debugger = -1; + redisplay_deep_handler = NULL; } /* Ensure that *M is at least A + B if possible, or is its maximum @@ -333,7 +340,8 @@ call_debugger (Lisp_Object arg) /* Interrupting redisplay and resuming it later is not safe under all circumstances. So, when the debugger returns, abort the interrupted redisplay by going back to the top-level. */ - if (debug_while_redisplaying) + if (debug_while_redisplaying + && !EQ (Vdebugger, Qdebug_early)) Ftop_level (); return unbind_to (count, val); @@ -1556,12 +1564,16 @@ internal_condition_case_n (Lisp_Object (*bfun) (ptrdiff_t, Lisp_Object *), ptrdiff_t nargs, Lisp_Object *args)) { + struct handler *old_deep = redisplay_deep_handler; struct handler *c = push_handler (handlers, CONDITION_CASE); + if (redisplaying_p) + redisplay_deep_handler = c; if (sys_setjmp (c->jmp)) { Lisp_Object val = handlerlist->val; clobbered_eassert (handlerlist == c); handlerlist = handlerlist->next; + redisplay_deep_handler = old_deep; return hfun (val, nargs, args); } else @@ -1569,6 +1581,7 @@ internal_condition_case_n (Lisp_Object (*bfun) (ptrdiff_t, Lisp_Object *), Lisp_Object val = bfun (nargs, args); eassert (handlerlist == c); handlerlist = c->next; + redisplay_deep_handler = old_deep; return val; } } @@ -1701,6 +1714,11 @@ quit (void) return signal_or_quit (Qquit, Qnil, true); } +/* Has an error in redisplay giving rise to a backtrace occurred as + yet in the current command? This gets reset in the command + loop. */ +bool backtrace_yet = false; + /* Signal an error, or quit. ERROR_SYMBOL and DATA are as with Fsignal. If KEYBOARD_QUIT, this is a quit; ERROR_SYMBOL should be Qquit and DATA should be Qnil, and this function may return. @@ -1816,6 +1834,40 @@ signal_or_quit (Lisp_Object error_symbol, Lisp_Object data, bool keyboard_quit) unbind_to (count, Qnil); } + /* If an error is signalled during a Lisp hook in redisplay, write a + backtrace into the buffer *Redisplay-trace*. */ + if (!debugger_called && !NILP (error_symbol) + && backtrace_on_redisplay_error + && (NILP (clause) || h == redisplay_deep_handler) + && NILP (Vinhibit_debugger) + && !NILP (Ffboundp (Qdebug_early))) + { + max_ensure_room (&max_lisp_eval_depth, lisp_eval_depth, 100); + specpdl_ref count = SPECPDL_INDEX (); + ptrdiff_t counti = specpdl_ref_to_count (count); + AUTO_STRING (redisplay_trace, "*Redisplay_trace*"); + Lisp_Object redisplay_trace_buffer; + AUTO_STRING (gap, "\n\n\n\n"); /* Separates things in *Redisplay-trace* */ + Lisp_Object delayed_warning; + max_ensure_room (&max_specpdl_size, counti, 200); + redisplay_trace_buffer = Fget_buffer_create (redisplay_trace, Qnil); + current_buffer = XBUFFER (redisplay_trace_buffer); + if (!backtrace_yet) /* Are we on the first backtrace of the command? */ + Ferase_buffer (); + else + Finsert (1, &gap); + backtrace_yet = true; + specbind (Qstandard_output, redisplay_trace_buffer); + specbind (Qdebugger, Qdebug_early); + call_debugger (list2 (Qerror, Fcons (error_symbol, data))); + unbind_to (count, Qnil); + delayed_warning = make_string + ("Error in a redisplay Lisp hook. See buffer *Redisplay_trace*", 61); + + Vdelayed_warnings_list = Fcons (list2 (Qerror, delayed_warning), + Vdelayed_warnings_list); + } + if (!NILP (clause)) { Lisp_Object unwind_data @@ -4278,6 +4330,11 @@ Does not apply if quit is handled by a `condition-case'. */); DEFVAR_BOOL ("debug-on-next-call", debug_on_next_call, doc: /* Non-nil means enter debugger before next `eval', `apply' or `funcall'. */); + DEFVAR_BOOL ("backtrace-on-redisplay-error", backtrace_on_redisplay_error, + doc: /* Non-nil means create a backtrace if a lisp error occurs in redisplay. +The backtrace is written to buffer *Redisplay-trace*. */); + backtrace_on_redisplay_error = false; + DEFVAR_BOOL ("debugger-may-continue", debugger_may_continue, doc: /* Non-nil means debugger may continue execution. This is nil when the debugger is called under circumstances where it diff --git a/src/keyboard.c b/src/keyboard.c index 4ad6e4e6bd..719226caed 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -1331,6 +1331,7 @@ command_loop_1 (void) display_malloc_warning (); Vdeactivate_mark = Qnil; + backtrace_yet = false; /* Don't ignore mouse movements for more than a single command loop. (This flag is set in xdisp.c whenever the tool bar is @@ -1841,7 +1842,7 @@ safe_run_hooks_1 (ptrdiff_t nargs, Lisp_Object *args) static Lisp_Object safe_run_hooks_error (Lisp_Object error, ptrdiff_t nargs, Lisp_Object *args) { - eassert (nargs == 2); + eassert (nargs >= 2 && nargs <= 4); AUTO_STRING (format, "Error in %s (%S): %S"); Lisp_Object hook = args[0]; Lisp_Object fun = args[1]; @@ -1915,6 +1916,17 @@ safe_run_hooks_maybe_narrowed (Lisp_Object hook, struct window *w) unbind_to (count, Qnil); } +void +safe_run_hooks_2 (Lisp_Object hook, Lisp_Object arg1, Lisp_Object arg2) +{ + specpdl_ref count = SPECPDL_INDEX (); + + specbind (Qinhibit_quit, Qt); + run_hook_with_args (4, ((Lisp_Object []) {hook, hook, arg1, arg2}), + safe_run_hook_funcall); + unbind_to (count, Qnil); +} + /* Nonzero means polling for input is temporarily suppressed. */ diff --git a/src/lisp.h b/src/lisp.h index fe6e98843d..2f73ba4c61 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4530,6 +4530,7 @@ extern Lisp_Object Vrun_hooks; extern Lisp_Object Vsignaling_function; extern Lisp_Object inhibit_lisp_code; extern bool signal_quit_p (Lisp_Object); +extern bool backtrace_yet; /* To run a normal hook, use the appropriate function from the list below. The calling convention: @@ -4831,6 +4832,7 @@ extern bool detect_input_pending_ignore_squeezables (void); extern bool detect_input_pending_run_timers (bool); extern void safe_run_hooks (Lisp_Object); extern void safe_run_hooks_maybe_narrowed (Lisp_Object, struct window *); +extern void safe_run_hooks_2 (Lisp_Object, Lisp_Object, Lisp_Object); extern void cmd_error_internal (Lisp_Object, const char *); extern Lisp_Object command_loop_2 (Lisp_Object); extern Lisp_Object read_menu_command (void); diff --git a/src/xdisp.c b/src/xdisp.c index 855f48f2bd..5268c359ec 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -18133,8 +18133,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp) { specpdl_ref count = SPECPDL_INDEX (); specbind (Qinhibit_quit, Qt); - run_hook_with_args_2 (Qwindow_scroll_functions, window, - make_fixnum (CHARPOS (startp))); + safe_run_hooks_2 + (Qwindow_scroll_functions, window, make_fixnum (CHARPOS (startp))); unbind_to (count, Qnil); SET_TEXT_POS_FROM_MARKER (startp, w->start); /* In case the hook functions switch buffers. */ commit e7f1d4f6e106576f3d8de4074290dc4e8c7c544f Author: Axel Svensson Date: Tue Aug 9 01:11:02 2022 +0200 Support the full range of variation selectors * lisp/international/characters.el: Provide acronyms for variation selectors. (update-glyphless-char-display): Update display of the full range of variation selectors. (glyphless-char-display-control): Update doc string. (Bug#57072) * doc/lispref/display.texi (Glyphless Chars): Document more variation selectors. Copyright-paperwork-exempt: yes diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index ace67fbedb..96079dc106 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -8596,9 +8596,9 @@ Characters of Unicode General Category [Cf], such as U+200E images, such as U+00AD @sc{soft hyphen}. @item variation-selectors -Unicode VS-1 through VS-16 (U+FE00 through U+FE0F), which are used to -select between different glyphs for the same codepoints (typically -emojis). +Unicode VS-1 through VS-256 (U+FE00 through U+FE0F and U+E0100 through +U+E01EF), which are used to select between different glyphs for the same +codepoints (typically emojis). @item no-font Characters for which there is no suitable font, or which cannot be diff --git a/lisp/international/characters.el b/lisp/international/characters.el index ca28222c81..d6e83c81e7 100644 --- a/lisp/international/characters.el +++ b/lisp/international/characters.el @@ -1525,6 +1525,17 @@ Setup `char-width-table' appropriate for non-CJK language environment." (aset char-acronym-table (+ #xE0021 i) (format " %c TAG" (+ 33 i)))) (aset char-acronym-table #xE007F "->|TAG") ; CANCEL TAG +(dotimes (i 256) + (let* ((vs-number (1+ i)) + (codepoint (if (< i 16) + (+ #xfe00 i) + (+ #xe0100 i -16))) + (delimiter (cond ((<= vs-number 9) "0") + ((<= vs-number 99) "") + (t " ")))) + (aset char-acronym-table codepoint + (format "VS%s%s" delimiter vs-number)))) + ;; We can't use the \N{name} things here, because this file is used ;; too early in the build process. (defvar bidi-control-characters @@ -1574,7 +1585,9 @@ option `glyphless-char-display'." #x80 #x9F method)) ((eq target 'variation-selectors) (glyphless-set-char-table-range glyphless-char-display - #xFE00 #xFE0F method)) + #xFE00 #xFE0F method) + (glyphless-set-char-table-range glyphless-char-display + #xE0100 #xE01EF method)) ((or (eq target 'format-control) (eq target 'bidi-control)) (when unicode-category-table @@ -1647,10 +1660,10 @@ GROUP must be one of these symbols: that are relevant for bidirectional formatting control, like U+2069 (PDI) and U+202B (RLE). `variation-selectors': - Characters in the range U+FE00..U+FE0F, used for - selecting alternate glyph presentations, such as - Emoji vs Text presentation, of the preceding - character(s). + Characters in the range U+FE00..U+FE0F and + U+E0100..U+E01EF, used for selecting alternate glyph + presentations, such as Emoji vs Text presentation, of + the preceding character(s). `no-font': For GUI frames, characters for which no suitable font is found; for text-mode frames, characters that cannot be encoded by `terminal-coding-system'. commit 8854b321c2cf6132d7de43682c8ea26dd436c9d4 Author: Stefan Kangas Date: Thu Aug 11 17:28:30 2022 +0200 Make ad-version variable obsolete * lisp/emacs-lisp/advice.el (ad-version): Make obsolete in favor of emacs-version. It has not been bumped since 1994. diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el index 2a2bcca700..391743d715 100644 --- a/lisp/emacs-lisp/advice.el +++ b/lisp/emacs-lisp/advice.el @@ -1580,8 +1580,6 @@ :link '(custom-manual "(elisp)Advising Functions") :group 'lisp) -(defconst ad-version "2.14") - ;;;###autoload (defcustom ad-redefinition-action 'warn "Defines what to do with redefinitions during Advice de/activation. @@ -3250,6 +3248,9 @@ Use only in REAL emergencies." (message "Oops! Left over advised function %S" function) (ad-pop-advised-function function))) +(defconst ad-version "2.14") +(make-obsolete-variable 'ad-version 'emacs-version "29.1") + (provide 'advice) ;;; advice.el ends here commit 6568592015b489af619f66f8964e07dbf261de45 Author: Stefan Kangas Date: Thu Aug 11 17:19:45 2022 +0200 Make ebnf-version variable obsolete * lisp/progmodes/ebnf2ps.el (ebnf-version): Make obsolete. (ebnf-setup, ebnf-begin-file, ebnf-eps-finish-and-write): Don't use above obsolete variable. diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el index 0347160a0c..f369379777 100644 --- a/lisp/progmodes/ebnf2ps.el +++ b/lisp/progmodes/ebnf2ps.el @@ -4,7 +4,7 @@ ;; Author: Vinicius Jose Latorre ;; Keywords: wp, ebnf, PostScript -;; Version: 4.4 +;; Old-Version: 4.4 ;; URL: https://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre ;; This file is part of GNU Emacs. @@ -22,16 +22,6 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . -(defconst ebnf-version "4.4" - "ebnf2ps.el, v 4.4 <2007/02/12 vinicius> - -Vinicius's last change version. When reporting bugs, please also -report the version of Emacs, if any, that ebnf2ps was running with. - -Please send all bug fixes and enhancements to - Vinicius Jose Latorre .") - - ;;; Commentary: ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2452,8 +2442,6 @@ See also `ebnf-syntax-buffer'." "Return the current ebnf2ps setup." (format " -;;; ebnf2ps.el version %s - ;;; Emacs version %S \(setq ebnf-special-show-delimiter %S @@ -2522,7 +2510,6 @@ See also `ebnf-syntax-buffer'." ;;; ebnf2ps.el - end of settings " - ebnf-version emacs-version ebnf-special-show-delimiter (ps-print-quote ebnf-special-font) @@ -2955,7 +2942,7 @@ See section \"Actions in Comments\" in ebnf2ps documentation.") (defvar ebnf-eps-file-alist nil -"Alist associating file name with EPS header and footer. + "Alist associating file name with EPS header and footer. Each element has the following form: @@ -5239,11 +5226,7 @@ killed after process termination." (not (search-forward "& ebnf2ps v" (line-end-position) t)) - (progn - ;; adjust creator comment - (end-of-line) - ;; (backward-char) - (insert " & ebnf2ps v" ebnf-version) + (progn ;; insert ebnf settings & engine (goto-char (point-max)) (search-backward "\n%%EndProlog\n") @@ -5269,7 +5252,7 @@ killed after process termination." (format "%d %d" (1+ ebnf-eps-upper-x) (1+ ebnf-eps-upper-y)) "\n%%Title: " filename "\n%%CreationDate: " (format-time-string "%T %b %d %Y") - "\n%%Creator: " (user-full-name) " (using ebnf2ps v" ebnf-version ")" + "\n%%Creator: " (user-full-name) " (using GNU Emacs " emacs-version ")" "\n%%DocumentNeededResources: font " (or ebnf-fonts-required (setq ebnf-fonts-required @@ -6347,6 +6330,15 @@ killed after process termination." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defconst ebnf-version "4.4" + "ebnf2ps.el, v 4.4 <2007/02/12 vinicius> + +Vinicius's last change version. When reporting bugs, please also +report the version of Emacs, if any, that ebnf2ps was running with. + +Please send all bug fixes and enhancements to + bug-gnu-emacs@gnu.org and Vinicius Jose Latorre .") +(make-obsolete-variable 'ebnf-version 'emacs-version "29.1") (provide 'ebnf2ps) commit 687897203846c5a8aca4ffa1a76834d20e1fcc3b Author: Stefan Kangas Date: Thu Aug 11 17:10:52 2022 +0200 Make ps-print-version variable obsolete * lisp/ps-print.el (ps-print-version): Make obsolete. (ps-setup, ps-begin-file): * lisp/progmodes/ebnf2ps.el: * lisp/printing.el: (pr-help-message, pr-interface-help-message) (pr-create-interface): Don't use above obsolete variable. diff --git a/lisp/printing.el b/lisp/printing.el index 3e3baa301a..9f6b091023 100644 --- a/lisp/printing.el +++ b/lisp/printing.el @@ -1008,10 +1008,6 @@ (require 'lpr) (require 'ps-print) -(and (string< ps-print-version "6.6.4") - (error "`printing' requires `ps-print' package version 6.6.4 or later")) - - (defconst pr-cygwin-system (and lpr-windows-system (getenv "OSTYPE") (string-match "cygwin" (getenv "OSTYPE")))) @@ -3000,8 +2996,7 @@ Calls `pr-update-menus' to adjust menus." (defconst pr-help-message - (concat "ps-print.el version " ps-print-version - "\n\n + "\ Menu Layout ----------- @@ -3207,13 +3202,12 @@ VI. Customization: 23. Show current settings for `printing', `ps-print' or `lpr'. 24. Quick help for printing menu layout. -") +" "Printing help message.") (defconst pr-interface-help-message - (concat " ps-print.el version " ps-print-version - "\n\n + "\ The printing interface buffer has the same functionality as the printing menu. The major difference is that the states (like sending PostScript generated to a file, n-up printing, etc.) are set and saved between printing buffer @@ -3440,7 +3434,7 @@ The printing interface buffer has the following sections: Quick help for printing interface buffer and printing menu layout. You can also quit the printing interface buffer or kill all printing help buffer. -") +" "Printing buffer interface help message.") @@ -5587,8 +5581,6 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order." (switch-to-buffer (get-buffer-create pr-buffer-name)) ;; header - (let ((versions (concat "ps-print v" ps-print-version))) - (widget-insert (make-string (- 79 (length versions)) ?\ ) versions)) (pr-insert-italic "\nCurrent Directory : " 1) (pr-insert-italic default-directory) diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el index e19726a7ea..0347160a0c 100644 --- a/lisp/progmodes/ebnf2ps.el +++ b/lisp/progmodes/ebnf2ps.el @@ -1154,9 +1154,6 @@ Please send all bug fixes and enhancements to (require 'ps-print) (eval-when-compile (require 'cl-lib)) -(and (string< ps-print-version "5.2.3") - (error "`ebnf2ps' requires `ps-print' package version 5.2.3 or later")) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; User Variables: diff --git a/lisp/ps-print.el b/lisp/ps-print.el index dad4c8ffba..c7d94b129b 100644 --- a/lisp/ps-print.el +++ b/lisp/ps-print.el @@ -8,21 +8,9 @@ ;; Kenichi Handa (multi-byte characters) ;; Maintainer: Vinicius Jose Latorre ;; Keywords: wp, print, PostScript -;; Version: 7.3.5 +;; Old-Version: 7.3.5 ;; URL: https://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre -(eval-when-compile (require 'cl-lib)) - -(defconst ps-print-version "7.3.5" - "ps-print.el, v 7.3.5 <2009/12/23 vinicius> - -Vinicius's last change version -- this file may have been edited as part of -Emacs without changes to the version number. When reporting bugs, please also -report the version of Emacs, if any, that ps-print was distributed with. - -Please send all bug fixes and enhancements to - bug-gnu-emacs@gnu.org and Vinicius Jose Latorre .") - ;; This file is part of GNU Emacs. ;; GNU Emacs is free software: you can redistribute it and/or modify @@ -1451,6 +1439,7 @@ Please send all bug fixes and enhancements to ;;; Code: (require 'lpr) +(eval-when-compile (require 'cl-lib)) ;; autoloads for secondary file (require 'ps-print-loaddefs) @@ -3596,7 +3585,6 @@ The table depends on the current ps-print setup." (mapconcat #'ps-print-quote (list - (concat "\n;;; (Emacs) ps-print version " ps-print-version "\n") ";; internal vars" (ps-comment-string "emacs-version " emacs-version) (ps-comment-string "lpr-windows-system" lpr-windows-system) @@ -5347,7 +5335,7 @@ XSTART YSTART are the relative position for the first page in a sheet.") ps-adobe-tag "%%Title: " (buffer-name) ; Take job name from name of ; first buffer printed - "\n%%Creator: ps-print v" ps-print-version + "\n%%Creator: GNU Emacs " emacs-version "\n%%For: " (user-full-name) ;FIXME: may need encoding! "\n%%CreationDate: " (format-time-string "%T %b %d %Y") ;FIXME: encoding! "\n%%Orientation: " @@ -6548,6 +6536,17 @@ If FACE is not a valid face name, use default face." (unless noninteractive (add-hook 'kill-emacs-query-functions #'ps-kill-emacs-check)) +(defconst ps-print-version "7.3.5" + "ps-print.el, v 7.3.5 <2009/12/23 vinicius> + +Vinicius's last change version -- this file may have been edited as part of +Emacs without changes to the version number. When reporting bugs, please also +report the version of Emacs, if any, that ps-print was distributed with. + +Please send all bug fixes and enhancements to + bug-gnu-emacs@gnu.org and Vinicius Jose Latorre .") +(make-obsolete-variable 'ps-print-version 'emacs-version "29.1") + (define-obsolete-function-alias 'ps-print-ensure-fontified #'font-lock-ensure "29.1") (provide 'ps-print) commit d5c3b602b93cb4ae3045117d41b9a084951f726a Author: Eli Zaretskii Date: Thu Aug 11 16:34:39 2022 +0300 ; * lisp/printing.el (pr-version): Avoid byte-compiler warning. diff --git a/lisp/printing.el b/lisp/printing.el index 4006c9c8f0..3e3baa301a 100644 --- a/lisp/printing.el +++ b/lisp/printing.el @@ -6206,7 +6206,7 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order." "printing.el, v 6.9.3 <2007/12/09 vinicius> Please send all bug fixes and enhancements to - bug-gnu-emacs@gnu.org and Vinicius Jose Latorre ") + bug-gnu-emacs@gnu.org and Vinicius Jose Latorre ") (make-obsolete-variable 'pr-version 'emacs-version "29.1") (provide 'printing) commit 686296b512cb43d031c8c48196a3d110492fcf08 Author: Stefan Kangas Date: Thu Aug 11 15:21:08 2022 +0200 Make pr-version variable obsolete * lisp/printing.el (pr-version): Make obsolete. (pr-help-message, pr-interface-help-message, pr-setup) (pr-create-interface): Don't use above obsolete variable. diff --git a/lisp/printing.el b/lisp/printing.el index 83c9ffc9cb..4006c9c8f0 100644 --- a/lisp/printing.el +++ b/lisp/printing.el @@ -4,16 +4,9 @@ ;; Author: Vinicius Jose Latorre ;; Keywords: wp, print, PostScript -;; Version: 6.9.3 +;; Old-Version: 6.9.3 ;; URL: https://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre -(defconst pr-version "6.9.3" - "printing.el, v 6.9.3 <2007/12/09 vinicius> - -Please send all bug fixes and enhancements to - bug-gnu-emacs@gnu.org and Vinicius Jose Latorre -") - ;; This file is part of GNU Emacs. ;; GNU Emacs is free software: you can redistribute it and/or modify @@ -3007,8 +3000,7 @@ Calls `pr-update-menus' to adjust menus." (defconst pr-help-message - (concat "printing.el version " pr-version - " ps-print.el version " ps-print-version + (concat "ps-print.el version " ps-print-version "\n\n Menu Layout ----------- @@ -3220,8 +3212,7 @@ VI. Customization: (defconst pr-interface-help-message - (concat "printing.el version " pr-version - " ps-print.el version " ps-print-version + (concat " ps-print.el version " ps-print-version "\n\n The printing interface buffer has the same functionality as the printing menu. The major difference is that the states (like sending PostScript generated to a @@ -4402,7 +4393,6 @@ Or choose the menu option Printing/Show Settings/printing." (mapconcat #'ps-print-quote (list - (concat "\n;;; printing.el version " pr-version "\n") ";; internal vars" (ps-comment-string "emacs-version " emacs-version) (ps-comment-string "pr-txt-command " pr-txt-command) @@ -5597,8 +5587,7 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order." (switch-to-buffer (get-buffer-create pr-buffer-name)) ;; header - (let ((versions (concat "printing v" pr-version - " ps-print v" ps-print-version))) + (let ((versions (concat "ps-print v" ps-print-version))) (widget-insert (make-string (- 79 (length versions)) ?\ ) versions)) (pr-insert-italic "\nCurrent Directory : " 1) (pr-insert-italic default-directory) @@ -6213,6 +6202,12 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defconst pr-version "6.9.3" + "printing.el, v 6.9.3 <2007/12/09 vinicius> + +Please send all bug fixes and enhancements to + bug-gnu-emacs@gnu.org and Vinicius Jose Latorre ") +(make-obsolete-variable 'pr-version 'emacs-version "29.1") (provide 'printing) commit 9419bc904d8c326e7e15fe9994e147383c28c5ba (refs/remotes/origin/emacs-28) Author: Stefan Kangas Date: Thu Aug 11 15:16:31 2022 +0200 ; * lisp/printing.el: Delete outdated download instructions. diff --git a/lisp/printing.el b/lisp/printing.el index b9bc3581c4..b5f3152268 100644 --- a/lisp/printing.el +++ b/lisp/printing.el @@ -63,10 +63,6 @@ Please send all bug fixes and enhancements to ;; spool and to despool PostScript buffer. So, `printing' provides an ;; interface to ps-print package and it also provides some extra stuff. ;; -;; To download the latest ps-print package see -;; `https://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage'. -;; Please, see README file for ps-print installation instructions. -;; ;; `printing' was inspired by: ;; ;; print-nt.el Frederic Corne @@ -942,11 +938,6 @@ Please send all bug fixes and enhancements to ;; ;; Below are some URL where you can find good utilities. ;; -;; * For `printing' package: -;; -;; printing `https://www.emacswiki.org/cgi-bin/emacs/download/printing.el' -;; ps-print `https://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage' -;; ;; * For GNU or Unix system: ;; ;; gs, gv `https://www.gnu.org/software/ghostscript/ghostscript.html' commit 31af0f4eb73c42b234b03f484a8fed9893b644d6 Author: Stefan Kangas Date: Thu Aug 11 15:03:29 2022 +0200 Don't list Emacs as requirement for built-in package * doc/misc/htmlfontify.texi (Requirements): Don't list Emacs as requirement for built-in package. diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi index 71b594b108..89fd3f8fbe 100644 --- a/doc/misc/htmlfontify.texi +++ b/doc/misc/htmlfontify.texi @@ -10,8 +10,7 @@ This manual documents Htmlfontify, a source code -> crosslinked + formatted + syntax colorized html transformer. -Copyright @copyright{} 2002--2003, 2013--2022 Free Software Foundation, -Inc. +Copyright @copyright{} 2002--2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -1539,13 +1538,6 @@ Htmlfontify has a couple of external requirements: @itemize @bullet -@item -GNU Emacs 20.7+ or 21.1+ - -Other versions may work---these have been used successfully by the -author. If you intend to use Htmlfontify in batch mode, 21.1+ is -pretty much required. - @item A copy of etags (exuberant-ctags or GNU etags). Htmlfontify attempts to autodetect the version you have and customize itself accordingly, commit 89f51673792b13ae0d1b93d0bf8e35d452693c9c Author: Stefan Kangas Date: Thu Aug 11 14:32:18 2022 +0200 Don't show status message in Helper-describe-bindings * lisp/emacs-lisp/helper.el (Helper-describe-bindings): Don't show status message. diff --git a/lisp/emacs-lisp/helper.el b/lisp/emacs-lisp/helper.el index 654dbbc5fe..10bb297325 100644 --- a/lisp/emacs-lisp/helper.el +++ b/lisp/emacs-lisp/helper.el @@ -131,7 +131,6 @@ (defun Helper-describe-bindings () "Describe local key bindings of current mode." (interactive) - (message "Making binding list...") (save-window-excursion (describe-bindings)) (Helper-help-scroller)) commit f7438fc8597f5a3a06e44cd2361d3fdffdb0f07d Author: Ulf Jasper Date: Thu Aug 11 13:26:52 2022 +0200 newsticker: fix bug#57045 * lisp/net/newst-treeview.el (newsticker--treeview-list-items-with-age) (newsticker-treeview-update): Fix issues with changing sort order in virtual feed 'all' (Bug#57045). diff --git a/lisp/net/newst-treeview.el b/lisp/net/newst-treeview.el index 637f53e655..e98767ae7c 100644 --- a/lisp/net/newst-treeview.el +++ b/lisp/net/newst-treeview.el @@ -361,7 +361,8 @@ AGES is the list of ages that are to be shown." (mapc (lambda (feed) (let ((feed-name-symbol (intern (car feed)))) (mapc (lambda (item) - (when (memq (newsticker--age item) ages) + (when (or (memq 'all ages) + (memq (newsticker--age item) ages)) (newsticker--treeview-list-add-item item feed-name-symbol t))) (newsticker--treeview-list-sort-items @@ -1218,11 +1219,11 @@ Note: does not update the layout." (newsticker--treeview-list-update t) (newsticker--treeview-item-update) (newsticker--treeview-tree-update-tags) - (cond (newsticker--treeview-current-feed - (newsticker--treeview-list-items newsticker--treeview-current-feed)) - (newsticker--treeview-current-vfeed + (cond (newsticker--treeview-current-vfeed (newsticker--treeview-list-items-with-age - (intern newsticker--treeview-current-vfeed)))) + (intern newsticker--treeview-current-vfeed))) + (newsticker--treeview-current-feed + (newsticker--treeview-list-items newsticker--treeview-current-feed))) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-list-update-highlight) (let ((cur-feed (or newsticker--treeview-current-feed commit a2ecf73545bcab598de8c8996c5591d6ffa5d1fc Author: Stefan Kangas Date: Thu Aug 11 13:16:34 2022 +0200 ; * lisp/play/5x5.el (5x5-defvar-local): Improve obsoletion. diff --git a/lisp/play/5x5.el b/lisp/play/5x5.el index 8fe72ddf59..fb944f4d76 100644 --- a/lisp/play/5x5.el +++ b/lisp/play/5x5.el @@ -82,13 +82,6 @@ ;; Non-customize variables. -(defmacro 5x5-defvar-local (var value doc) - "Define VAR to VALUE with documentation DOC and make it buffer local." - (declare (obsolete defvar-local "28.1")) - `(progn - (defvar ,var ,value ,doc) - (make-variable-buffer-local (quote ,var)))) - (defvar-local 5x5-grid nil "5x5 grid contents.") @@ -930,14 +923,15 @@ lest." ;; Support functions -(define-obsolete-function-alias '5x5-xor 'xor "27.1") - (defun 5x5-y-or-n-p (prompt) "5x5 wrapper for `y-or-n-p' which respects the `5x5-hassle-me' setting." (if 5x5-hassle-me (y-or-n-p prompt) t)) +(define-obsolete-function-alias '5x5-xor #'xor "27.1") +(define-obsolete-function-alias '5x5-defvar-local #'defvar-local "28.1") + (provide '5x5) ;;; 5x5.el ends here commit e93a1a835e82cf8e86f84f6851e6524d0bab8697 Author: Stefan Kangas Date: Thu Aug 11 13:11:50 2022 +0200 * lisp/vc/emerge.el (emerge-show-file-name): Make obsolete. diff --git a/lisp/vc/emerge.el b/lisp/vc/emerge.el index 6ee20bf59b..de09be80e7 100644 --- a/lisp/vc/emerge.el +++ b/lisp/vc/emerge.el @@ -2960,6 +2960,7 @@ If some prefix of KEY has a non-prefix definition, it is redefined." If the name won't fit on one line, the minibuffer is expanded to hold it, and the command waits for a keystroke from the user. If the keystroke is SPC, it is ignored; if it is anything else, it is processed as a command." + (declare (obsolete nil "29.1")) (interactive) (let ((name (buffer-file-name))) (or name commit bce98395ce8ef44934ef07fabafe1fb9e40aa09d Author: Stefan Kangas Date: Thu Aug 11 13:07:24 2022 +0200 Make emerge-define-key-if-possible obsolete * lisp/vc/emerge.el (emerge-define-key-if-possible): Make unused function obsolete. diff --git a/lisp/vc/emerge.el b/lisp/vc/emerge.el index 422ed5c0a4..6ee20bf59b 100644 --- a/lisp/vc/emerge.el +++ b/lisp/vc/emerge.el @@ -2942,6 +2942,7 @@ If some prefix of KEY has a non-prefix definition, it is redefined." ;; Define a key if it (or a prefix) is not already defined in the map. (defun emerge-define-key-if-possible (keymap key definition) + (declare (obsolete keymap-set "29.1")) ;; look up the present definition of the key (let ((present (lookup-key keymap key))) (if (integerp present) commit 4f18214fbea7ebb586e85e8b47e3dbe7a90d55b7 Author: Michael Albinus Date: Thu Aug 11 12:34:01 2022 +0200 * test/lisp/net/tramp-tests.el (tramp--test-utf8): Adapt test. diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index ad81d0c09e..4dcf671f51 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -7052,7 +7052,8 @@ This requires restrictions of file name syntax." "银河系漫游指南系列" "Автостопом по гала́ктике" ;; Use codepoints without a name. See Bug#31272. - "™›šbung" + ;; Works on some Android systems only. + (unless (tramp--test-adb-p) "™›šbung") ;; Use codepoints from Supplementary Multilingual Plane (U+10000 ;; to U+1FFFF). "🌈🍒👋") commit ae348b719e8f1c29c3ee6ed5d723326b3bc54883 Author: YAMAMOTO Mitsuharu Date: Thu Aug 11 18:16:24 2022 +0900 Fix wrong metrics for bitmap-only fonts with HarfBuzz 5 * src/ftcrfont.c (ftcrhbfont_begin_hb_font): Always use the standard position unit value on HarfBuzz 5 and later regardless of whether the font is bitmap-only or not. (Bug#57066) diff --git a/src/ftcrfont.c b/src/ftcrfont.c index 39ea068556..d5d3e440af 100644 --- a/src/ftcrfont.c +++ b/src/ftcrfont.c @@ -568,7 +568,11 @@ ftcrhbfont_begin_hb_font (struct font *font, double *position_unit) ftcrfont_info->ft_size = ft_face->size; hb_font_t *hb_font = fthbfont_begin_hb_font (font, position_unit); - if (ftcrfont_info->bitmap_position_unit) + /* HarfBuzz 5 correctly scales bitmap-only fonts without position + unit adjustment. + (https://github.com/harfbuzz/harfbuzz/issues/489) */ + if (!hb_version_atleast (5, 0, 0) + && ftcrfont_info->bitmap_position_unit) *position_unit = ftcrfont_info->bitmap_position_unit; return hb_font;