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

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

[elpa] externals/ssh-deploy 2776f98: * ssh-deploy.el: Use lexical-bindin


From: Stefan Monnier
Subject: [elpa] externals/ssh-deploy 2776f98: * ssh-deploy.el: Use lexical-binding; and various cosmetic changes
Date: Thu, 25 Oct 2018 16:08:48 -0400 (EDT)

branch: externals/ssh-deploy
commit 2776f98dcd68ef607ad364cca2118f9080fe7f98
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>

    * ssh-deploy.el: Use lexical-binding; and various cosmetic changes
    
    Remove redundant :group arguments.
    Use closures rather than backquoted lambdas.
    Fix confused uses of 'boundp' on local variables.
    Turn almost autoload cookies into actual autoload cookies.
    Remove unused variables.
    (ssh-deploy-diff-mode): Don't require.
    (ssh-deploy-menu-map): New var.  Move the menu initialization into it.
    (global-map): Use it.
---
 ssh-deploy.el | 603 +++++++++++++++++++++++++---------------------------------
 1 file changed, 263 insertions(+), 340 deletions(-)

diff --git a/ssh-deploy.el b/ssh-deploy.el
index 4c730a4..c965879 100644
--- a/ssh-deploy.el
+++ b/ssh-deploy.el
@@ -1,4 +1,4 @@
-;;; ssh-deploy.el --- Deployment via TRAMP, global or per directory.
+;;; ssh-deploy.el --- Deployment via TRAMP, global or per directory.  -*- 
lexical-binding:t -*-
 
 ;; Copyright (C) 2017-2018  Free Software Foundation, Inc.
 
@@ -49,37 +49,43 @@
 ;;
 ;; Set permissions to this file to 600 with your user as the owner.
 ;;
-;; - To setup a upload hook on save do this:
-;;     (add-hook 'after-save-hook (lambda() (if (and (boundp 
'ssh-deploy-on-explicit-save) ssh-deploy-on-explicit-save) 
(ssh-deploy-upload-handler)) ))
+;; - To setup an upload hook on save do this:
+;;     (add-hook 'after-save-hook
+;;               (lambda () (if (bound-and-true-p ssh-deploy-on-explicit-save)
+;;                              (ssh-deploy-upload-handler))))
 ;;
 ;; - To setup automatic storing of base revisions and detection of remote 
changes do this:
-;;     (add-hook 'find-file-hook (lambda() (if (and (boundp 
'ssh-deploy-automatically-detect-remote-changes) 
ssh-deploy-automatically-detect-remote-changes) 
(ssh-deploy-remote-changes-handler)) ))
+;;     (add-hook 'find-file-hook
+;;               (lambda ()
+;;                 (if (bound-and-true-p 
ssh-deploy-automatically-detect-remote-changes)
+;;                     (ssh-deploy-remote-changes-handler)) ))
 ;;
 ;; - To set key-bindings do something like this:
-;;     (global-set-key (kbd "C-c C-z f") (lambda() 
(interactive)(ssh-deploy-upload-handler-forced) ))
-;;     (global-set-key (kbd "C-c C-z u") (lambda() 
(interactive)(ssh-deploy-upload-handler) ))
-;;     (global-set-key (kbd "C-c C-z D") (lambda() 
(interactive)(ssh-deploy-delete-handler) ))
-;;     (global-set-key (kbd "C-c C-z d") (lambda() 
(interactive)(ssh-deploy-download-handler) ))
-;;     (global-set-key (kbd "C-c C-z x") (lambda() 
(interactive)(ssh-deploy-diff-handler) ))
-;;     (global-set-key (kbd "C-c C-z t") (lambda() 
(interactive)(ssh-deploy-remote-terminal-eshell-base-handler) ))
-;;     (global-set-key (kbd "C-c C-z T") (lambda() 
(interactive)(ssh-deploy-remote-terminal-eshell-handler) ))
-;;     (global-set-key (kbd "C-c C-z h") (lambda() 
(interactive)(ssh-deploy-remote-terminal-shell-base-handler) ))
-;;     (global-set-key (kbd "C-c C-z H") (lambda() 
(interactive)(ssh-deploy-remote-terminal-shell-handler) ))
-;;     (global-set-key (kbd "C-c C-z R") (lambda() 
(interactive)(ssh-deploy-rename-handler) ))
-;;     (global-set-key (kbd "C-c C-z e") (lambda() 
(interactive)(ssh-deploy-remote-changes-handler) ))
-;;     (global-set-key (kbd "C-c C-z b") (lambda() 
(interactive)(ssh-deploy-browse-remote-base-handler) ))
-;;     (global-set-key (kbd "C-c C-z B") (lambda() 
(interactive)(ssh-deploy-browse-remote-handler) ))
-;;     (global-set-key (kbd "C-c C-z o") (lambda() 
(interactive)(ssh-deploy-open-remote-file-handler) ))
-;;     (global-set-key (kbd "C-c C-z m") (lambda() 
(interactive)(ssh-deploy-remote-sql-mysql-handler) ))
-;;     (global-set-key (kbd "C-c C-z s") (lambda() 
(interactive)(ssh-deploy-run-deploy-script-handler) ))
+;;
+;;     (global-set-key (kbd "C-c C-z f") 'ssh-deploy-upload-handler-forced)
+;;     (global-set-key (kbd "C-c C-z u") 'ssh-deploy-upload-handler)
+;;     (global-set-key (kbd "C-c C-z D") 'ssh-deploy-delete-handler)
+;;     (global-set-key (kbd "C-c C-z d") 'ssh-deploy-download-handler)
+;;     (global-set-key (kbd "C-c C-z x") 'ssh-deploy-diff-handler)
+;;     (global-set-key (kbd "C-c C-z t") 
'ssh-deploy-remote-terminal-eshell-base-handler)
+;;     (global-set-key (kbd "C-c C-z T") 
'ssh-deploy-remote-terminal-eshell-handler)
+;;     (global-set-key (kbd "C-c C-z h") 
'ssh-deploy-remote-terminal-shell-base-handler)
+;;     (global-set-key (kbd "C-c C-z H") 
'ssh-deploy-remote-terminal-shell-handler)
+;;     (global-set-key (kbd "C-c C-z R") 'ssh-deploy-rename-handler)
+;;     (global-set-key (kbd "C-c C-z e") 'ssh-deploy-remote-changes-handler)
+;;     (global-set-key (kbd "C-c C-z b") 
'ssh-deploy-browse-remote-base-handler)
+;;     (global-set-key (kbd "C-c C-z B") 'ssh-deploy-browse-remote-handler)
+;;     (global-set-key (kbd "C-c C-z o") 'ssh-deploy-open-remote-file-handler)
+;;     (global-set-key (kbd "C-c C-z m") 'ssh-deploy-remote-sql-mysql-handler)
+;;     (global-set-key (kbd "C-c C-z s") 'ssh-deploy-run-deploy-script-handler)
 ;;
 ;; - To install and set-up using use-package and hydra do this:
 ;;   (use-package ssh-deploy
 ;;     :ensure t
 ;;     :demand
 ;;     :bind (("C-c C-z" . hydra-ssh-deploy/body))
-;;     :hook ((after-save . (lambda() (if (and (boundp 
'ssh-deploy-on-explicit-save) ssh-deploy-on-explicit-save) 
(ssh-deploy-upload-handler)) ))
-;;            (find-file . (lambda() (if (and (boundp 
'ssh-deploy-automatically-detect-remote-changes) 
ssh-deploy-automatically-detect-remote-changes) 
(ssh-deploy-remote-changes-handler)) )))
+;;     :hook ((after-save . (lambda () (if (bound-and-true-p 
ssh-deploy-on-explicit-save) (ssh-deploy-upload-handler)) ))
+;;            (find-file . (lambda () (if (bound-and-true-p 
ssh-deploy-automatically-detect-remote-changes) 
(ssh-deploy-remote-changes-handler)) )))
 ;;     :config
 ;;     (defhydra hydra-ssh-deploy (:color red :hint nil)
 ;;       "
@@ -112,7 +118,6 @@
 ;;       ("m" ssh-deploy-remote-sql-mysql-handler)
 ;;       ("s" ssh-deploy-run-deploy-script-handler)))
 ;;
-;;
 ;; Here is an example for SSH deployment, 
/Users/Chris/Web/Site1/.dir-locals.el:
 ;; ((nil . (
 ;;   (ssh-deploy-root-local . "/Users/Chris/Web/Site1/")
@@ -162,8 +167,8 @@
 
 ;;; Code:
 
-
-(require 'ssh-deploy-diff-mode) ;; FIXME flycheck complains.. but why?
+(autoload 'ssh-deploy-diff-mode "ssh-deploy-diff-mode"
+  "Major mode for SSH Deploy interactive directory differences.")
 
 (defgroup ssh-deploy nil
   "Upload, download, difference, browse and terminal handler for files and 
directories on remote hosts via TRAMP."
@@ -172,114 +177,98 @@
 
 (defcustom ssh-deploy-root-local nil
   "String variable of local root, nil by default."
-  :type 'string
-  :group 'ssh-deploy)
+  :type 'string)
 (put 'ssh-deploy-root-local 'permanent-local t)
 (put 'ssh-deploy-root-local 'safe-local-variable 'stringp)
 
 (defcustom ssh-deploy-root-remote nil
   "String variable of remote root, nil by default."
-  :type 'string
-  :group 'ssh-deploy)
+  :type 'string)
 (put 'ssh-deploy-root-remote 'permanent-local t)
 (put 'ssh-deploy-root-remote 'safe-local-variable 'stringp)
 
 (defcustom ssh-deploy-on-explicit-save t
   "Boolean variable if deploy should be made on explicit save, t by default."
-  :type 'boolean
-  :group 'ssh-deploy)
+  :type 'boolean)
 (put 'ssh-deploy-on-explicit-save 'permanent-local t)
 (put 'ssh-deploy-on-explicit-save 'safe-local-variable 'booleanp)
 
 (defcustom ssh-deploy-debug nil
   "Boolean variable if debug messages should be shown, nil by default."
-  :type 'boolean
-  :group 'ssh-deploy)
+  :type 'boolean)
 (put 'ssh-deploy-debug 'permanent-local t)
 (put 'ssh-deploy-debug 'safe-local-variable 'booleanp)
 
 ;; TODO This flag needs to work better, you should not miss any useful 
notifications when this is on
 (defcustom ssh-deploy-verbose t
   "Boolean variable if debug messages should be shown, t by default."
-  :type 'boolean
-  :group 'ssh-deploy)
+  :type 'boolean)
 (put 'ssh-deploy-verbose 'permanent-local t)
 (put 'ssh-deploy-verbose 'safe-local-variable 'booleanp)
 
 (defcustom ssh-deploy-async t
   "Boolean variable if asynchronous method for transfers should be used, t by 
default."
-  :type 'boolean
-  :group 'ssh-deploy)
+  :type 'boolean)
 (put 'ssh-deploy-async 'permanent-local t)
 (put 'ssh-deploy-async 'safe-local-variable 'booleanp)
 
 (defcustom ssh-deploy-revision-folder "~/.ssh-deploy-revisions/"
   "String variable with path to revisions with trailing slash."
-  :type 'string
-  :group 'ssh-deploy)
+  :type 'string)
 (put 'ssh-deploy-revision-folder 'permanent-local t)
 (put 'ssh-deploy-revision-folder 'safe-local-variable 'stringp)
 
 (defcustom ssh-deploy-automatically-detect-remote-changes t
   "Detect remote changes and store base revisions automatically, t by default."
-  :type 'boolean
-  :group 'ssh-deploy)
+  :type 'boolean)
 (put 'ssh-deploy-automatically-detect-remote-changes 'permanent-local t)
 (put 'ssh-deploy-automatically-detect-remote-changes 'safe-local-variable 
'booleanp)
 
 (defcustom ssh-deploy-exclude-list '(".git/" ".dir-locals.el")
   "List of strings that if found in paths will exclude paths from sync, 
'(\"/.git\"/' \".dir-locals.el\") by default."
-  :type 'list
-  :group 'ssh-deploy)
+  :type 'list)
 (put 'ssh-deploy-exclude-list 'permanent-local t)
 (put 'ssh-deploy-exclude-list 'safe-local-variable 'listp)
 
 (defcustom ssh-deploy-remote-sql-database nil
   "String variable of remote sql database, nil by default."
-  :type 'string
-  :group 'ssh-deploy)
+  :type 'string)
 (put 'ssh-deploy-remote-sql-database 'permanent-local t)
 (put 'ssh-deploy-remote-sql-database 'safe-local-variable 'stringp)
 
 (defcustom ssh-deploy-remote-sql-password nil
   "String variable of remote sql password, nil by default."
-  :type 'string
-  :group 'ssh-deploy)
+  :type 'string)
 (put 'ssh-deploy-remote-sql-password 'permanent-local t)
 (put 'ssh-deploy-remote-sql-password 'safe-local-variable 'stringp)
 
 (defcustom ssh-deploy-remote-sql-port nil
   "Integer variable of remote sql port, nil by default."
-  :type 'number
-  :group 'ssh-deploy)
+  :type 'number)
 (put 'ssh-deploy-remote-sql-port 'permanent-local t)
 (put 'ssh-deploy-remote-sql-port 'safe-local-variable 'integerp)
 
 (defcustom ssh-deploy-remote-sql-server nil
   "String variable of remote sql server, nil by default."
-  :type 'string
-  :group 'ssh-deploy)
+  :type 'string)
 (put 'ssh-deploy-remote-sql-server 'permanent-local t)
 (put 'ssh-deploy-remote-sql-server 'safe-local-variable 'stringp)
 
 (defcustom ssh-deploy-remote-sql-user nil
   "String variable of remote sql user, nil by default."
-  :type 'string
-  :group 'ssh-deploy)
+  :type 'string)
 (put 'ssh-deploy-remote-sql-user 'permanent-local t)
 (put 'ssh-deploy-remote-sql-user 'safe-local-variable 'stringp)
 
 (defcustom ssh-deploy-remote-shell-executable nil
   "String variable of remote shell executable server, nil by default."
-  :type 'string
-  :group 'ssh-deploy)
+  :type 'string)
 (put 'ssh-deploy-remote-shell-executable 'permanent-local t)
 (put 'ssh-deploy-remote-shell-executable 'safe-local-variable 'stringp)
 
 (defcustom ssh-deploy-script nil
   "Lambda function to run with `funcall' when 
`ssh-deploy-run-deploy-script-handler' is executed."
-  :type 'lambda
-  :group 'ssh-deploy)
+  :type 'lambda)
 (put 'ssh-deploy-script 'permanent-local t)
 (put 'ssh-deploy-script 'safe-local-variable 'functionp)
 
@@ -320,26 +309,14 @@
 (defun ssh-deploy--async-process (start &optional finish)
   "Asynchronously do START and then optionally do FINISH."
   (if (fboundp 'make-thread)
-      (make-thread `(lambda()
-                      (let ((start ,start)
-                            (finish ,finish))
-                        (if (boundp 'start)
-                            (progn
-                              (let ((result (funcall start)))
-                                (if (boundp 'finish)
-                                    (progn
-                                      (funcall finish result)))))))))
+      (make-thread (lambda () (funcall finish (funcall start))))
     (if (fboundp 'async-start)
-        (if (boundp 'start)
-            (if (boundp 'finish)
-                (async-start start finish)
-              (async-start start)))
+        (async-start start finish)
       (display-warning 'ssh-deploy "Neither make-thread nor async-start 
functions are available!"))))
 
 (defun ssh-deploy--mode-line-set-status-and-update (status &optional filename)
   "Set the mode line STATUS in optionally in buffer visiting FILENAME."
-  (if (and (boundp 'filename)
-           filename)
+  (if filename
       (let ((buffer (find-buffer-visiting filename)))
         (when buffer
           (with-current-buffer buffer
@@ -366,8 +343,7 @@
 
 (defun ssh-deploy--mode-line-status-update (&optional status)
   "Update the local status text variable to a text representation based on 
STATUS."
-  (unless (and (boundp 'status)
-               status)
+  (unless status
     ;; (message "SSH Deploy -Resetting status: %s" status)
     (setq status ssh-deploy--status-undefined))
   (let ((status-text ""))
@@ -444,19 +420,19 @@
         (let ((revision-path (ssh-deploy--get-revision-path path-local 
revision-folder)))
           (when ssh-deploy-verbose (message "Uploading file '%s' to '%s'.. 
(asynchronously)" path-local path-remote))
           (ssh-deploy--async-process
-           `(lambda()
-              (require 'ediff-util)
-              (if (fboundp 'ediff-same-file-contents)
-                  (if (or (eq t ,force) (not (file-exists-p ,path-remote)) 
(and (file-exists-p ,revision-path) (ediff-same-file-contents ,revision-path 
,path-remote)))
-                      (progn
-                        (if (not (file-directory-p (file-name-directory 
,path-remote)))
-                            (make-directory (file-name-directory ,path-remote) 
t))
-                        (copy-file ,path-local ,path-remote t t t t)
-                        (copy-file ,path-local ,revision-path t t t t)
-                        (list 0 (format "Completed upload of file '%s'. 
(asynchronously)" ,path-remote) ,path-local))
-                    (list 1 (format "Remote file '%s' has changed, please 
download or diff. (asynchronously)" ,path-remote) ,path-local))
-                (list 1 "Function 'ediff-same-file-contents' is missing. 
(asynchronously)" ,path-local)))
-           (lambda(return)
+           (lambda ()
+             (require 'ediff-util)
+             (if (fboundp 'ediff-same-file-contents)
+                 (if (or (eq t force) (not (file-exists-p path-remote)) (and 
(file-exists-p revision-path) (ediff-same-file-contents revision-path 
path-remote)))
+                     (progn
+                       (if (not (file-directory-p (file-name-directory 
path-remote)))
+                           (make-directory (file-name-directory path-remote) 
t))
+                       (copy-file path-local path-remote t t t t)
+                       (copy-file path-local revision-path t t t t)
+                       (list 0 (format "Completed upload of file '%s'. 
(asynchronously)" path-remote) path-local))
+                   (list 1 (format "Remote file '%s' has changed please 
download or diff. (asynchronously)" path-remote) path-local))
+               (list 1 "Function 'ediff-same-file-contents' is missing. 
(asynchronously)" path-local)))
+           (lambda (return)
              (ssh-deploy--mode-line-set-status-and-update 
ssh-deploy--status-idle (nth 2 return))
              (if (= (nth 0 return) 0)
                  (when ssh-deploy-verbose (message (nth 1 return)))
@@ -464,9 +440,9 @@
       (progn
         (when ssh-deploy-verbose (message "Uploading directory '%s' to '%s'.. 
(asynchronously)" path-local path-remote))
         (ssh-deploy--async-process
-         `(lambda()
-            (copy-directory ,path-local ,path-remote t t t)
-            ,path-local)
+         (lambda ()
+           (copy-directory path-local path-remote t t t)
+           path-local)
          (lambda(return-path)
            (ssh-deploy--mode-line-set-status-and-update 
ssh-deploy--status-idle return-path)
            (when ssh-deploy-verbose (message "Completed upload of directory 
'%s'. (asynchronously)" return-path))))))))
@@ -505,16 +481,16 @@
     (ssh-deploy--mode-line-set-status-and-update 
ssh-deploy--status-downloading path-local)
     (when ssh-deploy-verbose (message "Downloading '%s' to '%s'.. 
(asynchronously)" path-remote path-local))
     (ssh-deploy--async-process
-     `(lambda()
-        (let ((file-or-directory (not (file-directory-p ,path-remote))))
-          (if file-or-directory
-              (progn
-                (if (not (file-directory-p (file-name-directory ,path-local)))
-                    (make-directory (file-name-directory ,path-local) t))
-                (copy-file ,path-remote ,path-local t t t t)
-                (copy-file ,path-local ,revision-path t t t t))
-            (copy-directory ,path-remote ,path-local t t t))
-          ,path-local))
+     (lambda ()
+       (let ((file-or-directory (not (file-directory-p path-remote))))
+         (if file-or-directory
+             (progn
+               (if (not (file-directory-p (file-name-directory path-local)))
+                   (make-directory (file-name-directory path-local) t))
+               (copy-file path-remote path-local t t t t)
+               (copy-file path-local revision-path t t t t))
+           (copy-directory path-remote path-local t t t))
+         path-local))
      (lambda(return-path)
        (ssh-deploy--mode-line-set-status-and-update ssh-deploy--status-idle 
return-path)
        (when ssh-deploy-verbose (message "Completed download of '%s'. 
(asynchronously)" return-path))
@@ -649,8 +625,6 @@
 
 (defun ssh-deploy--diff-directories-present (diff)
   "Present difference data for directories from DIFF."
-  (require 'ssh-deploy-diff-mode)
-
   (let ((buffer (generate-new-buffer "ssh-deploy diff"))
         (old-ssh-deploy-root-local ssh-deploy-root-local)
         (old-ssh-deploy-root-remote ssh-deploy-root-remote)
@@ -720,7 +694,7 @@
 ;; these functions MUST only use module variables as fall-backs for missing 
arguments.
 
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-diff-files (file-a file-b)
   "Find difference between FILE-A and FILE-B."
   (require 'ediff-util)
@@ -732,21 +706,23 @@
           (ediff file-a file-b)))
     (display-warning 'ssh-deploy "Function 'ediff-same-file-contents' is 
missing." :warning)))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-diff-directories (directory-a directory-b &optional 
exclude-list async)
   "Find difference between DIRECTORY-A and DIRECTORY-B but exclude paths 
matching EXCLUDE-LIST, do it asynchronously is ASYNC is true."
-  (if (not (boundp 'async))
-      (setq async ssh-deploy-async))
-  (if (not (boundp 'exclude-list))
-      (setq exclude-list ssh-deploy-exclude-list))
+  ;; FIXME: These next 4 lines don't do anything because the optional args
+  ;; are always "bound" (to nil if the arg was not passed).
+  ;; (if (not (boundp 'async))
+  ;;     (setq async ssh-deploy-async))
+  ;; (if (not (boundp 'exclude-list))
+  ;;     (setq exclude-list ssh-deploy-exclude-list))
   (if async
       (let ((script-filename (file-name-directory (symbol-file 
'ssh-deploy-diff-directories))))
         (message "Calculating differences between directory '%s' and '%s'.. 
(asynchronously)" directory-a directory-b)
         (ssh-deploy--async-process
-         `(lambda()
-            (add-to-list 'load-path ,script-filename)
-            (require 'ssh-deploy)
-            (ssh-deploy--diff-directories-data ,directory-a ,directory-b (list 
,@exclude-list)))
+         (lambda ()
+           (add-to-list 'load-path script-filename)
+           (require 'ssh-deploy)
+           (ssh-deploy--diff-directories-data directory-a directory-b 
exclude-list))
          (lambda(diff)
            (message "Completed calculation of differences between directory 
'%s' and '%s'. Result: %s only in A, %s only in B, %s differs. 
(asynchronously)" (nth 0 diff) (nth 1 diff) (length (nth 4 diff)) (length (nth 
5 diff)) (length (nth 7 diff)))
            (if (or (> (length (nth 4 diff)) 0) (> (length (nth 5 diff)) 0) (> 
(length (nth 7 diff)) 0))
@@ -758,7 +734,7 @@
         (if (or (> (length (nth 4 diff)) 0) (> (length (nth 5 diff)) 0) (> 
(length (nth 7 diff)) 0))
             (ssh-deploy--diff-directories-present diff))))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-remote-changes (path-local &optional root-local root-remote 
async revision-folder exclude-list)
   "Check if a local revision for PATH-LOCAL on ROOT-LOCAL and if remote file 
has changed on ROOT-REMOTE, do it optionally asynchronously if ASYNC is true, 
check for copies in REVISION-FOLDER and skip if path is in EXCLUDE-LIST."
   (let ((root-local (or root-local ssh-deploy-root-local))
@@ -768,7 +744,6 @@
     (if (and (ssh-deploy--file-is-in-path path-local root-local)
              (ssh-deploy--file-is-included path-local exclude-list))
         (let* ((revision-folder (or revision-folder 
ssh-deploy-revision-folder))
-               (exclude-list (or exclude-list ssh-deploy-exclude-list))
                (revision-path (ssh-deploy--get-revision-path path-local 
revision-folder))
                (path-remote (concat root-remote (ssh-deploy--get-relative-path 
root-local path-local))))
 
@@ -788,20 +763,20 @@
 
                           ;; Asynchronous logic here
                           (ssh-deploy--async-process
-                           `(lambda()
-                              (if (file-exists-p ,path-remote)
-                                  (progn
-                                    (require 'ediff-util)
-                                    (if (fboundp 'ediff-same-file-contents)
-                                        (if (ediff-same-file-contents 
,revision-path ,path-remote)
-                                            (list 0 (format "Remote file '%s' 
has not changed. (asynchronously)" ,path-remote) ,path-local)
-                                          (if (ediff-same-file-contents 
,path-local ,path-remote)
-                                              (progn
-                                                (copy-file ,path-local 
,revision-path t t t t)
-                                                (list 0 (format "Remote file 
'%s' is identical to local file '%s' but different to local revision. Updated 
local revision. (asynchronously)" ,path-remote ,path-local) ,path-local))
-                                            (list 1 (format "Remote file '%s' 
has changed, please download or diff. (asynchronously)" ,path-remote) 
,path-local)))
-                                      (list 1 "Function 
'ediff-same-file-contents' is missing. (asynchronously)" ,path-local)))
-                                (list 0 (format "Remote file '%s' doesn't 
exist. (asynchronously)" ,path-remote) ,path-local)))
+                           (lambda()
+                             (if (file-exists-p path-remote)
+                                 (progn
+                                   (require 'ediff-util)
+                                   (if (fboundp 'ediff-same-file-contents)
+                                       (if (ediff-same-file-contents 
revision-path path-remote)
+                                           (list 0 (format "Remote file '%s' 
has not changed. (asynchronously)" path-remote) path-local)
+                                         (if (ediff-same-file-contents 
path-local path-remote)
+                                             (progn
+                                               (copy-file path-local 
revision-path t t t t)
+                                               (list 0 (format "Remote file 
'%s' is identical to local file '%s' but different to local revision. Updated 
local revision. (asynchronously)" path-remote path-local) path-local))
+                                           (list 1 (format "Remote file '%s' 
has changed, please download or diff. (asynchronously)" path-remote) 
path-local)))
+                                     (list 1 "Function 
'ediff-same-file-contents' is missing. (asynchronously)" path-local)))
+                               (list 0 (format "Remote file '%s' doesn't 
exist. (asynchronously)" path-remote) path-local)))
                            (lambda(return)
 
                              ;; Update buffer status to idle
@@ -840,20 +815,19 @@
 
                         ;; Asynchronous logic here
                         (ssh-deploy--async-process
-                         `(lambda()
-
-                            ;; Does remote file exist?
-                            (if (file-exists-p ,path-remote)
-                                (progn
-                                  (require 'ediff-util)
-                                  (if (fboundp 'ediff-same-file-contents)
-                                      (if (ediff-same-file-contents 
,path-local ,path-remote)
-                                          (progn
-                                            (copy-file ,path-local 
,revision-path t t t t)
-                                            (list 0 (format "Remote file '%s' 
has not changed, created base revision. (asynchronously)" ,path-remote) 
,path-local))
-                                        (list 1 (format "Remote file '%s' has 
changed, please download or diff. (asynchronously)" ,path-remote) ,path-local))
-                                    (list 1 "Function ediff-file-same-contents 
is missing. (asynchronously)" ,path-local)))
-                              (list 0 (format "Remote file '%s' doesn't exist. 
(asynchronously)" ,path-remote) ,path-local)))
+                         (lambda ()
+                           ;; Does remote file exist?
+                           (if (file-exists-p path-remote)
+                               (progn
+                                 (require 'ediff-util)
+                                 (if (fboundp 'ediff-same-file-contents)
+                                     (if (ediff-same-file-contents path-local 
path-remote)
+                                         (progn
+                                           (copy-file path-local revision-path 
t t t t)
+                                           (list 0 (format "Remote file '%s' 
has not changed, created base revision. (asynchronously)" path-remote) 
path-local))
+                                       (list 1 (format "Remote file '%s' has 
changed, please download or diff. (asynchronously)" path-remote) path-local))
+                                   (list 1 "Function ediff-file-same-contents 
is missing. (asynchronously)" path-local)))
+                             (list 0 (format "Remote file '%s' doesn't exist. 
(asynchronously)" path-remote) path-local)))
                          (lambda(return)
 
                            ;; Update buffer status to idle
@@ -891,23 +865,22 @@
       ;; File is not inside root or is excluded from it
       (when ssh-deploy-debug (message "File %s is not in root or is excluded 
from it." path-local)))))
 
-(defun ssh-deploy-delete (path &optional async debug buffer)
+(defun ssh-deploy-delete (path &optional async _debug buffer)
   "Delete PATH and use flags ASYNC and DEBUG, set status in BUFFER."
   (if async
       (progn
-        (when (and (boundp 'buffer)
-                   buffer)
+        (when buffer
           (ssh-deploy--mode-line-set-status-and-update 
ssh-deploy--status-deleting buffer))
         (ssh-deploy--async-process
-         `(lambda()
-            (if (file-exists-p ,path)
-                (let ((file-or-directory (not (file-directory-p ,path))))
-                  (progn
-                    (if file-or-directory
-                        (delete-file ,path t)
-                      (delete-directory ,path t t))
-                    (list ,path 0 ,buffer)))
-              (list ,path 1 ,buffer)))
+         (lambda ()
+           (if (file-exists-p path)
+               (let ((file-or-directory (not (file-directory-p path))))
+                 (progn
+                   (if file-or-directory
+                       (delete-file path t)
+                     (delete-directory path t t))
+                   (list path 0 buffer)))
+             (list path 1 buffer)))
          (lambda(response)
            (when (nth 2 response)
              (ssh-deploy--mode-line-set-status-and-update 
ssh-deploy--status-idle (nth 2 response))
@@ -919,15 +892,13 @@
     (if (file-exists-p path)
         (ssh-deploy--mode-line-set-status-and-update 
ssh-deploy--status-deleting buffer)
       (let ((file-or-directory (not (file-directory-p path))))
-        (when (and (boundp 'buffer)
-                   buffer)
+        (when buffer
           (ssh-deploy--mode-line-set-status-and-update 
ssh-deploy--status-deleting buffer))
         (progn
           (if file-or-directory
               (delete-file path t)
             (delete-directory path t t))
-          (when (and (boundp 'buffer)
-                     buffer)
+          (when buffer
             (ssh-deploy--mode-line-set-status-and-update 
ssh-deploy--status-idle buffer)
             (let ((local-buffer (find-buffer-visiting buffer)))
               (when local-buffer
@@ -935,36 +906,34 @@
           (message "Completed deletion of '%s'. (synchronously)" path)))
       (display-warning 'ssh-deploy (format "Did not find '%s' for deletion. 
(synchronously)" path) :warning))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-delete-both (path-local &optional root-local root-remote 
async debug exclude-list)
   "Delete PATH-LOCAL relative to ROOT-LOCAL as well as on ROOT-REMOTE, do it 
asynchronously if ASYNC is non-nil, debug if DEBUG is non-nil, check if path is 
excluded in EXCLUDE-LIST."
   (let ((root-local (or root-local ssh-deploy-root-local))
         (root-remote (or root-remote ssh-deploy-root-remote)))
     (if (and (ssh-deploy--file-is-in-path path-local root-local)
              (ssh-deploy--file-is-included path-local exclude-list))
-        (let ((exclude-list (or exclude-list ssh-deploy-exclude-list))
-              (file-or-directory (not (file-directory-p path-local)))
-              (path-remote (concat root-remote (ssh-deploy--get-relative-path 
root-local path-local))))
+        ;; FIXME: Why `concat' instead of `expand-file-name'?
+        (let ((path-remote (concat root-remote (ssh-deploy--get-relative-path 
root-local path-local))))
           (ssh-deploy-delete path-local async debug path-local)
           (ssh-deploy-delete path-remote async debug path-local))
       (when debug (message "Path '%s' is not in the root '%s' or is excluded 
from it." path-local root-local)))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-rename (old-path-local new-path-local &optional root-local 
root-remote async debug exclude-list)
   "Rename OLD-PATH-LOCAL to NEW-PATH-LOCAL under ROOT-LOCAL as well as on 
ROOT-REMOTE, do it asynchronously if ASYNC is non-nil, debug if DEBUG is 
non-nil but check if path is excluded in EXCLUDE-LIST first."
-  (if (not (boundp 'debug))
-      (setq debug ssh-deploy-debug))
-  (if (not (boundp 'async))
-      (setq async ssh-deploy-async))
+  ;; FIXME: Next 4 lines don't do anything!
+  ;; (if (not (boundp 'debug))
+  ;;     (setq debug ssh-deploy-debug))
+  ;; (if (not (boundp 'async))
+  ;;     (setq async ssh-deploy-async))
   (let ((root-local (or root-local ssh-deploy-root-local))
         (root-remote (or root-remote ssh-deploy-root-remote)))
     (if (and (ssh-deploy--file-is-in-path old-path-local root-local)
              (ssh-deploy--file-is-in-path new-path-local root-local)
              (ssh-deploy--file-is-included old-path-local exclude-list)
              (ssh-deploy--file-is-included new-path-local exclude-list))
-        (let ((exclude-list (or exclude-list ssh-deploy-exclude-list))
-              (file-or-directory (not (file-directory-p old-path-local)))
-              (old-path-remote (concat root-remote 
(ssh-deploy--get-relative-path root-local old-path-local)))
+        (let ((old-path-remote (concat root-remote 
(ssh-deploy--get-relative-path root-local old-path-local)))
               (new-path-remote (concat root-remote 
(ssh-deploy--get-relative-path root-local new-path-local))))
           (ssh-deploy--mode-line-set-status-and-update 
ssh-deploy--status-renaming)
           (rename-file old-path-local new-path-local t)
@@ -977,9 +946,9 @@
           (message "Renamed '%s' to '%s'." old-path-local new-path-local)
           (if async
               (ssh-deploy--async-process
-               `(lambda()
-                  (rename-file ,old-path-remote ,new-path-remote t)
-                  (list ,old-path-remote ,new-path-remote ,new-path-local))
+               (lambda ()
+                 (rename-file old-path-remote new-path-remote t)
+                 (list old-path-remote new-path-remote new-path-local))
                (lambda(files)
                  (ssh-deploy--mode-line-set-status-and-update 
ssh-deploy--status-idle (nth 2 files))
                  (message "Renamed '%s' to '%s'. (asynchronously)" (nth 0 
files) (nth 1 files))))
@@ -990,7 +959,7 @@
       (if debug
           (message "Path '%s' or '%s' is not in the root '%s' or is excluded 
from it." old-path-local new-path-local root-local)))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-remote-sql (remote-path &optional type)
   "Open remote sql on REMOTE-PATH, TYPE determines type and defaults to mysql."
   (let ((sql-type (or type "mysql"))
@@ -1014,7 +983,7 @@
           ((string= sql-type "postgres") (sql-postgres remote-path))
           (t (display-warning 'ssh-deploy (format "SQL type %s not supported" 
type) :warning)))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-browse-remote (path-local &optional root-local root-remote 
exclude-list)
   "Browse PATH-LOCAL in `dired-mode' on remote where it is inside ROOT-LOCAL 
and mirrored on ROOT-REMOTE and not in EXCLUDE-LIST."
   (let ((exclude-list (or exclude-list ssh-deploy-exclude-list))
@@ -1026,7 +995,7 @@
           (message "Opening '%s' for browsing on remote host.." path-remote)
           (dired path-remote)))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-remote-terminal-eshell (path-local &optional root-local 
root-remote exclude-list)
   "Browse PATH-LOCAL inside ROOT-LOCAL on ROOT-REMOTE in `eshell-mode' if not 
in EXCLUDE-LIST."
   (let ((exclude-list (or exclude-list ssh-deploy-exclude-list))
@@ -1035,15 +1004,14 @@
     (when (and (ssh-deploy--file-is-in-path path-local root-local)
                (ssh-deploy--file-is-included path-local exclude-list))
       (let ((path-remote (concat root-remote (ssh-deploy--get-relative-path 
root-local path-local))))
-        (let ((old-directory default-directory))
-          (require 'eshell)
-          (message "Opening eshell on '%s'.." path-remote)
-          (let ((default-directory path-remote))
-            (defvar eshell-buffer-name)
-            (setq eshell-buffer-name path-remote)
-            (eshell)))))))
-
-;;;### autoload
+        (require 'eshell)
+        (message "Opening eshell on '%s'.." path-remote)
+        (let ((default-directory path-remote))
+          (defvar eshell-buffer-name)
+          (setq eshell-buffer-name path-remote)
+          (eshell))))))
+
+;;;###autoload
 (defun ssh-deploy-remote-terminal-shell (path-local &optional root-local 
root-remote exclude-list)
   "Browse PATH-LOCAL inside ROOT-LOCAL on ROOT-REMOTE in `eshell-mode' if not 
in EXCLUDE-LIST."
   (let ((exclude-list (or exclude-list ssh-deploy-exclude-list))
@@ -1052,14 +1020,14 @@
     (when (and (ssh-deploy--file-is-in-path path-local root-local)
                (ssh-deploy--file-is-included path-local exclude-list))
       (let ((path-remote (concat root-remote (ssh-deploy--get-relative-path 
root-local path-local))))
-        (let ((old-directory default-directory))
-          (require 'shell)
-          (message "Opening eshell on '%s'.." path-remote)
-          (let ((default-directory path-remote)
-                (explicit-shell-file-name ssh-deploy-remote-shell-executable))
-            (shell path-remote)))))))
-
-;;;### autoload
+        (require 'shell)
+        (defvar explicit-shell-file-name)
+        (message "Opening eshell on '%s'.." path-remote)
+        (let ((default-directory path-remote)
+              (explicit-shell-file-name ssh-deploy-remote-shell-executable))
+          (shell path-remote))))))
+
+;;;###autoload
 (defun ssh-deploy-store-revision (path &optional root)
   "Store PATH in revision-folder ROOT."
   (if (not (file-directory-p path))
@@ -1068,17 +1036,18 @@
         (when ssh-deploy-verbose (message "Storing revision of '%s' at '%s'.." 
path revision-path))
         (copy-file path revision-path t t t t))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-diff (path-local path-remote &optional root-local debug 
exclude-list async)
   "Find differences between PATH-LOCAL and PATH-REMOTE, where PATH-LOCAL is 
inside ROOT-LOCAL.  DEBUG enables feedback message, check if PATH-LOCAL is not 
in EXCLUDE-LIST.   ASYNC make the process work asynchronously."
   (let ((file-or-directory (not (file-directory-p path-local)))
         (exclude-list (or exclude-list ssh-deploy-exclude-list)))
-    (if (not (boundp 'root-local))
-        (setq root-local ssh-deploy-root-local))
-    (if (not (boundp 'debug))
-        (setq debug ssh-deploy-debug))
-    (if (not (boundp 'async))
-        (setq async ssh-deploy-async))
+    ;; FIXME: next 6 lines don't do anything!
+    ;; (if (not (boundp 'root-local))
+    ;;     (setq root-local ssh-deploy-root-local))
+    ;; (if (not (boundp 'debug))
+    ;;     (setq debug ssh-deploy-debug))
+    ;; (if (not (boundp 'async))
+    ;;     (setq async ssh-deploy-async))
     (if (and (ssh-deploy--file-is-in-path path-local root-local)
              (ssh-deploy--file-is-included path-local exclude-list))
         (if file-or-directory
@@ -1086,23 +1055,25 @@
           (ssh-deploy-diff-directories path-local path-remote exclude-list 
async))
       (when debug (message "Path '%s' is not in the root '%s' or is excluded 
from it." path-local root-local)))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-upload (path-local path-remote &optional force async 
revision-folder)
   "Upload PATH-LOCAL to PATH-REMOTE and ROOT-LOCAL via TRAMP, FORCE uploads 
despite remote change, ASYNC determines if transfer should be asynchronously, 
check version in REVISION-FOLDER."
-  (if (not (boundp 'async))
-      (setq async ssh-deploy-async))
-  (if (not (boundp 'force))
-      (setq force nil))
+  ;; FIXME: Next 4 lines don't do anything!
+  ;; (if (not (boundp 'async))
+  ;;     (setq async ssh-deploy-async))
+  ;; (if (not (boundp 'force))
+  ;;     (setq force nil))
   (let ((revision-folder (or revision-folder ssh-deploy-revision-folder)))
     (if async
         (ssh-deploy--upload-via-tramp-async path-local path-remote force 
revision-folder)
       (ssh-deploy--upload-via-tramp path-local path-remote force 
revision-folder))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-download (path-remote path-local &optional async 
revision-folder)
   "Download PATH-REMOTE to PATH-LOCAL via TRAMP, ASYNC determines if transfer 
should be asynchrous or not, check for revisions in REVISION-FOLDER."
-  (if (not (boundp 'async))
-      (setq async ssh-deploy-async))
+  ;; FIXME: Next 2 lines don't do anything!
+  ;; (if (not (boundp 'async))
+  ;;     (setq async ssh-deploy-async))
   (let ((revision-folder (or revision-folder ssh-deploy-revision-folder)))
     (if async
         (ssh-deploy--download-via-tramp-async path-remote path-local 
revision-folder)
@@ -1115,7 +1086,7 @@
 ;; these functions MUST depend on module variables.
 
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-upload-handler (&optional force)
   "Upload current path to remote if it is configured for deployment and if 
remote version hasn't changed or FORCE is specified."
   (interactive)
@@ -1123,8 +1094,9 @@
            (ssh-deploy--is-not-empty-string ssh-deploy-root-remote))
       (let ((root-local (file-truename ssh-deploy-root-local))
             path-local)
-        (if (not (boundp 'force))
-            (setq force nil))
+        ;; FIXME: Next 2 lines don't do anything!
+        ;; (if (not (boundp 'force))
+        ;;     (setq force nil))
         (if (and (ssh-deploy--is-not-empty-string buffer-file-name)
                  (file-exists-p buffer-file-name))
             (setq path-local (file-truename buffer-file-name))
@@ -1138,13 +1110,13 @@
               (ssh-deploy-upload path-local path-remote force ssh-deploy-async 
ssh-deploy-revision-folder))
           (when ssh-deploy-debug (message "Ignoring upload, path '%s' is 
empty, not in the root '%s' or is excluded from it." path-local root-local))))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-upload-handler-forced ()
   "Upload current path to remote host if it is configured for deployment."
   (interactive)
   (ssh-deploy-upload-handler t))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-remote-changes-handler()
   "Check if local revision exists or remote file has changed if path is 
configured for deployment."
   (interactive)
@@ -1156,7 +1128,7 @@
         (ssh-deploy-remote-changes (file-truename buffer-file-name) 
(file-truename ssh-deploy-root-local) ssh-deploy-root-remote ssh-deploy-async 
ssh-deploy-revision-folder ssh-deploy-exclude-list))
     (when ssh-deploy-debug (message "Ignoring remote-changes check since a 
root is empty or the current buffer lacks a file-name."))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-remote-sql-mysql-handler()
   "Open `sql-mysql' on remote path if path is configured for deployment."
   (interactive)
@@ -1169,7 +1141,7 @@
   (when (ssh-deploy--is-not-empty-string ssh-deploy-root-remote)
     (ssh-deploy-remote-sql ssh-deploy-root-remote "postgres")))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-open-remote-file-handler()
   "Check if local revision exists or remote file has changed if path is 
configured for deployment."
   (interactive)
@@ -1182,7 +1154,7 @@
         (when ssh-deploy-verbose (message "Opening file on remote '%s'" 
path-remote))
         (find-file path-remote))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-download-handler ()
   "Download current path from remote if it is configured for deployment."
   (interactive)
@@ -1203,7 +1175,7 @@
               (ssh-deploy-download path-remote path-local ssh-deploy-async 
ssh-deploy-revision-folder))
           (when ssh-deploy-debug (message "Ignoring upload, path '%s' is 
empty, not in the root '%s' or is excluded from it." path-local root-local))))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-diff-handler ()
   "Compare current path with remote host if it is configured for deployment."
   (interactive)
@@ -1222,7 +1194,7 @@
                    (path-remote (concat ssh-deploy-root-remote 
(ssh-deploy--get-relative-path root-local path-local))))
               (ssh-deploy-diff path-local path-remote root-local 
ssh-deploy-debug ssh-deploy-exclude-list ssh-deploy-async))))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-delete-handler ()
   "Delete current file or directory."
   (interactive)
@@ -1243,7 +1215,7 @@
               (if (string= yes-no-prompt "yes")
                   (ssh-deploy-delete-both path-local root-local 
ssh-deploy-root-remote ssh-deploy-async ssh-deploy-debug 
ssh-deploy-exclude-list)))))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-rename-handler ()
   "Rename current file or directory."
   (interactive)
@@ -1268,7 +1240,7 @@
               (if (not (string= old-path-local new-path-local))
                   (ssh-deploy-rename old-path-local new-path-local root-local 
ssh-deploy-root-remote ssh-deploy-async ssh-deploy-debug 
ssh-deploy-exclude-list)))))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-remote-terminal-eshell-handler ()
   "Open current relative path on remote host in `eshell' but only if it's 
configured for deployment."
   (interactive)
@@ -1279,7 +1251,7 @@
             (root-local (file-truename ssh-deploy-root-local)))
         (ssh-deploy-remote-terminal-eshell path-local root-local 
ssh-deploy-root-remote ssh-deploy-exclude-list))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-remote-terminal-eshell-base-handler ()
   "Open base path on remote host in `eshell' but only if it's configured for 
deployment."
   (interactive)
@@ -1288,7 +1260,7 @@
       (let ((root-local (file-truename ssh-deploy-root-local)))
         (ssh-deploy-remote-terminal-eshell root-local root-local 
ssh-deploy-root-remote ssh-deploy-exclude-list))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-remote-terminal-shell-handler ()
   "Open current relative path on remote host in `eshell' but only if it's 
configured for deployment."
   (interactive)
@@ -1299,7 +1271,7 @@
             (root-local (file-truename ssh-deploy-root-local)))
         (ssh-deploy-remote-terminal-shell path-local root-local 
ssh-deploy-root-remote ssh-deploy-exclude-list))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-remote-terminal-shell-base-handler ()
   "Open base path on remote host in `eshell' but only if it's configured for 
deployment."
   (interactive)
@@ -1308,7 +1280,7 @@
       (let ((root-local (file-truename ssh-deploy-root-local)))
         (ssh-deploy-remote-terminal-shell root-local root-local 
ssh-deploy-root-remote ssh-deploy-exclude-list))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-browse-remote-handler ()
   "Open current relative path on remote host in `dired-mode' if it is 
configured for deployment."
   (interactive)
@@ -1319,7 +1291,7 @@
             (root-local (file-truename ssh-deploy-root-local)))
         (ssh-deploy-browse-remote path-local root-local ssh-deploy-root-remote 
ssh-deploy-exclude-list))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-browse-remote-base-handler ()
   "Open base path on remote host in `dired-mode' if it is configured for 
deployment."
   (interactive)
@@ -1328,26 +1300,28 @@
       (let ((root-local (file-truename ssh-deploy-root-local)))
         (ssh-deploy-browse-remote root-local root-local ssh-deploy-root-remote 
ssh-deploy-exclude-list))))
 
-;;;### autoload
+;;;###autoload
 (defun ssh-deploy-run-deploy-script-handler ()
   "Run `ssh-deploy-script' with `funcall'."
   (interactive)
-  (if (and (boundp 'ssh-deploy-script)
-           ssh-deploy-script)
+  (if ssh-deploy-script
       (if ssh-deploy-async
           (progn
             (message "Executing of deployment-script starting... 
(asynchronously)")
             (ssh-deploy--async-process
-             `(lambda()
-                (let ((ssh-deploy-root-local ,ssh-deploy-root-local)
-                      (ssh-deploy-root-remote ,ssh-deploy-root-remote))
-                  (funcall ,ssh-deploy-script)))
+             (let ((local ssh-deploy-root-local)
+                   (remote ssh-deploy-root-remote)
+                   (script ssh-deploy-script))
+               (lambda ()
+                 (let ((ssh-deploy-root-local local)
+                       (ssh-deploy-root-remote remote))
+                   (funcall script))))
              (lambda(result) (message "Completed execution of 
deployment-script. '%s'(asynchronously)" result))))
         (progn
           (message "Executing of deployment-script starting... 
(synchronously)")
           (funcall ssh-deploy-script)
           (message "Completed execution of deployment-script. 
(synchronously)")))
-    (display-warning 'ssh-deploy (format "ssh-deploy-script lacks definition!" 
type) :warning)))
+    (display-warning 'ssh-deploy (format "ssh-deploy-script lacks 
definition!") :warning)))
 
 
 ;;; Menu-bar
@@ -1356,128 +1330,77 @@
 ;; This is particularly useful when key-bindings are not working because of 
some mode
 ;; overriding them.
 
+(defvar ssh-deploy-menu-map
+  (let ((map (make-sparse-keymap "Menu for SSH Deploy")))
+    (define-key map [pq]
+      '("PostgreSQL" . ssh-deploy-remote-sql-postgres-handler))
+    (define-key map [mq]
+      '("MySQL" . ssh-deploy-remote-sql-mysql-handler))
+    (define-key map [sep1] '("--"))
+
+    (define-key map [sb]
+      '("Shell Base" . ssh-deploy-remote-terminal-shell-base-handler))
+    (define-key map [ss]
+      '("Shell" . ssh-deploy-remote-terminal-shell-handler))
+    (define-key map [sep2] '("--"))
+
+    (define-key map [eb]
+      '("Eshell Base" . ssh-deploy-remote-terminal-eshell-base-handler))
+    (define-key map [es]
+      '("Eshell" . ssh-deploy-remote-terminal-eshell-handler))
+    (define-key map [sep3]
+      '("--"))
+
+    (define-key map [bb]
+      '("Browse Base" . ssh-deploy-browse-remote-base-handler))
+    (define-key map [br]
+      '("Browse" . ssh-deploy-browse-remote-handler))
+    (define-key map [sep4] '("--"))
+
+    (define-key map [df]
+      '("Difference" . ssh-deploy-diff-handler))
+    (define-key map [rc]
+      '("Detect Remote Changes" . ssh-deploy-remote-changes-handler))
+    (define-key map [sep5] '("--"))
+
+    (define-key map [de]
+      '("Delete" . ssh-deploy-delete-handler))
+    (define-key map [rn]
+      '("Rename" . ssh-deploy-rename-handler))
+    (define-key map [op]
+      '("Open" . ssh-deploy-open-remote-file-handler))
+    (define-key map [sep6] '("--"))
+
+    (define-key map [sc]
+      '("Run script" . ssh-deploy-run-deploy-script-handler))
+    (define-key map [sep7] '("--"))
+
+    (define-key map [ulf]
+      '("Forced Upload" . ssh-deploy-upload-handler-forced))
+    (define-key map [ul]
+      '("Upload" . ssh-deploy-upload-handler))
+    (define-key map [dl]
+      '("Download" . ssh-deploy-download-handler))
+    map))
+
 (define-key-after
   global-map
   [menu-bar sshdeploy]
-  (cons "Deployment" (make-sparse-keymap "Menu for SSH Deploy"))
+  (cons "Deployment" ssh-deploy-menu-map)
   'tools)
 
-(define-key
-  global-map
-  [menu-bar sshdeploy pq]
-  '("PostgreSQL" . ssh-deploy-remote-sql-postgres-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy mq]
-  '("MySQL" . ssh-deploy-remote-sql-mysql-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy sep1]
-  '("--"))
-
-(define-key
-  global-map
-  [menu-bar sshdeploy sb]
-  '("Shell Base" . ssh-deploy-remote-terminal-shell-base-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy ss]
-  '("Shell" . ssh-deploy-remote-terminal-shell-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy sep2]
-  '("--"))
-
-(define-key
-  global-map
-  [menu-bar sshdeploy eb]
-  '("Eshell Base" . ssh-deploy-remote-terminal-eshell-base-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy es]
-  '("Eshell" . ssh-deploy-remote-terminal-eshell-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy sep3]
-  '("--"))
-
-(define-key
-  global-map
-  [menu-bar sshdeploy bb]
-  '("Browse Base" . ssh-deploy-browse-remote-base-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy br]
-  '("Browse" . ssh-deploy-browse-remote-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy sep4]
-  '("--"))
-
-(define-key
-  global-map
-  [menu-bar sshdeploy df]
-  '("Difference" . ssh-deploy-diff-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy rc]
-  '("Detect Remote Changes" . ssh-deploy-remote-changes-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy sep5]
-  '("--"))
-
-(define-key
-  global-map
-  [menu-bar sshdeploy de]
-  '("Delete" . ssh-deploy-delete-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy rn]
-  '("Rename" . ssh-deploy-rename-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy op]
-  '("Open" . ssh-deploy-open-remote-file-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy sep6]
-  '("--"))
-
-(define-key
-  global-map
-  [menu-bar sshdeploy sc]
-  '("Run script" . ssh-deploy-run-deploy-script-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy sep7]
-  '("--"))
-
-(define-key
-  global-map
-  [menu-bar sshdeploy ulf]
-  '("Forced Upload" . ssh-deploy-upload-handler-forced))
-(define-key
-  global-map
-  [menu-bar sshdeploy ul]
-  '("Upload" . ssh-deploy-upload-handler))
-(define-key
-  global-map
-  [menu-bar sshdeploy dl]
-  '("Download" . ssh-deploy-download-handler))
-
-
 ;;; Mode Line
 
 
 (define-minor-mode ssh-deploy-line-mode
   "Show SSH Deploy status in mode line"
   :global t
-  :group 'ssh-deploy
   (add-to-list 'global-mode-string 'ssh-deploy--mode-line-status-text t))
 (ssh-deploy--mode-line-status-refresh)
 
 ;; Start mode line by default
+;; FIXME: By convention, loading  an Elisp file should not affect
+;; Emacs's behavior!
 (ssh-deploy-line-mode)
 
 



reply via email to

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