From 3c29fb705cfa908afee4a3fc084f8f4b88e43c4c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 7 Oct 2021 18:48:09 +0300 Subject: [PATCH 01/11] ; * src/Makefile.in (../native-lisp): Make the long recipe silent. --- src/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile.in b/src/Makefile.in index b8d0e7b54ce..0326b4a8f22 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -804,7 +804,7 @@ elnlisp := $(addprefix ${lispsource}/,${elnlisp}) $(lisp:.elc=.eln) THEFILE=$< $ Date: Thu, 7 Oct 2021 18:53:25 +0300 Subject: [PATCH 02/11] Include the refcards in the release tarball * make-dist (possibly_non_vc_files): Include *.pdf files, to include the produced refcards in the tarball. This was lost when 'make-dist' was rewritten for Emacs 27. --- make-dist | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/make-dist b/make-dist index 7074bb801be..eb040150d9d 100755 --- a/make-dist +++ b/make-dist @@ -366,9 +366,9 @@ possibly_non_vc_files=" src/config.in "$( find admin doc etc lisp \ - \( -name '*.el' -o -name '*.elc' -o -name '*.map' -o -name '*.stamp' \ - -o -name '*.texi' -o -name '*.tex' -o -name '*.txt' \) \ - ! -name 'site-init*' ! -name 'site-load*' ! -name 'default*' + \( -name '*.el' -o -name '*.elc' -o -name '*.map' -o -name '*.stamp' \ + -o -name '*.texi' -o -name '*.tex' -o -name '*.txt' -o -name '*.pdf' \) \ + ! -name 'site-init*' ! -name 'site-load*' ! -name 'default*' ) || exit if [ $with_info = yes ]; then From 7ae70054aa208da5d281ad8f6887d818d98f02d6 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 7 Oct 2021 19:27:49 +0300 Subject: [PATCH 03/11] ; * src/composite.h (LGSTRING_FONT): Add comment about its role. --- src/composite.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/composite.h b/src/composite.h index 67e87201bf2..945f2612915 100644 --- a/src/composite.h +++ b/src/composite.h @@ -254,6 +254,10 @@ composition_valid_p (ptrdiff_t start, ptrdiff_t end, Lisp_Object prop) #define LGSTRING_HEADER(lgs) AREF (lgs, 0) #define LGSTRING_SET_HEADER(lgs, header) ASET (lgs, 0, header) +/* LGSTRING_FONT retrieves the font used for LGSTRING, if we are going + to display it on a GUI frame. On text-mode frames, that slot + stores the coding-system that should be used to write output to the + frame's terminal. */ #define LGSTRING_FONT(lgs) AREF (LGSTRING_HEADER (lgs), 0) #define LGSTRING_CHAR(lgs, i) AREF (LGSTRING_HEADER (lgs), (i) + 1) #define LGSTRING_CHAR_LEN(lgs) (ASIZE (LGSTRING_HEADER (lgs)) - 1) From bb8ef1aa300a54dba1b18215247258143c5a3693 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Thu, 7 Oct 2021 21:01:04 +0300 Subject: [PATCH 04/11] * lisp/tab-bar.el (tab-detach, tab-window-detach): New aliases. (tab-bar-mouse-context-menu, tab-bar-duplicate-tab): Use word "clone" in help/doc string. --- lisp/tab-bar.el | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el index b08b7442677..ccecdbc0440 100644 --- a/lisp/tab-bar.el +++ b/lisp/tab-bar.el @@ -311,7 +311,7 @@ that closes only when clicked on the close button." `(menu-item "Duplicate" (lambda () (interactive) (tab-bar-duplicate-tab nil ,tab-number)) - :help "Duplicate the tab")) + :help "Clone the tab")) (define-key-after menu [detach-tab] `(menu-item "Detach" (lambda () (interactive) (tab-bar-detach-tab @@ -1350,7 +1350,7 @@ If FROM-NUMBER is a tab number, a new tab is created from that tab." (tab-bar-new-tab-to))) (defun tab-bar-duplicate-tab (&optional arg from-number) - "Duplicate the current tab to ARG positions to the right. + "Clone the current tab to ARG positions to the right. ARG and FROM-NUMBER have the same meaning as in `tab-bar-new-tab'." (interactive "P") (let ((tab-bar-new-tab-choice nil) @@ -2243,24 +2243,26 @@ When `switch-to-buffer-obey-display-actions' is non-nil, ;;; Short aliases and keybindings -(defalias 'tab-new 'tab-bar-new-tab) -(defalias 'tab-new-to 'tab-bar-new-tab-to) -(defalias 'tab-duplicate 'tab-bar-duplicate-tab) -(defalias 'tab-close 'tab-bar-close-tab) -(defalias 'tab-close-other 'tab-bar-close-other-tabs) -(defalias 'tab-close-group 'tab-bar-close-group-tabs) -(defalias 'tab-undo 'tab-bar-undo-close-tab) -(defalias 'tab-select 'tab-bar-select-tab) -(defalias 'tab-switch 'tab-bar-switch-to-tab) -(defalias 'tab-next 'tab-bar-switch-to-next-tab) -(defalias 'tab-previous 'tab-bar-switch-to-prev-tab) -(defalias 'tab-last 'tab-bar-switch-to-last-tab) -(defalias 'tab-recent 'tab-bar-switch-to-recent-tab) -(defalias 'tab-move 'tab-bar-move-tab) -(defalias 'tab-move-to 'tab-bar-move-tab-to) -(defalias 'tab-rename 'tab-bar-rename-tab) -(defalias 'tab-group 'tab-bar-change-tab-group) -(defalias 'tab-list 'tab-switcher) +(defalias 'tab-new 'tab-bar-new-tab) +(defalias 'tab-new-to 'tab-bar-new-tab-to) +(defalias 'tab-duplicate 'tab-bar-duplicate-tab) +(defalias 'tab-detach 'tab-bar-detach-tab) +(defalias 'tab-window-detach 'tab-bar-move-window-to-tab) +(defalias 'tab-close 'tab-bar-close-tab) +(defalias 'tab-close-other 'tab-bar-close-other-tabs) +(defalias 'tab-close-group 'tab-bar-close-group-tabs) +(defalias 'tab-undo 'tab-bar-undo-close-tab) +(defalias 'tab-select 'tab-bar-select-tab) +(defalias 'tab-switch 'tab-bar-switch-to-tab) +(defalias 'tab-next 'tab-bar-switch-to-next-tab) +(defalias 'tab-previous 'tab-bar-switch-to-prev-tab) +(defalias 'tab-last 'tab-bar-switch-to-last-tab) +(defalias 'tab-recent 'tab-bar-switch-to-recent-tab) +(defalias 'tab-move 'tab-bar-move-tab) +(defalias 'tab-move-to 'tab-bar-move-tab-to) +(defalias 'tab-rename 'tab-bar-rename-tab) +(defalias 'tab-group 'tab-bar-change-tab-group) +(defalias 'tab-list 'tab-switcher) (define-key tab-prefix-map "n" 'tab-duplicate) (define-key tab-prefix-map "N" 'tab-new-to) From 89d64fca75557b3006532412d8c84885d5a6a873 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 7 Oct 2021 13:09:19 -0700 Subject: [PATCH 05/11] Pacify GCC 10.3 -Wmaybe-uninitialized Problem reported by Basil L. Contovounesios (Bug#51075). * src/term.c (encode_terminal_code): Add an UNINIT to pacify GCC 10 bug. --- src/term.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/term.c b/src/term.c index 0858f816851..6f0b827cfc8 100644 --- a/src/term.c +++ b/src/term.c @@ -550,7 +550,7 @@ encode_terminal_code (struct glyph *src, int src_len, if (src->type == COMPOSITE_GLYPH) { struct composition *cmp; - Lisp_Object gstring; + Lisp_Object gstring UNINIT; int i; nbytes = buf - encode_terminal_src; From 9d8202b45e6beae31f2952d653c0ba7b788c4975 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Fri, 8 Oct 2021 05:23:19 +0300 Subject: [PATCH 06/11] Add Emacs 27 compatibility hack * lisp/progmodes/xref.el: Add Emacs 27 compatibility hack, for the standalone version of this package. --- lisp/progmodes/xref.el | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 1feb6ef9153..d6e20c54166 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -74,6 +74,20 @@ (require 'ring) (require 'project) +(eval-and-compile + (when (version< emacs-version "28") + ;; etags.el in Emacs 26 and 27 uses EIEIO, and its location type + ;; inherits from `xref-location'. + (require 'eieio) + + ;; Suppressing byte-compilation warnings (in Emacs 28+) about + ;; `defclass' not being defined, which happens because the + ;; `require' statement above is not evaluated either. + ;; FIXME: Use `with-suppressed-warnings' when we stop supporting Emacs 26. + (with-no-warnings + (defclass xref-location () () + :documentation "(Obsolete) location represents a position in a file or buffer.")))) + (defgroup xref nil "Cross-referencing commands." :version "25.1" :group 'tools) From 65de510c1663994dcbdec219ab1889d0f71a7be6 Mon Sep 17 00:00:00 2001 From: Stephen Gildea Date: Thu, 7 Oct 2021 20:10:09 -0700 Subject: [PATCH 07/11] ; Fix 'restore-buffer-modified-p' doc string typo * src/buffer.c (restore-buffer-modified-p): Fix typo in doc string: "and" for "or" regarding lock/unlock. Note that 'set-buffer-modified-p' doc string already uses the correct "or". --- src/buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/buffer.c b/src/buffer.c index 4eb7ab6d6ba..f405bcb5834 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1434,7 +1434,7 @@ and `buffer-file-truename' are non-nil. */) DEFUN ("restore-buffer-modified-p", Frestore_buffer_modified_p, Srestore_buffer_modified_p, 1, 1, 0, doc: /* Like `set-buffer-modified-p', but doesn't redisplay buffer's mode line. -This function also locks and unlocks the file visited by the buffer, +This function also locks or unlocks the file visited by the buffer, if both `buffer-file-truename' and `buffer-file-name' are non-nil. It is not ensured that mode lines will be updated to show the modified From 525602d68200ae79d853e8f2bf525b3d966dd819 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 8 Oct 2021 10:27:03 +0300 Subject: [PATCH 08/11] ; * etc/TODO (display): Add entry about Default_Ignorables. --- etc/TODO | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/etc/TODO b/etc/TODO index ffc5ef304b1..cd06b1ea26e 100644 --- a/etc/TODO +++ b/etc/TODO @@ -444,6 +444,25 @@ consistency checks that make sure the new code computes the same results as the old code. And once that works well, we can remove the old code and old fields. +** Implement Unicode-compliant display of "default-ignorable" characters +See the "Characters Ignored for Display" section of paragraph 5.21 in +the Unicode Standard for the details. + +The implementation would import the data from Unicode UCD file +DerivedCoreProperties.txt, and provide a minor mode that arranges for +the characters with the Default_Ignorable_Code_Point (DI) property to +be hidden on display. One way of implementing that could be via +glyphless-char-display-control; that one is global, but maybe there's +a way of making it buffer-local. Alternatively, this could be +implemented in C in the display engine. + +An additional aspect of this is the display of U+00AD SOFT HYPHEN as +invisible except at line boundaries. Note that this would need to +support hard (physical) newlines in the buffer as well as soft +wrapping of long lines under 'visual-line-mode'. The algorithm for +selecting the wrap point may also need be changed to break at the soft +hyphen. + ** FFI (foreign function interface) See eg https://lists.gnu.org/r/emacs-devel/2013-10/msg00246.html From 6e83a4100a7c4d528a1b88dab49327102f833c4a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 8 Oct 2021 10:31:17 +0300 Subject: [PATCH 09/11] ; * admin/make-tarball.txt: Should configure --with-native-compilation. --- admin/make-tarball.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index ae007d76b03..22276080c5d 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -42,6 +42,12 @@ General steps (for each step, check for possible errors): because some of the commands below run Make, so they need Makefiles to be present. + For Emacs 28, and as long as --with-native-compilation is not the + default, the tree needs to be configured with native-compilation + enabled, to ensure all the pertinent *.elc files will end up in + the tarball. Otherwise, the *.eln files might not build correctly + on the user's system. + 2. Regenerate the etc/AUTHORS file: M-: (require 'authors) RET M-x authors RET From 915e044d60dfde0953327cb9cbfe8bb0f69e5dd4 Mon Sep 17 00:00:00 2001 From: Arash Esbati Date: Fri, 8 Oct 2021 11:12:30 +0200 Subject: [PATCH 10/11] Use the correct label in the warning * lisp/textmodes/reftex-toc.el (reftex-toc-rename-label): Add missing space in the prompt. Use the new user defined label in the warning (bug#36235). --- lisp/textmodes/reftex-toc.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el index 7ca2fb827e8..26ae8338283 100644 --- a/lisp/textmodes/reftex-toc.el +++ b/lisp/textmodes/reftex-toc.el @@ -856,10 +856,10 @@ label prefix determines the wording of a reference." (label (car toc)) newlabel) (if (not (stringp label)) (error "This is not a label entry")) - (setq newlabel (read-string (format "Rename label \"%s\" to:" label))) + (setq newlabel (read-string (format "Rename label \"%s\" to :" label))) (if (assoc newlabel (symbol-value reftex-docstruct-symbol)) (if (not (y-or-n-p - (format-message "Label `%s' exists. Use anyway? " label))) + (format-message "Label `%s' exists. Use anyway? " newlabel))) (error "Abort"))) (save-excursion (save-window-excursion From af01b674cec1ea7e9dd801f40c1ca8221f5cc8da Mon Sep 17 00:00:00 2001 From: Tassilo Horn Date: Fri, 8 Oct 2021 13:03:45 +0200 Subject: [PATCH 11/11] ; Fix spacing in previous commit --- lisp/textmodes/reftex-toc.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el index 26ae8338283..b5f53ba86e7 100644 --- a/lisp/textmodes/reftex-toc.el +++ b/lisp/textmodes/reftex-toc.el @@ -856,7 +856,7 @@ label prefix determines the wording of a reference." (label (car toc)) newlabel) (if (not (stringp label)) (error "This is not a label entry")) - (setq newlabel (read-string (format "Rename label \"%s\" to :" label))) + (setq newlabel (read-string (format "Rename label \"%s\" to: " label))) (if (assoc newlabel (symbol-value reftex-docstruct-symbol)) (if (not (y-or-n-p (format-message "Label `%s' exists. Use anyway? " newlabel)))