[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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/ssh-deploy 2776f98: * ssh-deploy.el: Use lexical-binding; and various cosmetic changes,
Stefan Monnier <=