Merge from origin/emacs-29

305246d972 Add emoji-zoom-reset
470d269ec1 Make emoji-zoom-{increase,decrease} set text properties c...
63d4a86f8d Fix transforming sliced images
5e1953a8f8 ; * etc/NEWS: Minor copyedits of entry for 'keymap-*' fun...
6b9f9df945 ; Improve documentation of 'declare-function'
81d1f46d0f ; Avoid compiler warning in eglot.el.
38cdfcb212 ; Fix description of new 'keymap-*' functions
257090b872 Adapt EMBA scripts.
90c07d3fdd Another terminology fix in ELisp reference manual
a832bc7090 Correct terminology in Elisp Reference Manual
db308233cb Comment out GNUSTEP jobs on EMBA (again)
8c1b102243 ; * lisp/image.el (put-image): Doc fix.
eda88c63ad ; * doc/emacs/trouble.texi (Checklist): Minor grammar fix.
728bc09cf3 Fix regexp string escaping mistake in vhdl-mode.el (bug#6...
479626dbac Update to Org 9.6.3-2-gf2949d
5a1c9aace7 ; Add a bit more docstring to tsx-ts-mode (bug#62429)
86cf9fd932 Eglot: don't watch directories that don't exist
82d0b6c64e ; * lisp/subr.el (use-dialog-box-p): Fix last change.
3619663f98 Preserve peer information for web page in eww-readable
cb8d6ab648 * lisp/subr.el (use-dialog-box-p): Fix conditions for GUI...
fb2c440920 ; * lisp/progmodes/c-ts-mode.el (c++-ts-mode): Add some n...

# Conflicts:
#	etc/NEWS
This commit is contained in:
Eli Zaretskii 2023-04-06 14:38:20 -04:00
commit 2d1a96e878
20 changed files with 172 additions and 112 deletions

View file

@ -1075,7 +1075,7 @@ report. (The backtrace is more detailed if you load the relevant Lisp
@file{*.el} source files before triggering the error, so do that if
you know how to find and load those files.)
To debug the error, we suggest to use Edebug. @xref{Edebug,, Edebug,
To debug the error, we suggest using Edebug. @xref{Edebug,, Edebug,
elisp, the Emacs Lisp Reference Manual}, for information on debugging
Emacs Lisp programs with the Edebug package.

View file

@ -1960,8 +1960,8 @@ end-position of a drag event, this position list may represent a
location outside the boundaries of the initially selected frame, in
which case the list contains that frame in place of a window.
The special form @code{track-mouse} enables generation of motion
events within its body. Outside of @code{track-mouse} forms, Emacs
The @code{track-mouse} macro enables generation of motion
events within its body. Outside of @code{track-mouse} body, Emacs
does not generate events for mere motion of the mouse, and these
events do not appear. @xref{Mouse Tracking}.
@ -2443,7 +2443,7 @@ into another window. That produces a pair of events like these:
The frame with input focus might not take up the entire screen, and
the user might move the mouse outside the scope of the frame. Inside
the @code{track-mouse} special form, that produces an event like this:
the @code{track-mouse} macro, that produces an event like this:
@smallexample
(mouse-movement (#<frame *ielm* 0x102849a30> nil (563 . 205) 532301936))

View file

@ -3577,7 +3577,7 @@ the mouse position list will be @code{nil} if the value is
@code{drag-source}. This is useful to determine if a frame is not
directly visible underneath the mouse pointer.
The @code{track-mouse} form causes Emacs to generate mouse motion
The @code{track-mouse} macro causes Emacs to generate mouse motion
events by binding the variable @code{track-mouse} to a
non-@code{nil} value. If that variable has the special value
@code{dragging}, it additionally instructs the display engine to

View file

@ -593,8 +593,8 @@ symbol a function definition, its function cell is said to be
In practice, nearly all functions have names, and are referred to by
their names. You can create a named Lisp function by defining a
lambda expression and putting it in a function cell (@pxref{Function
Cells}). However, it is more common to use the @code{defun} special
form, described in the next section.
Cells}). However, it is more common to use the @code{defun} macro,
described in the next section.
@ifnottex
@xref{Defining Functions}.
@end ifnottex
@ -2693,13 +2693,14 @@ byte compiler can check that the calls match the declaration.
Tell the byte compiler to assume that @var{function} is defined in the
file @var{file}. The optional third argument @var{arglist} is either
@code{t}, meaning the argument list is unspecified, or a list of
formal parameters in the same style as @code{defun}. An omitted
@var{arglist} defaults to @code{t}, not @code{nil}; this is atypical
behavior for omitted arguments, and it means that to supply a fourth
but not third argument one must specify @code{t} for the third-argument
placeholder instead of the usual @code{nil}. The optional fourth
argument @var{fileonly} non-@code{nil} means check only that
@var{file} exists, not that it actually defines @var{function}.
formal parameters in the same style as @code{defun} (including the
parentheses). An omitted @var{arglist} defaults to @code{t}, not
@code{nil}; this is atypical behavior for omitted arguments, and it
means that to supply a fourth but not third argument one must specify
@code{t} for the third-argument placeholder instead of the usual
@code{nil}. The optional fourth argument @var{fileonly}
non-@code{nil} means check only that @var{file} exists, not that it
actually defines @var{function}.
@end defmac
@findex check-declare-file

View file

@ -768,8 +768,8 @@ prefix definition, and then by those from the global map.
In the following example, we make @kbd{C-p} a prefix key in the local
keymap, in such a way that @kbd{C-p} is identical to @kbd{C-x}. Then
the binding for @kbd{C-p C-f} is the function @code{find-file}, just
like @kbd{C-x C-f}. The key sequence @kbd{C-p 6} is not found in any
active keymap.
like @kbd{C-x C-f}. By contrast, the key sequence @kbd{C-p 9} is not
found in any active keymap.
@example
@group
@ -778,15 +778,14 @@ active keymap.
@end group
@group
(keymap-local-set "C-p" ctl-x-map)
@result{} nil
@result{} (keymap #^[nil nil keymap @dots{}
@end group
@group
(keymap-binding "C-p C-f")
(keymap-lookup nil "C-p C-f")
@result{} find-file
@end group
@group
(keymap-binding "C-p 6")
(keymap-lookup nil "C-p 9")
@result{} nil
@end group
@end example
@ -883,7 +882,7 @@ Normally it ignores @code{overriding-local-map} and
then it pays attention to them. @var{position} can optionally be either
an event position as returned by @code{event-start} or a buffer
position, and may change the keymaps as described for
@code{keymap-binding}.
@code{keymap-lookup} (@pxref{Functions for Key Lookup, keymap-lookup}).
@end defun
@node Searching Keymaps
@ -1308,7 +1307,11 @@ the second example.
@end group
@end example
The @var{keymap} argument can also be a list of keymaps.
The @var{keymap} argument can be @code{nil}, meaning to look up
@var{key} in the current keymaps (as returned by
@code{current-active-maps}, @pxref{Active Keymaps}); or it can be a
keymap or a list of keymaps, meaning to look up @var{key} only in the
specified keymaps.
Unlike @code{read-key-sequence}, this function does not modify the
specified events in ways that discard information (@pxref{Key Sequence

View file

@ -1021,6 +1021,11 @@ works for non-Emoji characters.)
These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They
can be used on any character, but are mainly useful for Emoji.
---
*** New command 'emoji-zoom-reset'.
This is bound to 'C-x 8 e 0', and undoes any size changes performed by
'emoji-zoom-increase' and 'emoji-zoom-decrease'.
---
*** New input method 'emoji'.
This allows you to enter Emoji using short strings, eg ':face_palm:'
@ -4323,9 +4328,11 @@ that binding is ignored by 'where-is-internal'.
+++
*** New functions for defining and manipulating keystrokes.
These all take the syntax defined by 'key-valid-p'. None of the older
functions have been deprecated or altered, but they are now
de-emphasized in the documentation.
These all take the syntax defined by 'key-valid-p', which is basically
the same syntax as the one accepted by the 'kbd' macro. None of the
older functions have been deprecated or altered, but they are now
de-emphasized in the documentation, and we encourage Lisp programs to
switch to these new functions.
+++
*** Use 'keymap-set' instead of 'define-key'.

View file

@ -1,5 +1,5 @@
% Reference Card for Org Mode
\def\orgversionnumber{9.6.2}
\def\orgversionnumber{9.6.3}
\def\versionyear{2023} % latest update
\input emacsver.tex

View file

@ -595,8 +595,8 @@ If nil, use the `image-scaling-factor' variable."
IMAGE must be an image created with `create-image' or `defimage'.
IMAGE is displayed by putting an overlay into the current buffer with a
`before-string' STRING that has a `display' property whose value is the
image. STRING is defaulted if you omit it.
The overlay created will have the `put-image' property set to t.
image. STRING defaults to \"x\" if it's nil or omitted.
The overlay created by this function has the `put-image' property set to t.
POS may be an integer or marker.
AREA is where to display the image. AREA nil or omitted means
display it in the text area, a value of `left-margin' means
@ -1158,9 +1158,11 @@ has no effect."
"r" #'image-rotate)
(defun image-increase-size (&optional n position)
"Increase the image size by a factor of N.
If N is 3, then the image size will be increased by 30%. The
default is 20%."
"Increase the image size at POSITION by a factor specified by N.
If N is 3, then the image size will be increased by 30%. More
generally, the image size is multiplied by 1 plus N divided by 10.
N defaults to 2, which increases the image size by 20%.
POSITION can be a buffer position or a marker, and defaults to point."
(interactive "P")
(image--delayed-change-size (if n
(1+ (/ (prefix-numeric-value n) 10.0))
@ -1179,9 +1181,11 @@ default is 20%."
(run-with-idle-timer 0.3 nil #'image--change-size size position))
(defun image-decrease-size (&optional n position)
"Decrease the image size by a factor of N.
If N is 3, then the image size will be decreased by 30%. The
default is 20%."
"Decrease the image size at POSITION by a factor specified by N.
If N is 3, then the image size will be decreased by 30%. More
generally, the image size is multiplied by 1 minus N divided by 10.
N defaults to 2, which decreases the image size by 20%.
POSITION can be a buffer position or a marker, and defaults to point."
(interactive "P")
(image--delayed-change-size (if n
(- 1 (/ (prefix-numeric-value n) 10.0))
@ -1191,7 +1195,9 @@ default is 20%."
"Use %k for further adjustments"))
(defun image-mouse-increase-size (&optional event)
"Increase the image size using the mouse."
"Increase the image size using the mouse-gesture EVENT.
This increases the size of the image at the position specified by
EVENT, if any, by the default factor used by `image-increase-size'."
(interactive "e")
(when (listp event)
(save-window-excursion
@ -1199,7 +1205,9 @@ default is 20%."
(image-increase-size nil (point-marker)))))
(defun image-mouse-decrease-size (&optional event)
"Decrease the image size using the mouse."
"Decrease the image size using the mouse-gesture EVENT.
This decreases the size of the image at the position specified by
EVENT, if any, by the default factor used by `image-decrease-size'."
(interactive "e")
(when (listp event)
(save-window-excursion
@ -1207,12 +1215,24 @@ default is 20%."
(image-decrease-size nil (point-marker)))))
(defun image--get-image (&optional position)
"Return the image at point."
(let ((image (get-char-property (or position (point)) 'display
(when (markerp position)
(marker-buffer position)))))
"Return the image at POSITION.
POSITION can be a buffer position or a marker, and defaults to point."
(let* ((image (get-char-property (or position (point)) 'display
(when (markerp position)
(marker-buffer position))))
(image-car (car-safe image))
(image
(cond ((eq image-car 'image)
image)
;; The value of the display property could be a sliced
;; image of the form ((slice ...) (image ...)).
;; FIXME: can we have more than 2 members in the list,
;; so that the (image ...) part is NOT the cadr?
((and (listp image) (consp image-car))
(cadr image))
(t nil))))
(unless (eq (car-safe image) 'image)
(error "No image under point"))
(error "No recognizable image under point"))
image))
;;;###autoload

View file

@ -684,30 +684,41 @@ We prefer the earliest unique letter."
(defvar-keymap emoji-zoom-map
"+" #'emoji-zoom-increase
"-" #'emoji-zoom-decrease)
"-" #'emoji-zoom-decrease
"0" #'emoji-zoom-reset)
;;;###autoload
(defun emoji-zoom-increase (&optional factor)
"Increase the size of the character under point.
FACTOR is the multiplication factor for the size."
(interactive)
(set-transient-map emoji-zoom-map t nil "Zoom with %k")
(let* ((factor (or factor 1.1))
(old (get-text-property (point) 'face))
(height (or (and (consp old)
(plist-get old :height))
1.0))
(inhibit-read-only t))
(with-silent-modifications
(if (consp old)
(add-text-properties
(point) (1+ (point))
(list 'face (plist-put (copy-sequence old) :height (* height factor))
'rear-nonsticky t))
(add-face-text-property (point) (1+ (point))
(list :height (* height factor)))
(put-text-property (point) (1+ (point))
'rear-nonsticky t)))))
(set-transient-map emoji-zoom-map t #'redisplay "Zoom with %k")
(unless (eobp)
(let* ((factor (or factor 1.1))
(old (get-text-property (point) 'face))
;; The text property is either a named face, or a plist
;; with :height, or a list starting with such a plist,
;; followed by one or more faces.
(newheight (* (or (and (consp old)
(or (plist-get (car old) :height)
(plist-get old :height)))
1.0)
factor))
(inhibit-read-only t))
(with-silent-modifications
(if (consp old)
(add-text-properties
(point) (1+ (point))
(list 'face
(if (eq (car old) :height)
(plist-put (copy-sequence old) :height newheight)
(cons (plist-put (car old) :height newheight)
(cdr old)))
'rear-nonsticky t))
(add-face-text-property (point) (1+ (point))
(list :height newheight))
(put-text-property (point) (1+ (point))
'rear-nonsticky t))))))
;;;###autoload
(defun emoji-zoom-decrease ()
@ -715,6 +726,19 @@ FACTOR is the multiplication factor for the size."
(interactive)
(emoji-zoom-increase 0.9))
;;;###autoload
(defun emoji-zoom-reset ()
"Reset the size of the character under point."
(interactive)
(with-silent-modifications
(let ((old (get-text-property (point) 'face)))
(when (and (consp old)
(remove-text-properties (point) (1+ (point)) '(rear-nonsticky nil)))
(if (eq (car old) :height)
(remove-text-properties (point) (1+ (point)) '(face nil))
(add-text-properties (point) (1+ (point)) (list 'face
(cdr old))))))))
(provide 'emoji)
;;; emoji.el ends here

View file

@ -3269,7 +3269,8 @@ single characters to be treated as standing for themselves."
"r" #'emoji-recent
"l" #'emoji-list
"+" #'emoji-zoom-increase
"-" #'emoji-zoom-decrease))
"-" #'emoji-zoom-decrease
"0" #'emoji-zoom-reset))
(defface confusingly-reordered
'((((supports :underline (:style wave)))

View file

@ -1015,7 +1015,7 @@ the like."
(list 'base (list (cons 'href base))
(eww-highest-readability dom))
nil (current-buffer))
(dolist (elem '(:source :url :title :next :previous :up))
(dolist (elem '(:source :url :title :next :previous :up :peer))
(plist-put eww-data elem (plist-get old-data elem)))
(eww--after-page-change)))

View file

@ -81,19 +81,7 @@ or user `keyboard-quit' during execution of body."
(let* ((string-buffer "")
(comint-output-filter-functions
(cons (lambda (text)
(setq string-buffer
(concat
string-buffer
;; Upon concatenation, the prompt may no
;; longer match `comint-prompt-regexp'.
;; In particular, when the regexp has ^
;; and the output does not contain
;; trailing newline. Use more reliable
;; match to split the output later.
(replace-regexp-in-string
comint-prompt-regexp
,org-babel-comint-prompt-separator
text))))
(setq string-buffer (concat string-buffer text)))
comint-output-filter-functions))
dangling-text)
;; got located, and save dangling text
@ -108,21 +96,28 @@ or user `keyboard-quit' during execution of body."
(while (progn
(goto-char comint-last-input-end)
(not (save-excursion
(and (re-search-forward
(regexp-quote ,eoe-indicator) nil t)
(re-search-forward
comint-prompt-regexp nil t)))))
(and (re-search-forward
(regexp-quote ,eoe-indicator) nil t)
(re-search-forward
comint-prompt-regexp nil t)))))
(accept-process-output (get-buffer-process (current-buffer))))
;; replace cut dangling text
(goto-char (process-mark (get-buffer-process (current-buffer))))
(insert dangling-text)
;; Replace partially supplied input lines.
;; This is needed when output filter spits partial lines that
;; do not include a full prompt at a time.
;; Filter out prompts.
(setq string-buffer
(replace-regexp-in-string
comint-prompt-regexp
;; Sometimes, we get multiple agglomerated
;; prompts together in a single output:
;; "prompt prompt prompt output"
;; Remove them progressively, so that
;; possible "^" in the prompt regexp gets to
;; work as we remove the heading prompt
;; instance.
(if (string-prefix-p "^" comint-prompt-regexp)
(format "^\\(%s\\)+" (substring comint-prompt-regexp 1))
comint-prompt-regexp)
,org-babel-comint-prompt-separator
string-buffer))
;; remove echo'd FULL-BODY from input

View file

@ -5,13 +5,13 @@
(defun org-release ()
"The release version of Org.
Inserted by installing Org mode or when a release is made."
(let ((org-release "9.6.2"))
(let ((org-release "9.6.3"))
org-release))
;;;###autoload
(defun org-git-version ()
"The Git version of Org mode.
Inserted by installing Org or when a release is made."
(let ((org-git-version "release_9.6.2"))
(let ((org-git-version "release_9.6.3-2-gf2949d"))
org-git-version))
(provide 'org-version)

View file

@ -9,7 +9,7 @@
;; URL: https://orgmode.org
;; Package-Requires: ((emacs "26.1"))
;; Version: 9.6.2
;; Version: 9.6.3
;; This file is part of GNU Emacs.
;;
@ -3600,13 +3600,13 @@ following symbols:
(const :tag "Entities" entities))))
(defcustom org-hide-emphasis-markers nil
"Non-nil mean font-lock should hide the emphasis marker characters."
"Non-nil means font-lock should hide the emphasis marker characters."
:group 'org-appearance
:type 'boolean
:safe #'booleanp)
(defcustom org-hide-macro-markers nil
"Non-nil mean font-lock should hide the brackets marking macro calls."
"Non-nil means font-lock should hide the brackets marking macro calls."
:group 'org-appearance
:type 'boolean)
@ -3618,7 +3618,7 @@ When nil, the \\name form remains in the buffer."
:type 'boolean)
(defcustom org-pretty-entities-include-sub-superscripts t
"Non-nil means, pretty entity display includes formatting sub/superscripts."
"Non-nil means pretty entity display includes formatting sub/superscripts."
:group 'org-appearance
:version "24.1"
:type 'boolean)
@ -10215,7 +10215,7 @@ nil."
(replace-match "")
(if (and (string-match "\\S-" (buffer-substring (line-beginning-position) (point)))
(equal (char-before) ?\ ))
(backward-delete-char 1)
(delete-char -1)
(when (string-match "^[ \t]*$" (buffer-substring
(line-beginning-position) (line-end-position)))
(delete-region (line-beginning-position)
@ -12006,18 +12006,17 @@ Returns the new tags string, or nil to not change the current settings."
(setq current nil)
(when exit-after-next (setq exit-after-next 'now)))
((= c ?\t)
(condition-case nil
(unless tab-tags
(setq tab-tags
(delq nil
(mapcar (lambda (x)
(let ((item (car-safe x)))
(and (stringp item)
(list item))))
(org--tag-add-to-alist
(with-current-buffer buf
(org-get-buffer-tags))
table))))))
(unless tab-tags
(setq tab-tags
(delq nil
(mapcar (lambda (x)
(let ((item (car-safe x)))
(and (stringp item)
(list item))))
(org--tag-add-to-alist
(with-current-buffer buf
(org-get-buffer-tags))
table)))))
(setq tg (completing-read "Tag: " tab-tags))
(when (string-match "\\S-" tg)
(cl-pushnew (list tg) tab-tags :test #'equal)
@ -16532,7 +16531,7 @@ because, in this case the deletion might narrow the column."
(looking-at-p ".*?|")
(org-at-table-p))
(progn (forward-char -1) (org-delete-char 1))
(backward-delete-char N)
(funcall-interactively #'backward-delete-char N)
(org-fix-tags-on-the-fly))))
(defun org-delete-char (N)

View file

@ -1027,7 +1027,11 @@ To use tree-sitter C/C++ modes by default, evaluate
(add-to-list \\='major-mode-remap-alist
\\='(c-or-c++-mode . c-or-c++-ts-mode))
in your configuration."
in your configuration.
Since this mode uses a parser, unbalanced brackets might cause
some breakage in indentation/fontification. Therefore, it's
recommended to enable `electric-pair-mode' with this mode."
:group 'c++
:after-hook (c-ts-mode-set-modeline)

View file

@ -1626,6 +1626,7 @@ If optional MARKER, return a marker instead"
(directory-file-name (file-local-name truepath))
eglot--uri-path-allowed-chars)))))
(declare-function w32-long-file-name "w32proc.c" (fn))
(defun eglot--uri-to-path (uri)
"Convert URI to file path, helped by `eglot--current-server'."
(when (keywordp uri) (setq uri (substring (symbol-name uri) 1)))
@ -3488,8 +3489,9 @@ at point. With prefix argument, prompt for ACTION-KIND."
(unwind-protect
(progn
(dolist (dir dirs-to-watch)
(push (file-notify-add-watch dir '(change) #'handle-event)
(gethash id (eglot--file-watches server))))
(when (file-readable-p dir)
(push (file-notify-add-watch dir '(change) #'handle-event)
(gethash id (eglot--file-watches server)))))
(setq
success
`(:message ,(format "OK, watching %s directories in %s watchers"

View file

@ -453,7 +453,10 @@ See `treesit-sexp-type-regexp' for more information.")
This major mode defines two additional JSX-specific faces:
`typescript-ts-jsx-attribute-face' and
`typescript-ts-jsx-attribute-face' that are used for HTML tags
and attributes, respectively."
and attributes, respectively.
The JSX-specific faces are used when `treesit-font-lock-level' is
at least 3 (which is the default value)."
:group 'typescript
:syntax-table typescript-ts-mode--syntax-table

View file

@ -286,7 +286,7 @@ Overrides local variable `indent-tabs-mode'."
;; counter_rtl.vhd(29):Conditional signal assignment line__29
("ModelSim" "vcom" "-93 -work \\1" "make" "-f \\1"
nil "vlib \\1; vmap \\2 \\1" "./" "work/" "Makefile" "modelsim"
("^\\(ERROR\\|WARNING\\|\\*\\* Error\\|\\*\\* Warning\\)[^:]*:\\( *\[[0-9]+\]\\| ([^)]+)\\)? \\([^ \t\n]+\\)(\\([0-9]+\\)):" 3 4 nil)
("^\\(ERROR\\|WARNING\\|\\*\\* Error\\|\\*\\* Warning\\)[^:]*:\\( *\\[[0-9]+]\\| ([^)]+)\\)? \\([^ \t\n]+\\)(\\([0-9]+\\)):" 3 4 nil)
("" 0)
("\\1/_primary.dat" "\\2/\\1.dat" "\\1/_primary.dat"
"\\1/_primary.dat" "\\1/body.dat" downcase))

View file

@ -45,7 +45,8 @@ declaration. A FILE with an \"ext:\" prefix is an external file.
`check-declare' will check such files if they are found, and skip
them without error if they are not.
Optional ARGLIST specifies FN's arguments, or is t to not specify
Optional ARGLIST specifies FN's arguments, in the same form as
in `defun' (including the parentheses); or it is t to not specify
FN's arguments. An omitted ARGLIST defaults to t, not nil: a nil
ARGLIST specifies an empty argument list, and an explicit t
ARGLIST is a placeholder that allows supplying a later arg.
@ -3575,9 +3576,9 @@ confusing to some users.")
(defvar from--tty-menu-p nil
"Non-nil means the current command was invoked from a TTY menu.")
(defun use-dialog-box-p ()
"Say whether the current command should prompt the user via a dialog box."
"Return non-nil if the current command should prompt the user via a dialog box."
(and last-input-event ; not during startup
(or (listp last-nonmenu-event) ; invoked by a mouse event
(or (consp last-nonmenu-event) ; invoked by a mouse event
from--tty-menu-p) ; invoked via TTY menu
use-dialog-box))

View file

@ -87,14 +87,14 @@ FROM emacs-base as emacs-gnustep
RUN apt-get update && \
apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
gnustep-devel \
gnustep-devel zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
COPY . /checkout
WORKDIR /checkout
RUN ./autogen.sh autoconf
RUN ./configure --with-ns
RUN make V=1 bootstrap
RUN make bootstrap
FROM emacs-base as emacs-native-comp