summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2023-04-06 14:38:20 -0400
committerEli Zaretskii <eliz@gnu.org>2023-04-06 14:38:20 -0400
commit2d1a96e878ef8dd9a27fb360aa6c85b1dc9b856e (patch)
tree33fcdce2bd4f616991341f5d776138448e5e05e0
parentf7e8586104b77254a390e685fab9a24774a7ccd6 (diff)
parent305246d9726bbe05a65ad3836880138db5c01dfa (diff)
downloademacs-2d1a96e878ef8dd9a27fb360aa6c85b1dc9b856e.tar.gz
Merge from origin/emacs-29
305246d9726 Add emoji-zoom-reset 470d269ec1f Make emoji-zoom-{increase,decrease} set text properties c... 63d4a86f8d1 Fix transforming sliced images 5e1953a8f85 ; * etc/NEWS: Minor copyedits of entry for 'keymap-*' fun... 6b9f9df9454 ; Improve documentation of 'declare-function' 81d1f46d0fe ; Avoid compiler warning in eglot.el. 38cdfcb2128 ; Fix description of new 'keymap-*' functions 257090b8728 Adapt EMBA scripts. 90c07d3fdd2 Another terminology fix in ELisp reference manual a832bc7090c Correct terminology in Elisp Reference Manual db308233cb3 Comment out GNUSTEP jobs on EMBA (again) 8c1b1022439 ; * lisp/image.el (put-image): Doc fix. eda88c63adf ; * doc/emacs/trouble.texi (Checklist): Minor grammar fix. 728bc09cf3c Fix regexp string escaping mistake in vhdl-mode.el (bug#6... 479626dbac9 Update to Org 9.6.3-2-gf2949d 5a1c9aace70 ; Add a bit more docstring to tsx-ts-mode (bug#62429) 86cf9fd932c Eglot: don't watch directories that don't exist 82d0b6c64ea ; * lisp/subr.el (use-dialog-box-p): Fix last change. 3619663f982 Preserve peer information for web page in eww-readable cb8d6ab648f * lisp/subr.el (use-dialog-box-p): Fix conditions for GUI... fb2c4409207 ; * lisp/progmodes/c-ts-mode.el (c++-ts-mode): Add some n... # Conflicts: # etc/NEWS
-rw-r--r--doc/emacs/trouble.texi2
-rw-r--r--doc/lispref/commands.texi6
-rw-r--r--doc/lispref/frames.texi2
-rw-r--r--doc/lispref/functions.texi19
-rw-r--r--doc/lispref/keymaps.texi19
-rw-r--r--etc/NEWS.2913
-rw-r--r--etc/refcards/orgcard.tex2
-rw-r--r--lisp/image.el50
-rw-r--r--lisp/international/emoji.el60
-rw-r--r--lisp/international/mule-cmds.el3
-rw-r--r--lisp/net/eww.el2
-rw-r--r--lisp/org/ob-comint.el37
-rw-r--r--lisp/org/org-version.el4
-rw-r--r--lisp/org/org.el35
-rw-r--r--lisp/progmodes/c-ts-mode.el6
-rw-r--r--lisp/progmodes/eglot.el6
-rw-r--r--lisp/progmodes/typescript-ts-mode.el5
-rw-r--r--lisp/progmodes/vhdl-mode.el2
-rw-r--r--lisp/subr.el7
-rw-r--r--test/infra/Dockerfile.emba4
20 files changed, 172 insertions, 112 deletions
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 0166c613144..db78895bb5b 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -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.
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 62a0939a47e..30765a7e8f7 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -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))
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index e0766ad0b43..7cae94d2627 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -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
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index e9841821431..42441361fea 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -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
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index fdab5075b94..6d07ad5be2c 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -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
diff --git a/etc/NEWS.29 b/etc/NEWS.29
index d3f057308dc..dc4eb64a63a 100644
--- a/etc/NEWS.29
+++ b/etc/NEWS.29
@@ -1022,6 +1022,11 @@ 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:'
or ':scream:'.
@@ -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'.
diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex
index 0ef05353341..f8894d9dc1c 100644
--- a/etc/refcards/orgcard.tex
+++ b/etc/refcards/orgcard.tex
@@ -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
diff --git a/lisp/image.el b/lisp/image.el
index 2372fd1ce09..838cc0f8942 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -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
diff --git a/lisp/international/emoji.el b/lisp/international/emoji.el
index fec3e637f0c..856c405b545 100644
--- a/lisp/international/emoji.el
+++ b/lisp/international/emoji.el
@@ -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
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 4e38b13b1a5..3d6d66970d3 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -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)))
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 808f2295e52..11be20b68db 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -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)))
diff --git a/lisp/org/ob-comint.el b/lisp/org/ob-comint.el
index 54bf5127e16..adfe31c4008 100644
--- a/lisp/org/ob-comint.el
+++ b/lisp/org/ob-comint.el
@@ -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
diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el
index fd75f4785d6..43fdcb82832 100644
--- a/lisp/org/org-version.el
+++ b/lisp/org/org-version.el
@@ -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)
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 1649722ab0c..be9d0e32dd0 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -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)
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index d773b4a41f4..385e3918842 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -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)
diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index 10b6c0cc2ca..f3b806e5613 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -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"
diff --git a/lisp/progmodes/typescript-ts-mode.el b/lisp/progmodes/typescript-ts-mode.el
index ef87bb29d52..3f198e9f180 100644
--- a/lisp/progmodes/typescript-ts-mode.el
+++ b/lisp/progmodes/typescript-ts-mode.el
@@ -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
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index b0699d8308b..45fd17f65c4 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -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))
diff --git a/lisp/subr.el b/lisp/subr.el
index 123275b5971..cbddfa620a8 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -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))
diff --git a/test/infra/Dockerfile.emba b/test/infra/Dockerfile.emba
index 0c4a2e414bf..722a449b636 100644
--- a/test/infra/Dockerfile.emba
+++ b/test/infra/Dockerfile.emba
@@ -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