emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/git-commit 4512a3f0d0 1/4: magit-utils: Implement `with-co


From: ELPA Syncer
Subject: [nongnu] elpa/git-commit 4512a3f0d0 1/4: magit-utils: Implement `with-connection-local-variables' kludge
Date: Wed, 5 Jan 2022 23:58:09 -0500 (EST)

branch: elpa/git-commit
commit 4512a3f0d0b4bc9fc3d711d9acda82c56d03a475
Author: Andrey Smirnov <andrew.smirnov@gmail.com>
Commit: Kyle Meyer <kyle@kyleam.com>

    magit-utils: Implement `with-connection-local-variables' kludge
    
    In order to be able to use `with-connection-local-variables' in Emacs
    25 and 26, implement a kludge that provides minimum functionality
    required by Magit.
    
    Modified-by: Kyle Meyer <kyle@kyleam.com>
      Cosmetic tweaks to docstring whitespace.
---
 lisp/magit-utils.el | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/lisp/magit-utils.el b/lisp/magit-utils.el
index 75b4393c32..29730dead0 100644
--- a/lisp/magit-utils.el
+++ b/lisp/magit-utils.el
@@ -1198,6 +1198,31 @@ See 
<https://github.com/raxod502/straight.el/issues/520>."
         (setq filename target))))
   (file-chase-links filename))
 
+;;; Kludges for older Emacs versions
+
+(if (fboundp 'with-connection-local-variables)
+    (defalias 'magit--with-connection-local-variables
+      'with-connection-local-variables)
+  (defmacro magit--with-connection-local-variables (&rest body)
+    "Abridged `with-connection-local-variables' for pre Emacs 27 compatibility.
+Bind shell file name and switch for remote execution.
+`with-connection-local-variables' isn't available until Emacs 27.
+This kludge provides the minimal functionality required by
+Magit."
+    `(if (file-remote-p default-directory)
+         (let* ((vec (tramp-dissect-file-name default-directory))
+                (shell-file-name (tramp-get-method-parameter
+                                  vec
+                                  'tramp-remote-shell))
+                (shell-command-switch (mapconcat
+                                       #'identity
+                                       (tramp-get-method-parameter
+                                        vec
+                                        'tramp-remote-shell-args)
+                                       " ")))
+           (progn ,@body))
+       ,@body)))
+
 ;;; Miscellaneous
 
 (defun magit-message (format-string &rest args)



reply via email to

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