emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 0c6311386a1 3/5: Merge from origin/emacs-29


From: Dmitry Gutov
Subject: master 0c6311386a1 3/5: Merge from origin/emacs-29
Date: Fri, 5 May 2023 21:00:31 -0400 (EDT)

branch: master
commit 0c6311386a12560c6578ffe50996c1f2c841ddfe
Merge: 3baab6c432b 79a886ba368
Author: Dmitry Gutov <dmitry@gutov.dev>
Commit: Dmitry Gutov <dmitry@gutov.dev>

    Merge from origin/emacs-29
    
    79a886ba368 (package-upgrade): Don't remove the package from 'package...
    c0ab4e9ca93 Eglot: re-rename eglot-upgrade to eglot-upgrade-eglot
    b4e90070f96 Fix arguments of xml.c functions as displayed in Help buf...
    b1bda8228e5 More fixes for NetBSD/vax
    a2d4cd06f45 Improve VHDL mode highlighting
    2f3a514b6db Clarify documentation wrt floating point division by zero...
    94e984e6700 Make loaddefs-generate slightly more tolerant
    aba41d2c4bb ; Minor doc cleanups in go-ts-mode.el
    b42ccb2e5c1 ; Minor grammar fix in treesit manual.
    ab44c8a6f9d Fix order of rcirc-connect arguments
    8eb6e33691d Fix rcirc messages printing in the wrong place
    2901a3443c7 Prevent unnecessary modifications of 'package-vc-selected...
    eaad302bd6f Rename eglot-update to eglot-upgrade
    eaf25b9c6ae go-ts-mode: Use iota query only if supported (Bug#63086)
    cc090294d77 (rng-complete-tag): Add the (ignored) argument to the :co...
    21ec6c1d5cc Update to Transient v0.3.7-219-g3ded15b
    8d5aa8df4ad Fix inserting selection data into Mozilla programs
    57562c3fd0a Recognize defstruct slot names in various eieio functions
    b93eb68cc30 Use 'calendar-buffer' instead of fixed string
    
    # Conflicts:
    #       etc/EGLOT-NEWS
---
 doc/lispref/modes.texi                 |  2 +-
 doc/lispref/numbers.texi               | 39 ++++++++++++++++++++++------------
 doc/misc/eglot.texi                    |  4 ++--
 etc/EGLOT-NEWS                         | 10 +++++++++
 lisp/calendar/parse-time.el            | 16 ++++++++------
 lisp/emacs-lisp/cl-preloaded.el        |  1 +
 lisp/emacs-lisp/loaddefs-gen.el        |  7 ++++--
 lisp/emacs-lisp/package-vc.el          | 17 ++++++++-------
 lisp/emacs-lisp/package.el             |  2 +-
 lisp/net/rcirc.el                      | 14 ++++++------
 lisp/nxml/rng-nxml.el                  |  2 +-
 lisp/progmodes/eglot.el                |  5 ++++-
 lisp/progmodes/go-ts-mode.el           | 13 +++++++++---
 lisp/progmodes/vhdl-mode.el            |  9 +++++++-
 lisp/select.el                         | 31 +++++++++++++++------------
 lisp/subr.el                           |  4 ++--
 lisp/transient.el                      |  3 ++-
 src/sysdep.c                           |  7 ++++++
 test/lisp/calendar/cal-julian-tests.el |  2 +-
 19 files changed, 125 insertions(+), 63 deletions(-)

diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index fd497d14f63..f1d0c41dfe4 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -4155,7 +4155,7 @@ Other keywords are optional:
 @end multitable
 
 Lisp programs mark patterns in @var{query} with capture names (names
-that starts with @code{@@}), and tree-sitter will return matched nodes
+that start with @code{@@}), and tree-sitter will return matched nodes
 tagged with those same capture names.  For the purpose of
 fontification, capture names in @var{query} should be face names like
 @code{font-lock-keyword-face}.  The captured node will be fontified
diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi
index 9bfb771fc07..3e45aa90fda 100644
--- a/doc/lispref/numbers.texi
+++ b/doc/lispref/numbers.texi
@@ -219,17 +219,25 @@ creates huge integers.
 
 @cindex @acronym{IEEE} floating point
   Floating-point numbers are useful for representing numbers that are
-not integral.  The range of floating-point numbers is
-the same as the range of the C data type @code{double} on the machine
-you are using.  On all computers supported by Emacs, this is
-@acronym{IEEE} binary64 floating point format, which is standardized by
-@url{https://standards.ieee.org/standard/754-2019.html,,IEEE Std 754-2019}
-and is discussed further in David Goldberg's paper
+not integral.  The range of floating-point numbers is the same as the
+range of the C data type @code{double} on the machine you are using.
+On almost all computers supported by Emacs, this is @acronym{IEEE}
+binary64 floating point format, which is standardized by
+@url{https://standards.ieee.org/standard/754-2019.html,,IEEE Std
+754-2019} and is discussed further in David Goldberg's paper
 ``@url{https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html,
-What Every Computer Scientist Should Know About Floating-Point Arithmetic}''.
-On modern platforms, floating-point operations follow the IEEE-754
-standard closely; however, results are not always rounded correctly on
-some obsolescent platforms, notably 32-bit x86.
+What Every Computer Scientist Should Know About Floating-Point
+Arithmetic}''.  On modern platforms, floating-point operations follow
+the IEEE-754 standard closely; however, results are not always rounded
+correctly on some systems, notably 32-bit x86.
+
+  On some old computer systems, Emacs may not use IEEE floating-point.
+We know of one such system on which Emacs runs correctly, but does not
+follow IEEE-754: the VAX running NetBSD using GCC 10.4.0, where the
+VAX @samp{D_Floating} format is used instead.  IBM System/370-derived
+mainframes and their XL/C compiler are also capable of utilizing a
+hexadecimal floating point format, but Emacs has not yet been built in
+such a configuration.
 
   The read syntax for floating-point numbers requires either a decimal
 point, an exponent, or both.  Optional signs (@samp{+} or @samp{-})
@@ -262,6 +270,10 @@ two NaNs as equal when their
 signs and significands agree.  Significands of NaNs are
 machine-dependent, as are the digits in their string representation.
 
+  NaNs are not available on systems which do not use IEEE
+floating-point arithmetic; if the read syntax for a NaN is used on a
+VAX, for example, the reader signals an error.
+
   When NaNs and signed zeros are involved, non-numeric functions like
 @code{eql}, @code{equal}, @code{sxhash-eql}, @code{sxhash-equal} and
 @code{gethash} determine whether values are indistinguishable, not
@@ -742,9 +754,10 @@ by rounding the quotient towards zero after each division.
 
 @cindex @code{arith-error} in division
 If you divide an integer by the integer 0, Emacs signals an
-@code{arith-error} error (@pxref{Errors}).  Floating-point division of
-a nonzero number by zero yields either positive or negative infinity
-(@pxref{Float Basics}).
+@code{arith-error} error (@pxref{Errors}).  On systems using IEEE-754
+floating-point, floating-point division of a nonzero number by zero
+yields either positive or negative infinity (@pxref{Float Basics});
+otherwise, an @code{arith-error} is signaled as usual.
 @end defun
 
 @defun % dividend divisor
diff --git a/doc/misc/eglot.texi b/doc/misc/eglot.texi
index 542a4259d66..962e6c914ce 100644
--- a/doc/misc/eglot.texi
+++ b/doc/misc/eglot.texi
@@ -1307,8 +1307,8 @@ Eglot, use @kbd{M-x package-install}.
 Often, a newer Eglot version exists that has fixed a longstanding bug,
 has more LSP features, or just better supports a particular language
 server.  Recent Eglot versions can self-update via the command
-@kbd{M-x eglot-update}.  This will replace any currently installed
-version with the newest one available from the ELPA archives
+@kbd{M-x eglot-upgrade-eglot}.  This will replace any currently
+installed version with the newest one available from the ELPA archives
 configured in @code{package-archives}.
 
 You can also update Eglot through other methods, such as
diff --git a/etc/EGLOT-NEWS b/etc/EGLOT-NEWS
index 7a1aaffaea3..37ee94f1730 100644
--- a/etc/EGLOT-NEWS
+++ b/etc/EGLOT-NEWS
@@ -97,6 +97,16 @@ been added to 'eglot-stay-out-of'.
 ** ELPA installations on Emacs 26.3 are supported again.
 
 
+* Changes in Eglot 1.12.29 (Eglot bundled with Emacs 29.1)
+
+** Eglot can upgrade itself to the latest version.
+
+The new command 'eglot-upgrade-eglot' works around behaviour in the
+existing 'package-install' command and the new 'package-upgrade'
+command which would prevent the user from easily grabbing the latest
+version as usual.
+
+
 * Changes in Eglot 1.12 (13/03/2023)
 
 ** LSP inlay hints are now supported.
diff --git a/lisp/calendar/parse-time.el b/lisp/calendar/parse-time.el
index 1b667a6852e..a62361121fc 100644
--- a/lisp/calendar/parse-time.el
+++ b/lisp/calendar/parse-time.el
@@ -147,7 +147,7 @@ letters, digits, plus or minus signs or colons."
 ;;;###autoload(put 'parse-time-rules 'risky-local-variable t)
 
 ;;;###autoload
-(defun parse-time-string (string)
+(defun parse-time-string (string &optional form)
   "Parse the time in STRING into (SEC MIN HOUR DAY MON YEAR DOW DST TZ).
 STRING should be an ISO 8601 time string, e.g., \"2020-01-15T16:12:21-08:00\",
 or something resembling an RFC 822 (or later) date-time, e.g.,
@@ -156,9 +156,11 @@ somewhat liberal in what format it accepts, and will 
attempt to
 return a \"likely\" value even for somewhat malformed strings.
 The values returned are identical to those of `decode-time', but
 any unknown values other than DST are returned as nil, and an
-unknown DST value is returned as -1."
+unknown DST value is returned as -1.
+
+See `decode-time' for the meaning of FORM."
   (condition-case ()
-      (iso8601-parse string)
+      (iso8601-parse string form)
     (wrong-type-argument
      (let ((time (list nil nil nil nil nil nil nil -1 nil))
           (temp (parse-time-tokenize (downcase string))))
@@ -199,12 +201,14 @@ unknown DST value is returned as -1."
                     (setf (nth (pop slots) time) new-val))))))))
        time))))
 
-(defun parse-iso8601-time-string (date-string)
+(defun parse-iso8601-time-string (date-string &optional form)
   "Parse an ISO 8601 time string, such as \"2020-01-15T16:12:21-08:00\".
 Fall back on parsing something resembling an RFC 822 (or later) date-time.
 This function is like `parse-time-string' except that it returns
-a Lisp timestamp when successful."
-  (when-let ((time (parse-time-string date-string)))
+a Lisp timestamp when successful.
+
+See `decode-time' for the meaning of FORM."
+  (when-let ((time (parse-time-string date-string form)))
     (encode-time time)))
 
 (provide 'parse-time)
diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el
index 9445093f143..5235be52996 100644
--- a/lisp/emacs-lisp/cl-preloaded.el
+++ b/lisp/emacs-lisp/cl-preloaded.el
@@ -176,6 +176,7 @@ supertypes from the most specific to least specific.")
                        (i 0)
                        (offset (if type 0 1)))
                    (dolist (slot slots)
+                     (put (car slot) 'slot-name t)
                      (let* ((props (cl--plist-to-alist (cddr slot)))
                             (typep (assq :type props))
                             (type (if (null typep) t
diff --git a/lisp/emacs-lisp/loaddefs-gen.el b/lisp/emacs-lisp/loaddefs-gen.el
index a966b1e9f40..2a46fb7a022 100644
--- a/lisp/emacs-lisp/loaddefs-gen.el
+++ b/lisp/emacs-lisp/loaddefs-gen.el
@@ -635,9 +635,12 @@ instead of just updating them with the new/changed 
autoloads."
                     (progn
                       (goto-char (point-max))
                       (search-backward "\f\n" nil t))
-                  ;; Delete the old version of the section.
+                  ;; Delete the old version of the section.  Strictly
+                  ;; speaking this should search for "\n\f\n;;;", but
+                  ;; there are loaddefs files in the wild that only
+                  ;; have two ';;'.  (Bug#63236)
                   (delete-region (match-beginning 0)
-                                 (and (search-forward "\n\f\n;;;")
+                                 (and (search-forward "\n\f\n;;")
                                       (match-beginning 0)))
                   (forward-line -2)))
               (insert head)
diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el
index 83d697a2e90..421947b528d 100644
--- a/lisp/emacs-lisp/package-vc.el
+++ b/lisp/emacs-lisp/package-vc.el
@@ -167,7 +167,7 @@ archive."
                                          (:vc-backend symbol)))))
   :version "29.1")
 
-(defvar package-vc--archive-spec-alist nil
+(defvar package-vc--archive-spec-alists nil
   "List of package specifications for each archive.
 The list maps each package name, as a string, to a plist as
 specified in `package-vc-selected-packages'.")
@@ -199,15 +199,15 @@ name for PKG-DESC."
             (not (alist-get name package-vc-selected-packages
                             nil nil #'string=)))
        (alist-get (intern (package-desc-archive pkg-desc))
-                  package-vc--archive-spec-alist)
+                  package-vc--archive-spec-alists)
      ;; Consult both our local list of package specifications, as well
      ;; as the lists provided by the archives.
      (apply #'append (cons package-vc-selected-packages
-                           (mapcar #'cdr package-vc--archive-spec-alist))))
+                           (mapcar #'cdr package-vc--archive-spec-alists))))
    '() nil #'string=))
 
 (defun package-vc--read-archive-data (archive)
-  "Update `package-vc--archive-spec-alist' for ARCHIVE.
+  "Update `package-vc--archive-spec-alists' for ARCHIVE.
 This function is meant to be used as a hook for `package-read-archive-hook'."
   (let ((contents-file (expand-file-name
                         (format "archives/%s/elpa-packages.eld" archive)
@@ -224,7 +224,7 @@ This function is meant to be used as a hook for 
`package-read-archive-hook'."
           (let ((spec (read (current-buffer))))
             (when (eq package-vc--elpa-packages-version
                       (plist-get (cdr spec) :version))
-              (setf (alist-get (intern archive) package-vc--archive-spec-alist)
+              (setf (alist-get (intern archive) 
package-vc--archive-spec-alists)
                     (car spec)))
             (setf (alist-get (intern archive) package-vc--archive-data-alist)
                   (cdr spec))
@@ -235,7 +235,7 @@ This function is meant to be used as a hook for 
`package-read-archive-hook'."
 
 (defun package-vc--download-and-read-archives (&optional async)
   "Download specifications of all `package-archives' and read them.
-Populate `package-vc--archive-spec-alist' with the result.
+Populate `package-vc--archive-spec-alists' with the result.
 
 If optional argument ASYNC is non-nil, perform the downloads
 asynchronously."
@@ -583,7 +583,7 @@ Emacs Lisp files.")
 (defun package-vc--unpack (pkg-desc pkg-spec &optional rev)
   "Install the package described by PKG-DESC.
 PKG-SPEC is a package specification, a property list describing
-how to fetch and build the package.  See `package-vc--archive-spec-alist'
+how to fetch and build the package.  See `package-vc--archive-spec-alists'
 for details.  The optional argument REV specifies a specific revision to
 checkout.  This overrides the `:branch' attribute in PKG-SPEC."
   (unless (eq (package-desc-kind pkg-desc) 'vc)
@@ -632,7 +632,8 @@ abort installation?" name))
           (throw 'done (setq lisp-dir name)))))
 
     ;; Ensure we have a copy of the package specification
-    (unless (equal (alist-get name (mapcar #'cdr 
package-vc--archive-spec-alist)) pkg-spec)
+    (unless (seq-some (lambda (alist) (equal (alist-get name (cdr alist)) 
pkg-spec))
+                      package-vc--archive-spec-alists)
       (customize-save-variable
        'package-vc-selected-packages
        (cons (cons name pkg-spec)
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 0f68f0e8041..0cd54c3fbe2 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -2278,7 +2278,7 @@ newer version from ELPA by using 
`\\<package-menu-mode-map>\\[package-menu-mark-
          (pkg-desc (cadr (assq package package-alist))))
     (if (package-vc-p pkg-desc)
         (package-vc-upgrade pkg-desc)
-      (package-delete pkg-desc 'force)
+      (package-delete pkg-desc 'force 'dont-unselect)
       (package-install package 'dont-select))))
 
 (defun package--upgradeable-packages ()
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 5e4aa5e1198..0ee52d8ef6c 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -584,7 +584,7 @@ If ARG is non-nil, instead prompt for connection 
parameters."
                   (condition-case nil
                       (let ((process (rcirc-connect server port nick user-name
                                                     full-name channels 
password encryption
-                                                    client-cert server-alias)))
+                                                    server-alias client-cert)))
                         (when rcirc-display-server-buffer
                           (pop-to-buffer-same-window (process-buffer 
process))))
                     (quit (message "Quit connecting to %s"
@@ -680,7 +680,7 @@ See `rcirc-connect' for more details on these variables.")
 ;;;###autoload
 (defun rcirc-connect (server &optional port nick user-name
                              full-name startup-channels password encryption
-                             certfp server-alias)
+                             server-alias certfp)
   "Connect to SERVER.
 The arguments PORT, NICK, USER-NAME, FULL-NAME, PASSWORD,
 ENCRYPTION, CERTFP, SERVER-ALIAS are interpreted as in
@@ -1233,9 +1233,9 @@ If SILENT is non-nil, do not print the message in any irc 
buffer."
   (let ((response (if noticep "NOTICE" "PRIVMSG")))
     (rcirc-get-buffer-create process target)
     (dolist (msg (rcirc-split-message message))
-      (rcirc-send-string process response target : msg)
       (unless silent
-        (rcirc-print process (rcirc-nick process) response target msg)))))
+        (rcirc-print process (rcirc-nick process) response target msg))
+      (rcirc-send-string process response target : msg))))
 
 (defvar-local rcirc-input-ring nil
   "Ring object for input.")
@@ -2034,7 +2034,7 @@ connection."
                (not (string= sender (rcirc-nick process))))
     (let* ((buffer (rcirc-target-buffer process sender response target text))
            (time (if-let ((time (rcirc-get-tag "time")))
-                     (parse-iso8601-time-string time)
+                     (parse-iso8601-time-string time t)
                    (current-time)))
            (inhibit-read-only t))
       (with-current-buffer buffer
@@ -2204,7 +2204,7 @@ The message is logged in `rcirc-log', and is later 
written to
 disk.  PROCESS is the process object for the current connection."
   (let ((filename (funcall rcirc-log-filename-function process target))
         (time (and-let* ((time (rcirc-get-tag "time")))
-                (parse-iso8601-time-string time))))
+                (parse-iso8601-time-string time t))))
     (unless (null filename)
       (let ((cell (assoc-string filename rcirc-log-alist))
             (line (concat (format-time-string rcirc-time-format time)
@@ -2998,7 +2998,7 @@ If ARG is given, opens the URL in a new browser window."
   "Insert a timestamp."
   (goto-char (point-min))
   (let ((time (and-let* ((time (rcirc-get-tag "time")))
-                (parse-iso8601-time-string time))))
+                (parse-iso8601-time-string time t))))
     (insert (rcirc-facify (format-time-string rcirc-time-format time)
                           'rcirc-timestamp))))
 
diff --git a/lisp/nxml/rng-nxml.el b/lisp/nxml/rng-nxml.el
index 568cf24451b..fd1f4fb904e 100644
--- a/lisp/nxml/rng-nxml.el
+++ b/lisp/nxml/rng-nxml.el
@@ -180,7 +180,7 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' 
is non-nil."
                    (insert " "))))
               ((member completion extra-strings)
                (insert ">"))))
-          :company-kind ,(lambda () 'property))))))
+          :company-kind ,(lambda (_) 'property))))))
 
 (defconst rng-in-end-tag-name-regex
   (replace-regexp-in-string
diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index 1e0bcd30485..dc8d4674425 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -2003,7 +2003,7 @@ If it is activated, also signal textDocument/didOpen."
        (interactive) (info "(eglot)"))
 
 ;;;###autoload
-(defun eglot-update (&rest _) "Update Eglot."
+(defun eglot-upgrade-eglot (&rest _) "Update Eglot to latest version."
   (interactive)
   (with-no-warnings
     (require 'package)
@@ -2012,6 +2012,9 @@ If it is activated, also signal textDocument/didOpen."
       (package-delete existing t))
     (package-install (cadr (assoc 'eglot package-archive-contents)))))
 
+;;;###autoload
+(define-obsolete-function-alias 'eglot-update 'eglot-upgrade-eglot "29.1")
+
 (easy-menu-define eglot-menu nil "Eglot"
   `("Eglot"
     ;; Commands for getting information and customization.
diff --git a/lisp/progmodes/go-ts-mode.el b/lisp/progmodes/go-ts-mode.el
index fda6a36e42d..b8705ecc4d0 100644
--- a/lisp/progmodes/go-ts-mode.el
+++ b/lisp/progmodes/go-ts-mode.el
@@ -106,6 +106,11 @@
     ">>" "%=" ">>=" "--" "!"  "..."  "&^" "&^=" "~")
   "Go operators for tree-sitter font-locking.")
 
+(defun go-ts-mode--iota-query-supported-p ()
+  "Return t if the iota query is supported by the tree-sitter-go grammar."
+  (ignore-errors
+    (or (treesit-query-string "" '((iota) @font-lock-constant-face) 'go) t)))
+
 (defvar go-ts-mode--font-lock-settings
   (treesit-font-lock-rules
    :language 'go
@@ -118,7 +123,9 @@
 
    :language 'go
    :feature 'constant
-   '([(false) (iota) (nil) (true)] @font-lock-constant-face
+   `([(false) (nil) (true)] @font-lock-constant-face
+     ,@(when (go-ts-mode--iota-query-supported-p)
+         '((iota) @font-lock-constant-face))
      (const_declaration
       (const_spec name: (identifier) @font-lock-constant-face)))
 
@@ -296,7 +303,7 @@ Methods are prefixed with the receiver name, unless 
SKIP-PREFIX is t."
    (treesit-search-subtree node "type_alias" nil nil 1)))
 
 (defun go-ts-mode--other-type-node-p (node)
-  "Return t if NODE is a type, other than interface, struct or alias."
+  "Return t if NODE is a type other than interface, struct, or alias."
   (and
    (string-equal "type_declaration" (treesit-node-type node))
    (not (go-ts-mode--interface-node-p node))
@@ -351,7 +358,7 @@ comment already exists, jump to it."
   "Tree-sitter indent rules for `go-mod-ts-mode'.")
 
 (defun go-mod-ts-mode--in-directive-p ()
-  "Return non-nil if inside a directive.
+  "Return non-nil if point is inside a directive.
 When entering an empty directive or adding a new entry to one, no node
 will be present meaning none of the indentation rules will match,
 because there is no parent to match against.  This function determines
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 45fd17f65c4..ee0ec63b6bc 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)
+     ("^\\(?:\\(?1:ERROR\\|\\*\\* Error\\)\\|\\(?2:WARNING\\|\\*\\* 
Warning\\)\\|\\(?3:NOTE\\|\\*\\* Note\\)\\)[^:]*:\\( *\\[[0-9]+]\\| ([^)]+)\\)? 
\\(?4:[^ \t\n]+\\)(\\(?5:[0-9]+\\)):" 4 5 nil (2 . 3))
      ("" 0)
      ("\\1/_primary.dat" "\\2/\\1.dat" "\\1/_primary.dat"
       "\\1/_primary.dat" "\\1/body.dat" downcase))
@@ -385,6 +385,13 @@ Overrides local variable `indent-tabs-mode'."
      nil "mkdir \\1" "./" "work/" "Makefile" "xilinx"
      ("^ERROR:HDLParsers:[0-9]+ - \"\\([^ \t\n]+\\)\" Line \\([0-9]+\\)\\." 1 
2 nil) ("" 0)
      nil)
+    ;; Xilinx Vivado:
+    ;; ERROR: [VRFC 10-1412] syntax error near o_idle [test.vhd:23]
+    ("Xilinx Vivado" "xvhdl" "" "make" "-f \\1"
+     nil "mkdir \\1" "./" "work" "Makefile" "vivado"
+     ("^\\(?:\\(?1:ERROR\\)\\|\\(?2:WARNING\\)\\|\\(?3:INFO\\)\\): \\(.+\\) 
\\[\\(?4:[^ \t\n]+\\):\\(?5:[0-9]+\\)\\]" 4 5 nil (2 . 3)) ("" 0)
+     ("\\1/entity" "\\2/\\1" "\\1/configuration"
+      "\\1/package" "\\1/body" downcase))
     )
   "List of available VHDL compilers and their properties.
 Each list entry specifies the following items for a compiler:
diff --git a/lisp/select.el b/lisp/select.el
index 7f089c62dd5..09c678867d0 100644
--- a/lisp/select.el
+++ b/lisp/select.el
@@ -807,19 +807,24 @@ This function returns the string \"emacs\"."
 (defun xselect-convert-to-username (_selection _type _value)
   (user-real-login-name))
 
-(defun xselect-convert-to-text-uri-list (_selection _type value)
-  (let ((string
-         (if (stringp value)
-             (xselect--encode-string 'TEXT
-                                     (concat (url-encode-url value) "\n"))
-           (when (vectorp value)
-             (with-temp-buffer
-               (cl-loop for tem across value
-                        do (progn
-                             (insert (url-encode-url tem))
-                             (insert "\n")))
-               (xselect--encode-string 'TEXT (buffer-string)))))))
-    (cons 'text/uri-list (cdr string))))
+(defun xselect-convert-to-text-uri-list (selection _type value)
+  ;; While `xselect-uri-list-available-p' ensures that this target
+  ;; will not be reported in the TARGETS of non-drag-and-drop
+  ;; selections, Firefox stupidly converts to it anyway.  Check that
+  ;; the conversion request is being made for the correct selection.
+  (and (eq selection 'XdndSelection)
+       (let ((string
+              (if (stringp value)
+                  (xselect--encode-string 'TEXT
+                                          (concat (url-encode-url value) "\n"))
+                (when (vectorp value)
+                  (with-temp-buffer
+                    (cl-loop for tem across value
+                             do (progn
+                                  (insert (url-encode-url tem))
+                                  (insert "\n")))
+                    (xselect--encode-string 'TEXT (buffer-string)))))))
+         (cons 'text/uri-list (cdr string)))))
 
 (defun xselect-convert-to-xm-file (selection _type value)
   (when (and (stringp value)
diff --git a/lisp/subr.el b/lisp/subr.el
index 1452a1117d3..0501fc67a3e 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1885,8 +1885,8 @@ be a list of the form returned by `event-start' and 
`event-end'."
 (set-advertised-calling-convention 'unintern '(name obarray) "23.3")
 (set-advertised-calling-convention 'indirect-function '(object) "25.1")
 (set-advertised-calling-convention 'redirect-frame-focus '(frame focus-frame) 
"24.3")
-(set-advertised-calling-convention 'libxml-parse-xml-region '(start end 
&optional base-url) "27.1")
-(set-advertised-calling-convention 'libxml-parse-html-region '(start end 
&optional base-url) "27.1")
+(set-advertised-calling-convention 'libxml-parse-xml-region '(&optional start 
end base-url) "27.1")
+(set-advertised-calling-convention 'libxml-parse-html-region '(&optional start 
end base-url) "27.1")
 (set-advertised-calling-convention 'time-convert '(time form) "29.1")
 
 ;;;; Obsolescence declarations for variables, and aliases.
diff --git a/lisp/transient.el b/lisp/transient.el
index 4affc414fa6..9785e218b19 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -1071,7 +1071,8 @@ example, sets a variable, use `transient-define-infix' 
instead.
                               (if (and desc (or (stringp desc) (symbolp desc)))
                                   desc
                                 (plist-get args :key)))))))
-          (setq args (plist-put args :command `(defalias ',sym ,cmd)))))
+          (setq args (plist-put args :command
+                                `(defalias ',sym ,(macroexp-quote cmd))))))
        ((or (stringp car)
             (and car (listp car)))
         (let ((arg pop))
diff --git a/src/sysdep.c b/src/sysdep.c
index a5b3117d262..443602a2d6d 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -2005,7 +2005,9 @@ init_signals (void)
     signal (SIGPIPE, SIG_IGN);
 
   sigaction (SIGQUIT, &process_fatal_action, 0);
+#ifndef __vax__
   sigaction (SIGILL, &thread_fatal_action, 0);
+#endif /* __vax__ */
   sigaction (SIGTRAP, &thread_fatal_action, 0);
 
   /* Typically SIGFPE is thread-specific and is fatal, like SIGILL.
@@ -2018,6 +2020,11 @@ init_signals (void)
     {
       emacs_sigaction_init (&action, deliver_arith_signal);
       sigaction (SIGFPE, &action, 0);
+#ifdef __vax__
+      /* NetBSD/vax generates SIGILL upon some floating point errors,
+        such as taking the log of 0.0.  */
+      sigaction (SIGILL, &action, 0);
+#endif /* __vax__ */
     }
 
 #ifdef SIGUSR1
diff --git a/test/lisp/calendar/cal-julian-tests.el 
b/test/lisp/calendar/cal-julian-tests.el
index e0d74e8a6cd..4207d1ee285 100644
--- a/test/lisp/calendar/cal-julian-tests.el
+++ b/test/lisp/calendar/cal-julian-tests.el
@@ -47,7 +47,7 @@
          (progn
            (calendar)
            ,@body)
-       (kill-buffer "*Calendar*"))))
+       (kill-buffer calendar-buffer))))
 
 (ert-deftest cal-julian-test-goto-date ()
   (with-cal-julian-test



reply via email to

[Prev in Thread] Current Thread [Next in Thread]