emacs-diffs
[Top][All Lists]
Advanced

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

feature/android 4ea40db8236: Merge remote-tracking branch 'origin/master


From: Po Lu
Subject: feature/android 4ea40db8236: Merge remote-tracking branch 'origin/master' into feature/android
Date: Thu, 27 Apr 2023 20:06:36 -0400 (EDT)

branch: feature/android
commit 4ea40db8236c26d382ee1418d0d35b683070d11e
Merge: ab10d1f6634 dbd74657908
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Merge remote-tracking branch 'origin/master' into feature/android
---
 doc/lispref/lists.texi                 | 10 +++++++++-
 lisp/emacs-lisp/byte-opt.el            | 11 ++++++++++-
 lisp/net/tramp-gvfs.el                 | 11 ++++++-----
 lisp/net/tramp.el                      |  1 +
 test/lisp/emacs-lisp/bytecomp-tests.el | 10 ++++++++++
 5 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index a509325854f..22a5f7f1239 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -1224,7 +1224,15 @@ x
 @end example
 
 However, the other arguments (all but the last) should be mutable
-lists.
+lists.  They can be dotted lists, whose last @sc{cdr}s are then
+replaced with the next argument:
+
+@example
+@group
+(nconc (cons 1 2) (cons 3 (cons 4 5)) 'z)
+     @result{} (1 3 4 . z)
+@end group
+@end example
 
 A common pitfall is to use a constant list as a non-last argument to
 @code{nconc}.  If you do this, the resulting behavior is undefined
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index da997212eef..0f7a3cb2665 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -1531,7 +1531,16 @@ See Info node `(elisp) Integer Basics'."
                    (prev (car newargs)))
                (cond
                 ;; Elide null args.
-                ((null arg) (loop (cdr args) newargs))
+                ((and (null arg)
+                      ;; Don't elide a terminal nil unless preceded by
+                      ;; a nonempty proper list, since that will have
+                      ;; its last cdr forced to nil.
+                      (or (cdr args)
+                          ;; FIXME: prove the 'nonempty proper list' property
+                          ;; for more forms than just `list', such as
+                          ;; `append', `mapcar' etc.
+                          (eq 'list (car-safe (car newargs)))))
+                 (loop (cdr args) newargs))
                 ;; Merge consecutive `list' args.
                 ((and (eq (car-safe arg) 'list)
                       (eq (car-safe prev) 'list))
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index ad7b1ff054c..859f4870b80 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -2183,11 +2183,12 @@ connection if a previous connection has died for some 
reason."
   ;; Sanity check.
   (let ((method (tramp-file-name-method vec)))
     (unless (member
-            (or (rassoc method '(("smb" . "smb-share")
-                                 ("davs" . "dav")
-                                 ("nextcloud" . "dav")
-                                 ("afp". "afp-volume")
-                                 ("gdrive" . "google-drive")))
+            (or (assoc-default
+                 method '(("smb" . "smb-share")
+                          ("davs" . "dav")
+                          ("nextcloud" . "dav")
+                          ("afp". "afp-volume")
+                          ("gdrive" . "google-drive")))
                 method)
             tramp-gvfs-mounttypes)
       (tramp-error vec 'file-error "Method `%s' not supported by GVFS" 
method)))
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 81473404f0c..ca95b6b6971 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1349,6 +1349,7 @@ let-bind this variable."
 ;; IRIX64: /usr/bin
 ;; QNAP QTS: ---
 ;; Hydra: /run/current-system/sw/bin:/bin:/usr/bin
+;;;###tramp-autoload
 (defcustom tramp-remote-path
   '(tramp-default-remote-path "/bin" "/usr/bin" "/sbin" "/usr/sbin"
     "/usr/local/bin" "/usr/local/sbin" "/local/bin" "/local/freeware/bin"
diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el 
b/test/lisp/emacs-lisp/bytecomp-tests.el
index 9ade47331df..222065c2e4e 100644
--- a/test/lisp/emacs-lisp/bytecomp-tests.el
+++ b/test/lisp/emacs-lisp/bytecomp-tests.el
@@ -766,6 +766,16 @@ inner loops respectively."
                         ((eq x 2) (setq y 'c)))
                   (list x y)))))
       (mapcar fn (bytecomp-test-identity '(0 1 2 3 10 11))))
+
+    ;; `nconc' nil arg elimination
+    (nconc (list 1 2 3 4) nil)
+    (nconc (list 1 2 3 4) nil nil)
+    (let ((x (cons 1 (cons 2 (cons 3 4)))))
+      (nconc x nil))
+    (let ((x (cons 1 (cons 2 (cons 3 4)))))
+      (nconc x nil nil))
+    (let ((x (cons 1 (cons 2 (cons 3 4)))))
+      (nconc nil x nil (list 5 6) nil))
     )
   "List of expressions for cross-testing interpreted and compiled code.")
 



reply via email to

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