aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVibhav Pant2017-02-13 17:07:36 +0530
committerVibhav Pant2017-02-13 17:07:36 +0530
commitcb410433e069b5bb450193353c3fea8593a643a9 (patch)
treed2f4269781b4841e5a0c27ec57a5a4fbcec386c0
parente742450427007cdde242c11380dfe32a950fab61 (diff)
parent4b18ef7ba3dd8aae4f3c3bf931365ef7da883baf (diff)
downloademacs-feature/byte-switch.tar.gz
emacs-feature/byte-switch.zip
Merge branch 'master' into feature/byte-switchfeature/byte-switch
-rw-r--r--doc/lispref/os.texi4
-rw-r--r--lisp/allout.el5
-rw-r--r--lisp/bookmark.el8
-rw-r--r--lisp/buff-menu.el2
-rw-r--r--lisp/cus-edit.el4
-rw-r--r--lisp/cus-theme.el4
-rw-r--r--lisp/emacs-lisp/autoload.el2
-rw-r--r--lisp/emacs-lisp/bytecomp.el2
-rw-r--r--lisp/emacs-lisp/checkdoc.el16
-rw-r--r--lisp/emacs-lisp/elint.el2
-rw-r--r--lisp/emulation/viper-cmd.el2
-rw-r--r--lisp/gnus/mm-bodies.el22
-rw-r--r--lisp/image-dired.el4
-rw-r--r--lisp/international/mule-util.el10
-rw-r--r--lisp/net/tramp.el25
-rw-r--r--lisp/progmodes/js.el43
-rw-r--r--lisp/progmodes/vhdl-mode.el3
-rw-r--r--lisp/replace.el40
-rw-r--r--lisp/server.el4
-rw-r--r--lisp/simple.el2
-rw-r--r--lisp/startup.el5
-rw-r--r--lisp/subr.el8
-rw-r--r--lisp/textmodes/css-mode.el6
-rw-r--r--lisp/time-stamp.el13
-rw-r--r--lisp/xdg.el11
-rw-r--r--test/lisp/progmodes/js-tests.el17
-rw-r--r--test/lisp/textmodes/css-mode-tests.el3
-rw-r--r--test/src/fns-tests.el18
28 files changed, 158 insertions, 127 deletions
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 553bb4a0068..178822b311e 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -940,9 +940,7 @@ string.
940If this variable is non-@code{nil}, it is used instead of 940If this variable is non-@code{nil}, it is used instead of
941@code{system-name} for purposes of generating email addresses. For 941@code{system-name} for purposes of generating email addresses. For
942example, it is used when constructing the default value of 942example, it is used when constructing the default value of
943@code{user-mail-address}. @xref{User Identification}. (Since this is 943@code{user-mail-address}. @xref{User Identification}.
944done when Emacs starts up, the value actually used is the one saved when
945Emacs was dumped. @xref{Building Emacs}.)
946@c FIXME sounds like should probably give this a :set-after and some 944@c FIXME sounds like should probably give this a :set-after and some
947@c custom-initialize-delay voodoo. 945@c custom-initialize-delay voodoo.
948@end defopt 946@end defopt
diff --git a/lisp/allout.el b/lisp/allout.el
index 4a0aeeedf6a..e837f83ed38 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -4462,7 +4462,7 @@ Topic exposure is marked with text-properties, to be used by
4462 (if (and (/= (current-column) 0) (not (eobp))) 4462 (if (and (/= (current-column) 0) (not (eobp)))
4463 (forward-char 1)) 4463 (forward-char 1))
4464 (if (not (eobp)) 4464 (if (not (eobp))
4465 (if (and (save-match-data (looking-at "\n")) 4465 (if (and (= (following-char) ?\n)
4466 (or (save-excursion 4466 (or (save-excursion
4467 (or (not (allout-next-heading)) 4467 (or (not (allout-next-heading))
4468 (= depth allout-recent-depth))) 4468 (= depth allout-recent-depth)))
@@ -6278,8 +6278,7 @@ It must also have content."
6278 (setq got nil 6278 (setq got nil
6279 done t) 6279 done t)
6280 (goto-char (setq got (match-beginning 0))) 6280 (goto-char (setq got (match-beginning 0)))
6281 (if (save-match-data (looking-at "\n")) 6281 (when (= (following-char) ?\n) (forward-char 1))
6282 (forward-char 1))
6283 (setq got (point))) 6282 (setq got (point)))
6284 6283
6285 (cond ((not got) 6284 (cond ((not got)
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index 02dd8a9f6fc..5b8ded7b22a 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -896,8 +896,8 @@ If optional arg NEWLINE-TOO is non-nil, delete the newline too.
896Does not affect the kill ring." 896Does not affect the kill ring."
897 (let ((eol (line-end-position))) 897 (let ((eol (line-end-position)))
898 (delete-region (point) eol) 898 (delete-region (point) eol)
899 (if (and newline-too (looking-at "\n")) 899 (when (and newline-too (= (following-char) ?\n))
900 (delete-char 1)))) 900 (delete-char 1))))
901 901
902 902
903;; Defvars to avoid compilation warnings: 903;; Defvars to avoid compilation warnings:
@@ -957,7 +957,7 @@ Lines beginning with `#' are ignored."
957 (error "Not in bookmark-edit-annotation-mode")) 957 (error "Not in bookmark-edit-annotation-mode"))
958 (goto-char (point-min)) 958 (goto-char (point-min))
959 (while (< (point) (point-max)) 959 (while (< (point) (point-max))
960 (if (looking-at "^#") 960 (if (= (following-char) ?#)
961 (bookmark-kill-line t) 961 (bookmark-kill-line t)
962 (forward-line 1))) 962 (forward-line 1)))
963 ;; Take no chances with text properties. 963 ;; Take no chances with text properties.
@@ -2064,7 +2064,7 @@ To carry out the deletions that you've marked, use \\<bookmark-bmenu-mode-map>\\
2064 (let ((o-point (point)) 2064 (let ((o-point (point))
2065 (o-str (save-excursion 2065 (o-str (save-excursion
2066 (beginning-of-line) 2066 (beginning-of-line)
2067 (unless (looking-at "^D") 2067 (unless (= (following-char) ?D)
2068 (buffer-substring 2068 (buffer-substring
2069 (point) 2069 (point)
2070 (progn (end-of-line) (point)))))) 2070 (progn (end-of-line) (point))))))
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 9f618bcb7de..83d6bb6b0e9 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -1,4 +1,4 @@
1;;; buff-menu.el --- Interface for viewing and manipulating buffers 1;;; buff-menu.el --- Interface for viewing and manipulating buffers -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 1985-1987, 1993-1995, 2000-2017 Free Software 3;; Copyright (C) 1985-1987, 1993-1995, 2000-2017 Free Software
4;; Foundation, Inc. 4;; Foundation, Inc.
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 2b86051a726..fac9c77e12a 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -4581,7 +4581,7 @@ This function does not save the buffer."
4581 (if (bolp) 4581 (if (bolp)
4582 (princ " ")) 4582 (princ " "))
4583 (princ ")") 4583 (princ ")")
4584 (unless (looking-at-p "\n") 4584 (when (/= (following-char) ?\n)
4585 (princ "\n"))))) 4585 (princ "\n")))))
4586 4586
4587(defun custom-save-faces () 4587(defun custom-save-faces ()
@@ -4636,7 +4636,7 @@ This function does not save the buffer."
4636 (if (bolp) 4636 (if (bolp)
4637 (princ " ")) 4637 (princ " "))
4638 (princ ")") 4638 (princ ")")
4639 (unless (looking-at-p "\n") 4639 (when (/= (following-char) ?\n)
4640 (princ "\n"))))) 4640 (princ "\n")))))
4641 4641
4642;;; The Customize Menu. 4642;;; The Customize Menu.
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index c5682add23a..d2ee14d8bdf 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -431,7 +431,7 @@ It includes all variables in list VARS."
431 (if (bolp) 431 (if (bolp)
432 (princ " ")) 432 (princ " "))
433 (princ ")") 433 (princ ")")
434 (unless (looking-at "\n") 434 (when (/= (following-char) ?\n)
435 (princ "\n"))))) 435 (princ "\n")))))
436 436
437(defun custom-theme-write-faces (theme faces) 437(defun custom-theme-write-faces (theme faces)
@@ -463,7 +463,7 @@ It includes all faces in list FACES."
463 (princ ")"))))) 463 (princ ")")))))
464 (if (bolp) (princ " ")) 464 (if (bolp) (princ " "))
465 (princ ")") 465 (princ ")")
466 (unless (looking-at "\n") 466 (when (/= (following-char) ?\n)
467 (princ "\n"))))) 467 (princ "\n")))))
468 468
469 469
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index ca1d75176dc..1b7ff36f422 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -748,7 +748,7 @@ FILE's modification time."
748 (setq output-start (autoload--setup-output 748 (setq output-start (autoload--setup-output
749 otherbuf outbuf absfile load-name))) 749 otherbuf outbuf absfile load-name)))
750 (autoload--print-cookie-text output-start load-name file)) 750 (autoload--print-cookie-text output-start load-name file))
751 ((looking-at ";") 751 ((= (following-char) ?\;)
752 ;; Don't read the comment. 752 ;; Don't read the comment.
753 (forward-line 1)) 753 (forward-line 1))
754 (t 754 (t
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 6e8442291f8..75e6b904aa6 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -2013,7 +2013,7 @@ With argument ARG, insert value in current buffer after the form."
2013 ;; Compile the forms from the input buffer. 2013 ;; Compile the forms from the input buffer.
2014 (while (progn 2014 (while (progn
2015 (while (progn (skip-chars-forward " \t\n\^l") 2015 (while (progn (skip-chars-forward " \t\n\^l")
2016 (looking-at ";")) 2016 (= (following-char) ?\;))
2017 (forward-line 1)) 2017 (forward-line 1))
2018 (not (eobp))) 2018 (not (eobp)))
2019 (setq byte-compile-read-position (point) 2019 (setq byte-compile-read-position (point)
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 59edbe100e1..1d6fdfa4e87 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -603,7 +603,7 @@ style."
603 (checkdoc-overlay-put cdo 'face 'highlight) 603 (checkdoc-overlay-put cdo 'face 'highlight)
604 ;; Make sure the whole doc string is visible if possible. 604 ;; Make sure the whole doc string is visible if possible.
605 (sit-for 0) 605 (sit-for 0)
606 (if (and (looking-at "\"") 606 (if (and (= (following-char) ?\")
607 (not (pos-visible-in-window-p 607 (not (pos-visible-in-window-p
608 (save-excursion (forward-sexp 1) (point)) 608 (save-excursion (forward-sexp 1) (point))
609 (selected-window)))) 609 (selected-window))))
@@ -743,9 +743,9 @@ buffer, otherwise searching starts at START-HERE."
743 (while (checkdoc-next-docstring) 743 (while (checkdoc-next-docstring)
744 (message "Searching for doc string spell error...%d%%" 744 (message "Searching for doc string spell error...%d%%"
745 (floor (* 100.0 (point)) (point-max))) 745 (floor (* 100.0 (point)) (point-max)))
746 (if (looking-at "\"") 746 (when (= (following-char) ?\")
747 (checkdoc-ispell-docstring-engine 747 (checkdoc-ispell-docstring-engine
748 (save-excursion (forward-sexp 1) (point-marker))))) 748 (save-excursion (forward-sexp 1) (point-marker)))))
749 (message "Checkdoc: Done.")))) 749 (message "Checkdoc: Done."))))
750 750
751(defun checkdoc-message-interactive-ispell-loop (start-here) 751(defun checkdoc-message-interactive-ispell-loop (start-here)
@@ -763,7 +763,7 @@ buffer, otherwise searching starts at START-HERE."
763 (while (checkdoc-message-text-next-string (point-max)) 763 (while (checkdoc-message-text-next-string (point-max))
764 (message "Searching for message string spell error...%d%%" 764 (message "Searching for message string spell error...%d%%"
765 (floor (* 100.0 (point)) (point-max))) 765 (floor (* 100.0 (point)) (point-max)))
766 (if (looking-at "\"") 766 (if (= (following-char) ?\")
767 (checkdoc-ispell-docstring-engine 767 (checkdoc-ispell-docstring-engine
768 (save-excursion (forward-sexp 1) (point-marker))))) 768 (save-excursion (forward-sexp 1) (point-marker)))))
769 (message "Checkdoc: Done.")))) 769 (message "Checkdoc: Done."))))
@@ -1381,7 +1381,7 @@ See the style guide in the Emacs Lisp manual for more details."
1381 "All variables and subroutines might as well have a \ 1381 "All variables and subroutines might as well have a \
1382documentation string") 1382documentation string")
1383 (point) (+ (point) 1) t))))) 1383 (point) (+ (point) 1) t)))))
1384 (if (and (not err) (looking-at "\"")) 1384 (if (and (not err) (= (following-char) ?\"))
1385 (with-syntax-table checkdoc-syntax-table 1385 (with-syntax-table checkdoc-syntax-table
1386 (checkdoc-this-string-valid-engine fp)) 1386 (checkdoc-this-string-valid-engine fp))
1387 err))) 1387 err)))
@@ -1395,7 +1395,7 @@ regexp short cuts work. FP is the function defun information."
1395 ;; we won't accidentally lose our place. This could cause 1395 ;; we won't accidentally lose our place. This could cause
1396 ;; end-of doc string whitespace to also delete the " char. 1396 ;; end-of doc string whitespace to also delete the " char.
1397 (s (point)) 1397 (s (point))
1398 (e (if (looking-at "\"") 1398 (e (if (= (following-char) ?\")
1399 (save-excursion (forward-sexp 1) (point-marker)) 1399 (save-excursion (forward-sexp 1) (point-marker))
1400 (point)))) 1400 (point))))
1401 (or 1401 (or
@@ -1475,7 +1475,7 @@ regexp short cuts work. FP is the function defun information."
1475 ((looking-at "[\\!?;:.)]") 1475 ((looking-at "[\\!?;:.)]")
1476 ;; These are ok 1476 ;; These are ok
1477 nil) 1477 nil)
1478 ((and checkdoc-permit-comma-termination-flag (looking-at ",")) 1478 ((and checkdoc-permit-comma-termination-flag (= (following-char) ?,))
1479 nil) 1479 nil)
1480 (t 1480 (t
1481 ;; If it is not a complete sentence, let's see if we can 1481 ;; If it is not a complete sentence, let's see if we can
diff --git a/lisp/emacs-lisp/elint.el b/lisp/emacs-lisp/elint.el
index d68e49fa4b2..f5e10a24d37 100644
--- a/lisp/emacs-lisp/elint.el
+++ b/lisp/emacs-lisp/elint.el
@@ -372,7 +372,7 @@ Returns the forms."
372 (let ((elint-current-pos (point))) 372 (let ((elint-current-pos (point)))
373 ;; non-list check could be here too. errors may be out of seq. 373 ;; non-list check could be here too. errors may be out of seq.
374 ;; quoted check cannot be elsewhere, since quotes skipped. 374 ;; quoted check cannot be elsewhere, since quotes skipped.
375 (if (looking-back "'" (1- (point))) 375 (if (= (preceding-char) ?\')
376 ;; Eg cust-print.el uses ' as a comment syntax. 376 ;; Eg cust-print.el uses ' as a comment syntax.
377 (elint-warning "Skipping quoted form `%c%.20s...'" ?\' 377 (elint-warning "Skipping quoted form `%c%.20s...'" ?\'
378 (read (current-buffer))) 378 (read (current-buffer)))
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index 86364282dcf..aa31fac32cc 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -4520,7 +4520,7 @@ One can use \\=`\\=` and \\='\\=' to temporarily jump 1 step back."
4520 (interactive) 4520 (interactive)
4521 (if viper-cted 4521 (if viper-cted
4522 (let ((p (point)) (c (current-column)) bol (indent t)) 4522 (let ((p (point)) (c (current-column)) bol (indent t))
4523 (if (looking-back "[0^]" (1- (point))) 4523 (if (memq (preceding-char) '(?0 ?^))
4524 (progn 4524 (progn
4525 (if (eq ?^ (preceding-char)) 4525 (if (eq ?^ (preceding-char))
4526 (setq viper-preserve-indent t)) 4526 (setq viper-preserve-indent t))
diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el
index 66b9ebd0cfc..d773289722f 100644
--- a/lisp/gnus/mm-bodies.el
+++ b/lisp/gnus/mm-bodies.el
@@ -68,14 +68,14 @@ Valid encodings are `7bit', `8bit', `quoted-printable' and `base64'."
68(declare-function message-options-set "message" (symbol value)) 68(declare-function message-options-set "message" (symbol value))
69 69
70(defun mm-encode-body (&optional charset) 70(defun mm-encode-body (&optional charset)
71 "Encode a body. 71 "Encode whole buffer's contents.
72Should be called narrowed to the body that is to be encoded. 72Buffer's multibyteness will be turned off when encoding takes place.
73If there is more than one non-ASCII MULE charset in the body, then the 73If there is more than one non-ASCII MULE charset in the body, then the
74list of MULE charsets found is returned. 74list of MULE charsets found is returned.
75If CHARSET is non-nil, it is used as the MIME charset to encode the body. 75If CHARSET is non-nil, it is used as the MIME charset to encode the body.
76If successful, the MIME charset is returned. 76If successful, the MIME charset is returned.
77If no encoding was done, nil is returned." 77If no encoding was done, nil is returned."
78 (if (not (mm-multibyte-p)) 78 (if (not enable-multibyte-characters)
79 ;; In the non-Mule case, we search for non-ASCII chars and 79 ;; In the non-Mule case, we search for non-ASCII chars and
80 ;; return the value of `mail-parse-charset' if any are found. 80 ;; return the value of `mail-parse-charset' if any are found.
81 (or charset 81 (or charset
@@ -93,8 +93,12 @@ If no encoding was done, nil is returned."
93 (save-excursion 93 (save-excursion
94 (if charset 94 (if charset
95 (progn 95 (progn
96 (encode-coding-region (point-min) (point-max) 96 (insert
97 (mm-charset-to-coding-system charset)) 97 (prog1
98 (encode-coding-string (buffer-string)
99 (mm-charset-to-coding-system charset))
100 (erase-buffer)
101 (set-buffer-multibyte nil)))
98 charset) 102 charset)
99 (goto-char (point-min)) 103 (goto-char (point-min))
100 (let ((charsets (mm-find-mime-charset-region (point-min) (point-max) 104 (let ((charsets (mm-find-mime-charset-region (point-min) (point-max)
@@ -110,8 +114,12 @@ If no encoding was done, nil is returned."
110 (t 114 (t
111 (prog1 115 (prog1
112 (setq charset (car charsets)) 116 (setq charset (car charsets))
113 (encode-coding-region (point-min) (point-max) 117 (insert
114 (mm-charset-to-coding-system charset)))) 118 (prog1
119 (encode-coding-string (buffer-string)
120 (mm-charset-to-coding-system charset))
121 (erase-buffer)
122 (set-buffer-multibyte nil)))))
115 )))))) 123 ))))))
116 124
117(defun mm-long-lines-p (length) 125(defun mm-long-lines-p (length)
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 2a4064560a7..49dba52c884 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -1751,8 +1751,8 @@ Ask user for number of images to show and the delay in between."
1751 (interactive) 1751 (interactive)
1752 (let ((inhibit-read-only t)) 1752 (let ((inhibit-read-only t))
1753 (delete-char 1) 1753 (delete-char 1)
1754 (if (looking-at " ") 1754 (when (= (following-char) ?\s)
1755 (delete-char 1)))) 1755 (delete-char 1))))
1756 1756
1757;;;###autoload 1757;;;###autoload
1758(defun image-dired-display-thumbs-append () 1758(defun image-dired-display-thumbs-append ()
diff --git a/lisp/international/mule-util.el b/lisp/international/mule-util.el
index 06b63eae370..92a658655ac 100644
--- a/lisp/international/mule-util.el
+++ b/lisp/international/mule-util.el
@@ -33,16 +33,6 @@
33;;; String manipulations while paying attention to multibyte characters. 33;;; String manipulations while paying attention to multibyte characters.
34 34
35;;;###autoload 35;;;###autoload
36(defsubst string-to-list (string)
37 "Return a list of characters in STRING."
38 (append string nil))
39
40;;;###autoload
41(defsubst string-to-vector (string)
42 "Return a vector of characters in STRING."
43 (vconcat string))
44
45;;;###autoload
46(defun store-substring (string idx obj) 36(defun store-substring (string idx obj)
47 "Embed OBJ (string or character) at index IDX of STRING." 37 "Embed OBJ (string or character) at index IDX of STRING."
48 (if (integerp obj) 38 (if (integerp obj)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 48dcd5edd11..4b5bd472632 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2133,9 +2133,13 @@ preventing reentrant calls of Tramp.")
2133Together with `tramp-locked', this implements a locking mechanism 2133Together with `tramp-locked', this implements a locking mechanism
2134preventing reentrant calls of Tramp.") 2134preventing reentrant calls of Tramp.")
2135 2135
2136;; Avoid recursive loading of tramp.el. 2136;; Avoid recursive loading of tramp.el. If `non-essential' is
2137;; non-nil, we must load tramp.el, in order to get the real definition
2138;; of `tramp-completion-file-name-handler'.
2137;;;###autoload(defun tramp-completion-file-name-handler (operation &rest args) 2139;;;###autoload(defun tramp-completion-file-name-handler (operation &rest args)
2138;;;###autoload (tramp-completion-run-real-handler operation args)) 2140;;;###autoload (if (and (boundp 'non-essential) (symbol-value 'non-essential))
2141;;;###autoload (apply 'tramp-autoload-file-name-handler operation args)
2142;;;###autoload (tramp-completion-run-real-handler operation args)))
2139 2143
2140(defun tramp-completion-file-name-handler (operation &rest args) 2144(defun tramp-completion-file-name-handler (operation &rest args)
2141 "Invoke Tramp file name completion handler. 2145 "Invoke Tramp file name completion handler.
@@ -2165,9 +2169,11 @@ Falls back to normal file name handler if no Tramp file name handler exists."
2165(progn (defun tramp-autoload-file-name-handler (operation &rest args) 2169(progn (defun tramp-autoload-file-name-handler (operation &rest args)
2166 "Load Tramp file name handler, and perform OPERATION." 2170 "Load Tramp file name handler, and perform OPERATION."
2167 ;; Avoid recursive loading of tramp.el. 2171 ;; Avoid recursive loading of tramp.el.
2168 (let ((default-directory temporary-file-directory)) 2172 (if (let ((default-directory temporary-file-directory))
2169 (load "tramp" nil t)) 2173 (and (null load-in-progress) (load "tramp" 'noerror 'nomessage)))
2170 (apply operation args))) 2174 (apply operation args)
2175 ;; tramp.el not available for loading, fall back.
2176 (tramp-completion-run-real-handler operation args))))
2171 2177
2172;; `tramp-autoload-file-name-handler' must be registered before 2178;; `tramp-autoload-file-name-handler' must be registered before
2173;; evaluation of site-start and init files, because there might exist 2179;; evaluation of site-start and init files, because there might exist
@@ -2307,11 +2313,10 @@ not in completion mode."
2307 (progn 2313 (progn
2308 ;; If DIR is not given, use `default-directory' or "/". 2314 ;; If DIR is not given, use `default-directory' or "/".
2309 (setq dir (or dir default-directory "/")) 2315 (setq dir (or dir default-directory "/"))
2310 ;; Unless NAME is absolute, concat DIR and NAME. 2316 (cond
2311 (unless (file-name-absolute-p name) 2317 ((file-name-absolute-p name) name)
2312 (setq name (concat (file-name-as-directory dir) name))) 2318 ((zerop (length name)) dir)
2313 ;; Return NAME. 2319 (t (concat (file-name-as-directory dir) name))))
2314 name)
2315 2320
2316 (tramp-completion-run-real-handler 2321 (tramp-completion-run-real-handler
2317 'expand-file-name (list name dir)))) 2322 'expand-file-name (list name dir))))
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index e42e01481b6..b42b2bca822 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -1687,29 +1687,36 @@ This performs fontification according to `js--class-styles'."
1687 js--font-lock-keywords-3) 1687 js--font-lock-keywords-3)
1688 "Font lock keywords for `js-mode'. See `font-lock-keywords'.") 1688 "Font lock keywords for `js-mode'. See `font-lock-keywords'.")
1689 1689
1690(defconst js--syntax-propertize-regexp-syntax-table 1690(defconst js--syntax-propertize-regexp-regexp
1691 (let ((st (make-char-table 'syntax-table (string-to-syntax ".")))) 1691 (rx
1692 (modify-syntax-entry ?\[ "(]" st) 1692 ;; Start of regexp.
1693 (modify-syntax-entry ?\] ")[" st) 1693 "/"
1694 (modify-syntax-entry ?\\ "\\" st) 1694 (0+ (or
1695 st)) 1695 ;; Match characters outside of a character class.
1696 (not (any ?\[ ?/ ?\\))
1697 ;; Match backslash quoted characters.
1698 (and "\\" not-newline)
1699 ;; Match character class.
1700 (and
1701 "["
1702 (0+ (or
1703 (not (any ?\] ?\\))
1704 (and "\\" not-newline)))
1705 "]")))
1706 (group "/"))
1707 "Regular expression matching a JavaScript regexp literal.")
1696 1708
1697(defun js-syntax-propertize-regexp (end) 1709(defun js-syntax-propertize-regexp (end)
1698 (let ((ppss (syntax-ppss))) 1710 (let ((ppss (syntax-ppss)))
1699 (when (eq (nth 3 ppss) ?/) 1711 (when (eq (nth 3 ppss) ?/)
1700 ;; A /.../ regexp. 1712 ;; A /.../ regexp.
1701 (while 1713 (goto-char (nth 8 ppss))
1702 (when (re-search-forward "\\(?:\\=\\|[^\\]\\)\\(?:\\\\\\\\\\)*/" 1714 (when (and (looking-at js--syntax-propertize-regexp-regexp)
1703 end 'move) 1715 ;; Don't touch text after END.
1704 (if (nth 1 (with-syntax-table 1716 (<= (match-end 1) end))
1705 js--syntax-propertize-regexp-syntax-table 1717 (put-text-property (match-beginning 1) (match-end 1)
1706 (let ((parse-sexp-lookup-properties nil)) 1718 'syntax-table (string-to-syntax "\"/"))
1707 (parse-partial-sexp (nth 8 ppss) (point))))) 1719 (goto-char (match-end 0))))))
1708 ;; A / within a character class is not the end of a regexp.
1709 t
1710 (put-text-property (1- (point)) (point)
1711 'syntax-table (string-to-syntax "\"/"))
1712 nil))))))
1713 1720
1714(defun js-syntax-propertize (start end) 1721(defun js-syntax-propertize (start end)
1715 ;; JavaScript allows immediate regular expression objects, written /.../. 1722 ;; JavaScript allows immediate regular expression objects, written /.../.
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 6c76d7e4ad2..06ffd54d2df 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -1010,7 +1010,7 @@ if the header needs to be version controlled.
1010The following keywords for template generation are supported: 1010The following keywords for template generation are supported:
1011 <filename> : replaced by the name of the buffer 1011 <filename> : replaced by the name of the buffer
1012 <author> : replaced by the user name and email address 1012 <author> : replaced by the user name and email address
1013 (`user-full-name',`mail-host-address', `user-mail-address') 1013 (`user-full-name', `user-mail-address')
1014 <authorfull> : replaced by the user full name (`user-full-name') 1014 <authorfull> : replaced by the user full name (`user-full-name')
1015 <login> : replaced by user login name (`user-login-name') 1015 <login> : replaced by user login name (`user-login-name')
1016 <company> : replaced by contents of option `vhdl-company-name' 1016 <company> : replaced by contents of option `vhdl-company-name'
@@ -1967,7 +1967,6 @@ are treated as single words otherwise."
1967(unless (featurep 'xemacs) 1967(unless (featurep 'xemacs)
1968 (custom-add-to-group 'vhdl-related 'transient-mark-mode 'custom-variable)) 1968 (custom-add-to-group 'vhdl-related 'transient-mark-mode 'custom-variable))
1969(custom-add-to-group 'vhdl-related 'user-full-name 'custom-variable) 1969(custom-add-to-group 'vhdl-related 'user-full-name 'custom-variable)
1970(custom-add-to-group 'vhdl-related 'mail-host-address 'custom-variable)
1971(custom-add-to-group 'vhdl-related 'user-mail-address 'custom-variable) 1970(custom-add-to-group 'vhdl-related 'user-mail-address 'custom-variable)
1972 1971
1973;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1972;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/lisp/replace.el b/lisp/replace.el
index a825040a979..b96c883982e 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -79,15 +79,14 @@ That becomes the \"string to replace\".")
79to the minibuffer that reads the string to replace, or invoke replacements 79to the minibuffer that reads the string to replace, or invoke replacements
80from Isearch by using a key sequence like `C-s C-s M-%'." "24.3") 80from Isearch by using a key sequence like `C-s C-s M-%'." "24.3")
81 81
82(defcustom query-replace-from-to-separator 82(defcustom query-replace-from-to-separator " → "
83 (propertize (if (char-displayable-p ?→) " → " " -> ") 83 "String that separates FROM and TO in the history of replacement pairs.
84 'face 'minibuffer-prompt) 84When nil, the pair will not be added to the history (same behavior
85 "String that separates FROM and TO in the history of replacement pairs." 85as in emacs 24.5)."
86 ;; Avoids error when attempt to autoload char-displayable-p fails
87 ;; while preparing to dump, also stops customize-rogue listing this.
88 :initialize 'custom-initialize-delay
89 :group 'matching 86 :group 'matching
90 :type '(choice string (sexp :tag "Display specification")) 87 :type '(choice
88 (const :tag "Disabled" nil)
89 string)
91 :version "25.1") 90 :version "25.1")
92 91
93(defcustom query-replace-from-history-variable 'query-replace-history 92(defcustom query-replace-from-history-variable 'query-replace-history
@@ -165,14 +164,18 @@ The return value can also be a pair (FROM . TO) indicating that the user
165wants to replace FROM with TO." 164wants to replace FROM with TO."
166 (if query-replace-interactive 165 (if query-replace-interactive
167 (car (if regexp-flag regexp-search-ring search-ring)) 166 (car (if regexp-flag regexp-search-ring search-ring))
168 ;; Reevaluating will check char-displayable-p that is
169 ;; unavailable while preparing to dump.
170 (custom-reevaluate-setting 'query-replace-from-to-separator)
171 (let* ((history-add-new-input nil) 167 (let* ((history-add-new-input nil)
172 (separator 168 (separator
173 (when query-replace-from-to-separator 169 (when query-replace-from-to-separator
174 (propertize "\0" 170 (propertize "\0"
175 'display query-replace-from-to-separator 171 'display
172 (propertize
173 (if (char-displayable-p
174 (string-to-char (replace-regexp-in-string
175 " " "" query-replace-from-to-separator)))
176 query-replace-from-to-separator
177 " -> ")
178 'face 'minibuffer-prompt)
176 'separator t))) 179 'separator t)))
177 (minibuffer-history 180 (minibuffer-history
178 (append 181 (append
@@ -185,9 +188,13 @@ wants to replace FROM with TO."
185 (symbol-value query-replace-from-history-variable))) 188 (symbol-value query-replace-from-history-variable)))
186 (minibuffer-allow-text-properties t) ; separator uses text-properties 189 (minibuffer-allow-text-properties t) ; separator uses text-properties
187 (prompt 190 (prompt
188 (if (and query-replace-defaults separator) 191 (cond ((and query-replace-defaults separator)
189 (format "%s (default %s): " prompt (car minibuffer-history)) 192 (format "%s (default %s): " prompt (car minibuffer-history)))
190 (format "%s: " prompt))) 193 (query-replace-defaults
194 (format "%s (default %s -> %s): " prompt
195 (query-replace-descr (caar query-replace-defaults))
196 (query-replace-descr (cdar query-replace-defaults))))
197 (t (format "%s: " prompt))))
191 (from 198 (from
192 ;; The save-excursion here is in case the user marks and copies 199 ;; The save-excursion here is in case the user marks and copies
193 ;; a region in order to specify the minibuffer input. 200 ;; a region in order to specify the minibuffer input.
@@ -200,8 +207,7 @@ wants to replace FROM with TO."
200 (if regexp-flag 207 (if regexp-flag
201 (read-regexp prompt nil 'minibuffer-history) 208 (read-regexp prompt nil 'minibuffer-history)
202 (read-from-minibuffer 209 (read-from-minibuffer
203 prompt nil nil nil nil 210 prompt nil nil nil nil (car search-ring) t)))))
204 (car (if regexp-flag regexp-search-ring search-ring)) t)))))
205 (to)) 211 (to))
206 (if (and (zerop (length from)) query-replace-defaults) 212 (if (and (zerop (length from)) query-replace-defaults)
207 (cons (caar query-replace-defaults) 213 (cons (caar query-replace-defaults)
diff --git a/lisp/server.el b/lisp/server.el
index 1d26caef89c..209bfaaf701 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -245,10 +245,6 @@ in this way."
245 :type 'boolean 245 :type 'boolean
246 :version "21.1") 246 :version "21.1")
247 247
248;; FIXME? This is not a minor mode; what's the point of this? (See bug#20201)
249(or (assq 'server-buffer-clients minor-mode-alist)
250 (push '(server-buffer-clients " Server") minor-mode-alist))
251
252(defvar server-existing-buffer nil 248(defvar server-existing-buffer nil
253 "Non-nil means the buffer existed before the server was asked to visit it. 249 "Non-nil means the buffer existed before the server was asked to visit it.
254This means that the server should not kill the buffer when you say you 250This means that the server should not kill the buffer when you say you
diff --git a/lisp/simple.el b/lisp/simple.el
index c0dad2d36e7..f110c6f3267 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -6665,7 +6665,7 @@ even beep.)"
6665 ;; whether the trailing whitespace is highlighted. But, it's 6665 ;; whether the trailing whitespace is highlighted. But, it's
6666 ;; OK to just do this unconditionally. 6666 ;; OK to just do this unconditionally.
6667 (skip-chars-forward " \t"))) 6667 (skip-chars-forward " \t")))
6668 (kill-region opoint (if (and kill-whole-line (looking-at "\n")) 6668 (kill-region opoint (if (and kill-whole-line (= (following-char) ?\n))
6669 (1+ (point)) 6669 (1+ (point))
6670 (point))))) 6670 (point)))))
6671 6671
diff --git a/lisp/startup.el b/lisp/startup.el
index 91e7e36dd65..4272708ce9a 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -376,9 +376,8 @@ this variable usefully is to set it while building and dumping Emacs."
376(make-obsolete-variable 'system-name "use (system-name) instead" "25.1") 376(make-obsolete-variable 'system-name "use (system-name) instead" "25.1")
377 377
378(defcustom mail-host-address nil 378(defcustom mail-host-address nil
379 "Name of this machine, for purposes of naming users. 379 "The name of this machine, for use in constructing email addresses.
380If non-nil, Emacs uses this instead of `system-name' when constructing 380If this is nil, Emacs uses `system-name'."
381email addresses."
382 :type '(choice (const nil) string) 381 :type '(choice (const nil) string)
383 :group 'mail) 382 :group 'mail)
384 383
diff --git a/lisp/subr.el b/lisp/subr.el
index a204577ddf9..4f848d1400c 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2875,6 +2875,14 @@ See Info node `(elisp)Security Considerations'."
2875 (replace-regexp-in-string "[^-0-9a-zA-Z_./\n]" "\\\\\\&" argument)))) 2875 (replace-regexp-in-string "[^-0-9a-zA-Z_./\n]" "\\\\\\&" argument))))
2876 )) 2876 ))
2877 2877
2878(defsubst string-to-list (string)
2879 "Return a list of characters in STRING."
2880 (append string nil))
2881
2882(defsubst string-to-vector (string)
2883 "Return a vector of characters in STRING."
2884 (vconcat string))
2885
2878(defun string-or-null-p (object) 2886(defun string-or-null-p (object)
2879 "Return t if OBJECT is a string or nil. 2887 "Return t if OBJECT is a string or nil.
2880Otherwise, return nil." 2888Otherwise, return nil."
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 19746c68e6a..cd86db639ab 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -1190,8 +1190,10 @@ to look up will be substituted there."
1190 "A helper for `css-lookup-symbol' that finds the symbol at point. 1190 "A helper for `css-lookup-symbol' that finds the symbol at point.
1191Returns the symbol, a string, or nil if none found." 1191Returns the symbol, a string, or nil if none found."
1192 (save-excursion 1192 (save-excursion
1193 ;; Skip backward over a word first. 1193 ;; Skip any whitespace between the word and point.
1194 (skip-chars-backward "-[:alnum:] \t") 1194 (skip-chars-backward "- \t")
1195 ;; Skip backward over a word.
1196 (skip-chars-backward "-[:alnum:]")
1195 ;; Now skip ":" or "@" to see if it's a pseudo-element or at-id. 1197 ;; Now skip ":" or "@" to see if it's a pseudo-element or at-id.
1196 (skip-chars-backward "@:") 1198 (skip-chars-backward "@:")
1197 (if (looking-at css--mdn-symbol-regexp) 1199 (if (looking-at css--mdn-symbol-regexp)
diff --git a/lisp/time-stamp.el b/lisp/time-stamp.el
index 20b6c3f83b7..fa7621bcd46 100644
--- a/lisp/time-stamp.el
+++ b/lisp/time-stamp.el
@@ -569,7 +569,7 @@ and all `time-stamp-format' compatibility."
569 ((eq cur-char ?L) ;(undocumented alt user full name) 569 ((eq cur-char ?L) ;(undocumented alt user full name)
570 (user-full-name)) 570 (user-full-name))
571 ((eq cur-char ?h) ;mail host name 571 ((eq cur-char ?h) ;mail host name
572 (time-stamp-mail-host-name)) 572 (or mail-host-address (system-name)))
573 ((eq cur-char ?q) ;(undocumented unqual hostname) 573 ((eq cur-char ?q) ;(undocumented unqual hostname)
574 (let ((qualname (system-name))) 574 (let ((qualname (system-name)))
575 (if (string-match "\\." qualname) 575 (if (string-match "\\." qualname)
@@ -639,17 +639,6 @@ Suggests replacing OLD-FORM with NEW-FORM."
639 (insert "\"" old-form "\" -- use " new-form "\n")) 639 (insert "\"" old-form "\" -- use " new-form "\n"))
640 (display-buffer "*Time-stamp-compatibility*")))) 640 (display-buffer "*Time-stamp-compatibility*"))))
641 641
642
643
644(defun time-stamp-mail-host-name ()
645 "Return the name of the host where the user receives mail.
646This is the value of `mail-host-address' if bound and a string,
647otherwise the value of the function `system-name'."
648 (or (and (boundp 'mail-host-address)
649 (stringp mail-host-address)
650 mail-host-address)
651 (system-name)))
652
653(provide 'time-stamp) 642(provide 'time-stamp)
654 643
655;;; time-stamp.el ends here 644;;; time-stamp.el ends here
diff --git a/lisp/xdg.el b/lisp/xdg.el
index b11e104e2b7..4973065f91a 100644
--- a/lisp/xdg.el
+++ b/lisp/xdg.el
@@ -109,6 +109,12 @@ file:///foo/bar.jpg"
109(defvar xdg-user-dirs nil 109(defvar xdg-user-dirs nil
110 "Alist of directory keys and values.") 110 "Alist of directory keys and values.")
111 111
112(defun xdg--substitute-home-env (str)
113 (if (file-name-absolute-p str) str
114 (save-match-data
115 (and (string-match "^$HOME/" str)
116 (replace-match "~/" t nil str 0)))))
117
112(defun xdg--user-dirs-parse-line () 118(defun xdg--user-dirs-parse-line ()
113 "Return pair of user-dirs key to directory value in LINE, otherwise nil. 119 "Return pair of user-dirs key to directory value in LINE, otherwise nil.
114This should be called at the beginning of a line." 120This should be called at the beginning of a line."
@@ -117,7 +123,7 @@ This should be called at the beginning of a line."
117 (looking-at xdg-line-regexp)) 123 (looking-at xdg-line-regexp))
118 (let ((k (match-string 1)) 124 (let ((k (match-string 1))
119 (v (match-string 2))) 125 (v (match-string 2)))
120 (when (and k v) (cons k v))))) 126 (when (and k v) (cons k (xdg--substitute-home-env v))))))
121 127
122(defun xdg--user-dirs-parse-file (filename) 128(defun xdg--user-dirs-parse-file (filename)
123 "Return alist of xdg-user-dirs from FILENAME." 129 "Return alist of xdg-user-dirs from FILENAME."
@@ -137,7 +143,8 @@ This should be called at the beginning of a line."
137 (setq xdg-user-dirs 143 (setq xdg-user-dirs
138 (xdg--user-dirs-parse-file 144 (xdg--user-dirs-parse-file
139 (expand-file-name "user-dirs.dirs" (xdg-config-home))))) 145 (expand-file-name "user-dirs.dirs" (xdg-config-home)))))
140 (cdr (assoc name xdg-user-dirs))) 146 (let ((dir (cdr (assoc name xdg-user-dirs))))
147 (when dir (expand-file-name dir))))
141 148
142(provide 'xdg) 149(provide 'xdg)
143 150
diff --git a/test/lisp/progmodes/js-tests.el b/test/lisp/progmodes/js-tests.el
index 7cb737c30e2..d61f084e0df 100644
--- a/test/lisp/progmodes/js-tests.el
+++ b/test/lisp/progmodes/js-tests.el
@@ -23,6 +23,7 @@
23 23
24(require 'ert) 24(require 'ert)
25(require 'js) 25(require 'js)
26(require 'syntax)
26 27
27(ert-deftest js-mode-fill-bug-19399 () 28(ert-deftest js-mode-fill-bug-19399 ()
28 (with-temp-buffer 29 (with-temp-buffer
@@ -99,6 +100,22 @@ if (!/[ (:,='\"]/.test(value)) {
99 (forward-line) 100 (forward-line)
100 (should (looking-at " \\* test")))) 101 (should (looking-at " \\* test"))))
101 102
103(ert-deftest js-mode-regexp-syntax-bug-25529 ()
104 (dolist (regexp-contents '("[^[]"
105 "[/]"
106 ;; A comment with the regexp on the next
107 ;; line.
108 "*comment*/\n/regexp"))
109 (with-temp-buffer
110 (js-mode)
111 (insert "let x = /" regexp-contents "/;\n")
112 (save-excursion (insert "something();\n"))
113 ;; The failure mode was that the regexp literal was not
114 ;; recognized, causing the next line to be given string syntax;
115 ;; but check for comment syntax as well to prevent an
116 ;; implementation not recognizing the comment example.
117 (should-not (syntax-ppss-context (syntax-ppss))))))
118
102(provide 'js-tests) 119(provide 'js-tests)
103 120
104;;; js-tests.el ends here 121;;; js-tests.el ends here
diff --git a/test/lisp/textmodes/css-mode-tests.el b/test/lisp/textmodes/css-mode-tests.el
index 5372c37a179..d601f43002a 100644
--- a/test/lisp/textmodes/css-mode-tests.el
+++ b/test/lisp/textmodes/css-mode-tests.el
@@ -226,7 +226,8 @@
226 ("a:v" "isited" ":visited") 226 ("a:v" "isited" ":visited")
227 ("border-" "color: red" "border-color") 227 ("border-" "color: red" "border-color")
228 ("border-color: red" ";" "border-color") 228 ("border-color: red" ";" "border-color")
229 ("border-color: red; color: green" ";" "color"))) 229 ("border-color: red; color: green" ";" "color")
230 (" border-collapse " ": collapse;" "border-collapse")))
230 (with-temp-buffer 231 (with-temp-buffer
231 (css-mode) 232 (css-mode)
232 (insert (nth 0 item)) 233 (insert (nth 0 item))
diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el
index 160d0f106e9..a1b48a643e1 100644
--- a/test/src/fns-tests.el
+++ b/test/src/fns-tests.el
@@ -473,12 +473,12 @@
473 (should (lax-plist-get d2 1)) 473 (should (lax-plist-get d2 1))
474 (should-error (lax-plist-get c1 2) :type 'circular-list) 474 (should-error (lax-plist-get c1 2) :type 'circular-list)
475 (should (lax-plist-get c2 2)) 475 (should (lax-plist-get c2 2))
476 (should-not (lax-plist-get d1 2)) 476 (should-error (lax-plist-get d1 2) :type 'wrong-type-argument)
477 (should (lax-plist-get d2 2)) 477 (should (lax-plist-get d2 2))
478 (should-error (lax-plist-get c1 3) :type 'circular-list) 478 (should-error (lax-plist-get c1 3) :type 'circular-list)
479 (should-error (lax-plist-get c2 3) :type 'circular-list) 479 (should-error (lax-plist-get c2 3) :type 'circular-list)
480 (should-not (lax-plist-get d1 3)) 480 (should-error (lax-plist-get d1 3) :type 'wrong-type-argument)
481 (should-not (lax-plist-get d2 3)))) 481 (should-error (lax-plist-get d2 3) :type 'wrong-type-argument)))
482 482
483(ert-deftest test-cycle-plist-member () 483(ert-deftest test-cycle-plist-member ()
484 (let ((c1 (cyc1 1)) 484 (let ((c1 (cyc1 1))
@@ -509,12 +509,12 @@
509 (should (plist-put d2 1 1)) 509 (should (plist-put d2 1 1))
510 (should-error (plist-put c1 2 2) :type 'circular-list) 510 (should-error (plist-put c1 2 2) :type 'circular-list)
511 (should (plist-put c2 2 2)) 511 (should (plist-put c2 2 2))
512 (should (plist-put d1 2 2)) 512 (should-error (plist-put d1 2 2) :type 'wrong-type-argument)
513 (should (plist-put d2 2 2)) 513 (should (plist-put d2 2 2))
514 (should-error (plist-put c1 3 3) :type 'circular-list) 514 (should-error (plist-put c1 3 3) :type 'circular-list)
515 (should-error (plist-put c2 3 3) :type 'circular-list) 515 (should-error (plist-put c2 3 3) :type 'circular-list)
516 (should (plist-put d1 3 3)) 516 (should-error (plist-put d1 3 3) :type 'wrong-type-argument)
517 (should (plist-put d2 3 3)))) 517 (should-error (plist-put d2 3 3) :type 'wrong-type-argument)))
518 518
519(ert-deftest test-cycle-lax-plist-put () 519(ert-deftest test-cycle-lax-plist-put ()
520 (let ((c1 (cyc1 1)) 520 (let ((c1 (cyc1 1))
@@ -527,12 +527,12 @@
527 (should (lax-plist-put d2 1 1)) 527 (should (lax-plist-put d2 1 1))
528 (should-error (lax-plist-put c1 2 2) :type 'circular-list) 528 (should-error (lax-plist-put c1 2 2) :type 'circular-list)
529 (should (lax-plist-put c2 2 2)) 529 (should (lax-plist-put c2 2 2))
530 (should (lax-plist-put d1 2 2)) 530 (should-error (lax-plist-put d1 2 2) :type 'wrong-type-argument)
531 (should (lax-plist-put d2 2 2)) 531 (should (lax-plist-put d2 2 2))
532 (should-error (lax-plist-put c1 3 3) :type 'circular-list) 532 (should-error (lax-plist-put c1 3 3) :type 'circular-list)
533 (should-error (lax-plist-put c2 3 3) :type 'circular-list) 533 (should-error (lax-plist-put c2 3 3) :type 'circular-list)
534 (should (lax-plist-put d1 3 3)) 534 (should-error (lax-plist-put d1 3 3) :type 'wrong-type-argument)
535 (should (lax-plist-put d2 3 3)))) 535 (should-error (lax-plist-put d2 3 3) :type 'wrong-type-argument)))
536 536
537(ert-deftest test-cycle-equal () 537(ert-deftest test-cycle-equal ()
538 (should-error (equal (cyc1 1) (cyc1 1))) 538 (should-error (equal (cyc1 1) (cyc1 1)))