From ae7460d4559f39809a748eb483ca70917424c50f Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sat, 26 Dec 2009 11:24:07 +0000 Subject: [PATCH] dot/emacs, el/dot-emacs.el: Fix `tramp-methods' some more. The change to the format of `tramp-login-args' is only in 2.1 and later, it seems. So conditionally twiddle the arguments appropriately, depending on the version we find. Because Tramp only provides its version number as a string, this involves adding a new function to order such strings. Sneakily allow an empty hostname as a replacement for localhost, and use `become' or `really' or whatever. --- dot/emacs | 14 ++++++++------ el/dot-emacs.el | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/dot/emacs b/dot/emacs index 2a7796a..9067aa8 100644 --- a/dot/emacs +++ b/dot/emacs @@ -513,7 +513,8 @@ ;;; Rootly editingness. (eval-after-load "tramp" - '(progn + '(let ((fix-args (if (mdw-version-< tramp-version "2.1") + #'append #'identity))) (setq tramp-methods (mdw-uniquify-alist `(("become" @@ -523,13 +524,14 @@ (tramp-copy-program nil) (tramp-copy-args nil) (tramp-copy-keep-date-arg nil) - (tramp-login-args (("TERM=dumb" "%u")))) + (tramp-login-args ,(funcall fix-args `("TERM=dumb" "%u")))) ("really" (tramp-connection-function tramp-open-connection-su) (tramp-login-program "really") - (tramp-login-args (("-u" "%u") - ("--") - ("env" "TERM=dumb" "/bin/sh"))) + (tramp-login-args ,(funcall fix-args + `("-u" "%u") + `("--") + `("env" "TERM=dumb" "/bin/sh"))) (tramp-copy-program nil) (tramp-copy-args nil) (tramp-copy-keep-date-arg nil) @@ -537,7 +539,7 @@ ,@tramp-methods))) (setq tramp-default-method "ssh") (setq tramp-default-method-alist - `(("\\`localhost\\'" "" + `(("\\`\\(localhost\\|\\)\\'" "" ,(cond ((executable-find "become") "become") ((executable-find "really") "really") (t "su"))))))) diff --git a/el/dot-emacs.el b/el/dot-emacs.el index 4969f29..f3d57e5 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -418,6 +418,21 @@ in REST." (insert "\nNP: ") (insert-file-contents np-file))))) +(defun mdw-version-< (ver-a ver-b) + "Answer whether VER-A is strictly earlier than VER-B. +VER-A and VER-B are version numbers, which are strings containing digit +sequences separated by `.'." + (let* ((la (mapcar (lambda (x) (car (read-from-string x))) + (split-string ver-a "\\."))) + (lb (mapcar (lambda (x) (car (read-from-string x))) + (split-string ver-b "\\.")))) + (catch 'done + (while t + (cond ((null la) (throw 'done lb)) + ((null lb) (throw 'done nil)) + ((< (car la) (car lb)) (throw 'done t)) + ((= (car la) (car lb)) (setq la (cdr la) lb (cdr lb)))))))) + (defun mdw-check-autorevert () "Sets global-auto-revert-ignore-buffer appropriately for this buffer. This takes into consideration whether it's been found using -- 2.11.0