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 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 diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index f4716fe9a64..0d51019f735 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) 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) diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el index 7ca2fb827e8..b5f53ba86e7 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 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 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=$< $type == COMPOSITE_GLYPH) { struct composition *cmp; - Lisp_Object gstring; + Lisp_Object gstring UNINIT; int i; nbytes = buf - encode_terminal_src;