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 @@ -96,6 +96,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) 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-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