Merge from origin/emacs-28
af01b674ce
(origin/emacs-28) ; Fix spacing in previous commit915e044d60
Use the correct label in the warning6e83a4100a
; * admin/make-tarball.txt: Should configure --with-native...525602d682
; * etc/TODO (display): Add entry about Default_Ignorables.65de510c16
; Fix 'restore-buffer-modified-p' doc string typo9d8202b45e
Add Emacs 27 compatibility hack89d64fca75
Pacify GCC 10.3 -Wmaybe-uninitializedbb8ef1aa30
* lisp/tab-bar.el (tab-detach, tab-window-detach): New ali...7ae70054aa
; * src/composite.h (LGSTRING_FONT): Add comment about its...1af00e67d6
Include the refcards in the release tarball3c29fb705c
; * src/Makefile.in (../native-lisp): Make the long recipe...
This commit is contained in:
commit
2bc37c14db
10 changed files with 73 additions and 28 deletions
|
@ -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
|
||||
|
|
19
etc/TODO
19
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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -804,7 +804,7 @@ elnlisp := $(addprefix ${lispsource}/,${elnlisp}) $(lisp:.elc=.eln)
|
|||
THEFILE=$< $<n
|
||||
|
||||
../native-lisp: | $(pdmp)
|
||||
if test ! -d $@; then \
|
||||
@if test ! -d $@; then \
|
||||
mkdir $@ && $(MAKE) $(AM_V_NO_PD) $(elnlisp); \
|
||||
if test $(SYSTEM_TYPE) = cygwin; then \
|
||||
find $@ -name '*.eln' | rebase -v -O -T -; \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue