]> git.eshelyaron.com Git - emacs.git/commitdiff
Use ntake in Tramp
authorMichael Albinus <michael.albinus@gmx.de>
Mon, 18 Jul 2022 13:47:28 +0000 (15:47 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Mon, 18 Jul 2022 13:47:28 +0000 (15:47 +0200)
* lisp/net/tramp-compat.el (tramp-compat-ntake): New defalias.

* lisp/net/tramp.el (tramp-handle-directory-files):
* lisp/net/tramp-crypt.el (tramp-crypt-handle-directory-files):
* lisp/net/tramp-sh.el (tramp-sh-handle-directory-files-and-attributes):
* lisp/net/tramp-smb.el (tramp-smb-handle-directory-files): Use it.

lisp/net/tramp-compat.el
lisp/net/tramp-crypt.el
lisp/net/tramp-sh.el
lisp/net/tramp-smb.el
lisp/net/tramp.el

index a12e4859ac45d49a9e005c9a71476fc9d3132611..1286255c89898e6b38f8dd45f3ade4f93cd95546 100644 (file)
@@ -294,6 +294,15 @@ CONDITION can also be a list of error conditions."
           (setq secret (funcall secret)))
        secret))))
 
+;; Function `ntake' is new in Emacs 29.1.
+(defalias 'tramp-compat-ntake
+  (if (fboundp 'ntake)
+      #'ntake
+    (lambda (n list)
+      (when (and (natnump n) (> n 0))
+       (if (>= n (length list))
+           list (nbutlast list (- (length list) n)))))))
+
 (dolist (elt (all-completions "tramp-compat-" obarray 'functionp))
   (put (intern elt) 'tramp-suppress-trace t))
 
index 6cb1237a0f4ed83a5f0be125264da47b69738a9f..f45c303ab12b70c55239f3d21a8404afec744fd6 100644 (file)
@@ -730,7 +730,7 @@ absolute file names."
       (unless nosort
         (setq result (sort result #'string<)))
       (when (and (natnump count) (> count 0))
-       (setq result (nbutlast result (- (length result) count))))
+       (setq result (tramp-compat-ntake count result)))
       result)))
 
 (defun tramp-crypt-handle-file-attributes (filename &optional id-format)
index 174fde720e4ae3d4e37a3e6c23c0e41d9ee770cc..e772af9e0a178cded66e73fa37c4d9dceaa6c9aa 100644 (file)
@@ -1718,7 +1718,7 @@ ID-FORMAT valid values are `string' and `integer'."
        (setq result (sort result (lambda (x y) (string< (car x) (car y))))))
 
       (when (and (natnump count) (> count 0))
-       (setq result (nbutlast result (- (length result) count))))
+       (setq result (tramp-compat-ntake count result)))
 
       (or result
          ;; The scripts could fail, for example with huge file size.
index b717c4dcc389309140e7654f01e7caacb7037857..5789b8f9474ac8f18e6d4d83c29a44b34f1df1f8 100644 (file)
@@ -726,7 +726,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
 
     ;; Return count number of results.
     (when (and (natnump count) (> count 0))
-      (setq result (nbutlast result (- (length result) count))))
+      (setq result (tramp-compat-ntake count result)))
 
     ;; Prepend directory.
     (when full
index 0198aacf15a5148dccfdfa05e2038289401e1d9a..da2fa4c5acd16e4d2c6a5cccc4bc6d721a7de86f 100644 (file)
@@ -3623,7 +3623,7 @@ Let-bind it when necessary.")
       (unless nosort
         (setq result (sort result #'string<)))
       (when (and (natnump count) (> count 0))
-       (setq result (nbutlast result (- (length result) count))))
+       (setq result (tramp-compat-ntake count result)))
       result)))
 
 (defun tramp-handle-directory-files-and-attributes