summaryrefslogtreecommitdiff
path: root/lisp/net/tramp-compat.el
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2022-08-14 17:01:25 +0200
committerMichael Albinus <michael.albinus@gmx.de>2022-08-14 17:01:25 +0200
commit1d3fe256907d5e78a4acedd194e55db8ab952952 (patch)
tree4a689321f706eba2f8afb8635158f1f0c2d5de9c /lisp/net/tramp-compat.el
parent9d526179359350b8051698d102a75a60dfbf239a (diff)
downloademacs-1d3fe256907d5e78a4acedd194e55db8ab952952.tar.gz
emacs-1d3fe256907d5e78a4acedd194e55db8ab952952.tar.bz2
emacs-1d3fe256907d5e78a4acedd194e55db8ab952952.zip
Tramp code cleanup
* lisp/net/tramp-adb.el (tramp-adb-handle-directory-files-and-attributes): Use it. * lisp/net/tramp-compat.el (tramp-compat-replace-regexp-in-region): New defalias. * lisp/net/tramp-crypt.el (tramp-crypt-do-encrypt-or-decrypt-file-name): Fix root filename for cache. * lisp/net/tramp-gvfs.el (tramp-gvfs-do-copy-or-rename-file): Adapt check for proper remote command. * lisp/net/tramp-sh.el (tramp-open-shell): Add sanity check for shell prompt. (tramp-get-ls-command): Check, that argument "--color=never" has the intended effect.
Diffstat (limited to 'lisp/net/tramp-compat.el')
-rw-r--r--lisp/net/tramp-compat.el23
1 files changed, 23 insertions, 0 deletions
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index b83f9f0724e..203d3ede98f 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -330,6 +330,29 @@ CONDITION can also be a list of error conditions."
(autoload 'netrc-parse "netrc")
(netrc-parse file))))
+;; Function `replace-regexp-in-region' is new in Emacs 28.1.
+(defalias 'tramp-compat-replace-regexp-in-region
+ (if (fboundp 'replace-regexp-in-region)
+ #'replace-regexp-in-region
+ (lambda (regexp replacement &optional start end)
+ (if start
+ (when (< start (point-min))
+ (error "Start before start of buffer"))
+ (setq start (point)))
+ (if end
+ (when (> end (point-max))
+ (error "End after end of buffer"))
+ (setq end (point-max)))
+ (save-excursion
+ (let ((matches 0)
+ (case-fold-search nil))
+ (goto-char start)
+ (while (re-search-forward regexp end t)
+ (replace-match replacement t)
+ (setq matches (1+ matches)))
+ (and (not (zerop matches))
+ matches))))))
+
(dolist (elt (all-completions "tramp-compat-" obarray 'functionp))
(put (intern elt) 'tramp-suppress-trace t))