comparison lisp/net/tramp-imap.el @ 110264:ec526909f60b

Migrate to Tramp 2.2. Rearrange load dependencies. (Bug#1529, Bug#5448, Bug#5705) * Makefile.in (TRAMP_DIR, TRAMP_SRC): New variables. ($(TRAMP_DIR)/tramp-loaddefs.el): New target. (LOADDEFS): Add $(lisp)/net/tramp-loaddefs.el. * net/tramp.el (top): Remove all other tramp-* loads except tramp-compat.el. Remove all changes to tramp-unload-hook for other tramp-* packages. Rearrange defun order. Change calls of `tramp-compat-call-process', `tramp-compat-decimal-to-octal', `tramp-compat-octal-to-decimal' to new function names. (tramp-terminal-type, tramp-initial-end-of-output) (tramp-methods, tramp-foreign-file-name-handler-alist) (tramp-tramp-file-p, tramp-completion-mode-p) (tramp-send-command-and-check, tramp-get-remote-path) (tramp-get-remote-tmpdir, tramp-get-remote-ln) (tramp-shell-quote-argument): Set tramp-autoload cookie. (with-file-property, with-connection-property): Move to tramp-cache.el. (tramp-local-call-process, tramp-decimal-to-octal) (tramp-octal-to-decimal): Move to tramp-compat.el. (tramp-handle-shell-command): Do not require 'shell. (tramp-compute-multi-hops): No special handling for tramp-gw-* symbols. (tramp-unload-tramp): Do not call `tramp-unload-file-name-handlers'. * net/tramp-cache.el (top): Require 'tramp. Add to `tramp-unload-hook'. (tramp-cache-data, tramp-get-file-property) (tramp-set-file-property, tramp-flush-file-property) (tramp-flush-directory-property, tramp-get-connection-property) (tramp-set-connection-property, tramp-flush-connection-property) (tramp-cache-print, tramp-list-connections): Set tramp-autoload cookie. (with-file-property, with-connection-property): New defuns, moved from tramp.el. (tramp-flush-file-function): Use `with-parsed-tramp-file-name' macro. * net/tramp-cmds.el (top): Add to `tramp-unload-hook'. (tramp-version): Set tramp-autoload cookie. * net/tramp-compat.el (top): Require 'tramp-loaddefs. Remove all changes to tramp-unload-hook for other tramp-* packages. Add to `tramp-unload-hook'. (tramp-compat-decimal-to-octal, tramp-compat-octal-to-decimal) (tramp-compat-call-process): New defuns, moved from tramp.el. * net/tramp-fish.el (top) Require just 'tramp. Add objects to `tramp-methods' and `tramp-foreign-file-name-handler-alist'. Add to `tramp-unload-hook'. Change call of `tramp-compat-decimal-to-octal' to new function name. (tramp-fish-method): Make it a defconst. (tramp-fish-file-name-p): Make it a defsubst. (tramp-fish-method, tramp-fish-file-name-handler) (tramp-fish-file-name-p): Set tramp-autoload cookie. * net/tramp-ftp.el (top) Add objects to `tramp-methods' and `tramp-foreign-file-name-handler-alist'. Add to `tramp-unload-hook'. (tramp-ftp-method): Make it a defconst. (tramp-ftp-file-name-p): Make it a defsubst. (tramp-ftp-method, tramp-ftp-file-name-handler) (tramp-ftp-file-name-p): Set tramp-autoload cookie. * net/tramp-gvfs.el (top) Add objects to `tramp-methods' and `tramp-foreign-file-name-handler-alist'. Add to `tramp-unload-hook'. Change checks, whether package can be loaded. (tramp-gvfs-file-name-p): Make it a defsubst. (tramp-gvfs-methods, tramp-gvfs-file-name-handler) (tramp-gvfs-file-name-p): Set tramp-autoload cookie. (tramp-gvfs-handle-file-directory-p): New defun. (tramp-gvfs-file-name-handler-alist): Use it. * net/tramp-gw.el (top) Add objects to `tramp-methods' and `tramp-foreign-file-name-handler-alist'. Add to `tramp-unload-hook'. (tramp-gw-tunnel-method, tramp-gw-default-tunnel-port) (tramp-gw-socks-method, tramp-gw-default-socks-port): Make it a defconst. (tramp-gw-tunnel-method, tramp-gw-socks-method) (tramp-gw-open-connection): Set tramp-autoload cookie. * net/tramp-imap.el (top) Require just 'tramp. Add objects to `tramp-methods' and `tramp-foreign-file-name-handler-alist'. Add to `tramp-unload-hook'. Change checks, whether package can be loaded. (tramp-imap-file-name-p): Make it a defsubst. (tramp-imap-method, tramp-imaps-method) (tramp-imap-file-name-handler) (tramp-imap-file-name-p): Set tramp-autoload cookie. * net/tramp-smb.el (top) Require just 'tramp. Add objects to `tramp-methods' and `tramp-foreign-file-name-handler-alist'. Add to `tramp-unload-hook'. Change checks, whether package can be loaded. Change call of `tramp-compat-decimal-to-octal' to new function name. (tramp-smb-tunnel-method): Make it a defconst. (tramp-smb-file-name-p): Make it a defsubst. (tramp-smb-method, tramp-smb-file-name-handler) (tramp-smb-file-name-p): Set tramp-autoload cookie. * net/tramp-uu.el (top) Add to `tramp-unload-hook'. (tramp-uuencode-region): Set tramp-autoload cookie. * net/trampver.el (top) Add to `tramp-unload-hook'. (tramp-version, tramp-bug-report-address): Set tramp-autoload cookie. Update release number.
author Michael Albinus <michael.albinus@gmx.de>
date Wed, 08 Sep 2010 16:42:54 +0200
parents 280c8ae2476d
children 073caec7510f
comparison
equal deleted inserted replaced
110263:280c5216180d 110264:ec526909f60b
53 53
54 ;;; Code: 54 ;;; Code:
55 55
56 (require 'assoc) 56 (require 'assoc)
57 (require 'tramp) 57 (require 'tramp)
58 (require 'tramp-compat)
59 58
60 (autoload 'auth-source-user-or-password "auth-source") 59 (autoload 'auth-source-user-or-password "auth-source")
61 (autoload 'epg-context-operation "epg") 60 (autoload 'epg-context-operation "epg")
62 (autoload 'epg-context-set-armor "epg") 61 (autoload 'epg-context-set-armor "epg")
63 (autoload 'epg-context-set-passphrase-callback "epg") 62 (autoload 'epg-context-set-passphrase-callback "epg")
74 ;; We use the additional header "X-Size" for encoding the size of a file. 73 ;; We use the additional header "X-Size" for encoding the size of a file.
75 (eval-after-load "imap-hash" 74 (eval-after-load "imap-hash"
76 '(add-to-list 'imap-hash-headers 'X-Size 'append)) 75 '(add-to-list 'imap-hash-headers 'X-Size 'append))
77 76
78 ;; Define Tramp IMAP method ... 77 ;; Define Tramp IMAP method ...
78 ;;;###tramp-autoload
79 (defconst tramp-imap-method "imap" 79 (defconst tramp-imap-method "imap"
80 "*Method to connect via IMAP protocol.") 80 "*Method to connect via IMAP protocol.")
81 81
82 (add-to-list 'tramp-methods (list tramp-imap-method '(tramp-default-port 143))) 82 ;;;###tramp-autoload
83 (when (and (locate-library "epa") (locate-library "imap-hash"))
84 (add-to-list 'tramp-methods
85 (list tramp-imap-method '(tramp-default-port 143))))
83 86
84 ;; Add a default for `tramp-default-user-alist'. Default is the local user. 87 ;; Add a default for `tramp-default-user-alist'. Default is the local user.
85 (add-to-list 'tramp-default-user-alist 88 (add-to-list 'tramp-default-user-alist
86 `(,tramp-imap-method nil ,(user-login-name))) 89 `(,tramp-imap-method nil ,(user-login-name)))
87 90
88 ;; Define Tramp IMAPS method ... 91 ;; Define Tramp IMAPS method ...
92 ;;;###tramp-autoload
89 (defconst tramp-imaps-method "imaps" 93 (defconst tramp-imaps-method "imaps"
90 "*Method to connect via secure IMAP protocol.") 94 "*Method to connect via secure IMAP protocol.")
91 95
92 ;; ... and add it to the method list. 96 ;; ... and add it to the method list.
93 (add-to-list 'tramp-methods (list tramp-imaps-method '(tramp-default-port 993))) 97 ;;;###tramp-autoload
98 (when (and (locate-library "epa") (locate-library "imap-hash"))
99 (add-to-list 'tramp-methods
100 (list tramp-imaps-method '(tramp-default-port 993))))
94 101
95 ;; Add a default for `tramp-default-user-alist'. Default is the local user. 102 ;; Add a default for `tramp-default-user-alist'. Default is the local user.
96 (add-to-list 'tramp-default-user-alist 103 (add-to-list 'tramp-default-user-alist
97 `(,tramp-imaps-method nil ,(user-login-name))) 104 `(,tramp-imaps-method nil ,(user-login-name)))
98 105
182 189
183 ;; TODO: these will be defcustoms later. 190 ;; TODO: these will be defcustoms later.
184 (defvar tramp-imap-passphrase-cache nil) ;; can be t or 'never 191 (defvar tramp-imap-passphrase-cache nil) ;; can be t or 'never
185 (defvar tramp-imap-passphrase nil) 192 (defvar tramp-imap-passphrase nil)
186 193
187 (defun tramp-imap-file-name-p (filename) 194 ;;;###tramp-autoload
195 (defsubst tramp-imap-file-name-p (filename)
188 "Check if it's a filename for IMAP protocol." 196 "Check if it's a filename for IMAP protocol."
189 (let ((v (tramp-dissect-file-name filename))) 197 (let ((v (tramp-dissect-file-name filename)))
190 (or 198 (or
191 (string= (tramp-file-name-method v) tramp-imap-method) 199 (string= (tramp-file-name-method v) tramp-imap-method)
192 (string= (tramp-file-name-method v) tramp-imaps-method)))) 200 (string= (tramp-file-name-method v) tramp-imaps-method))))
193 201
202 ;;;###tramp-autoload
194 (defun tramp-imap-file-name-handler (operation &rest args) 203 (defun tramp-imap-file-name-handler (operation &rest args)
195 "Invoke the IMAP related OPERATION. 204 "Invoke the IMAP related OPERATION.
196 First arg specifies the OPERATION, second arg is a list of arguments to 205 First arg specifies the OPERATION, second arg is a list of arguments to
197 pass to the OPERATION." 206 pass to the OPERATION."
198 (let ((fn (assoc operation tramp-imap-file-name-handler-alist))) 207 (let ((fn (assoc operation tramp-imap-file-name-handler-alist)))
199 (if fn 208 (if fn
200 (save-match-data (apply (cdr fn) args)) 209 (save-match-data (apply (cdr fn) args))
201 (tramp-run-real-handler operation args)))) 210 (tramp-run-real-handler operation args))))
202 211
203 (add-to-list 'tramp-foreign-file-name-handler-alist 212 ;;;###tramp-autoload
204 (cons 'tramp-imap-file-name-p 'tramp-imap-file-name-handler)) 213 (when (and (locate-library "epa") (locate-library "imap-hash"))
214 (add-to-list 'tramp-foreign-file-name-handler-alist
215 (cons 'tramp-imap-file-name-p 'tramp-imap-file-name-handler)))
205 216
206 (defun tramp-imap-handle-copy-file 217 (defun tramp-imap-handle-copy-file
207 (filename newname &optional ok-if-already-exists keep-date 218 (filename newname &optional ok-if-already-exists keep-date
208 preserve-uid-gid preserve-selinux-context) 219 preserve-uid-gid preserve-selinux-context)
209 "Like `copy-file' for Tramp files." 220 "Like `copy-file' for Tramp files."
773 (plist-put 784 (plist-put
774 result 785 result
775 :test (format "^%s%s" 786 :test (format "^%s%s"
776 tramp-imap-subject-marker 787 tramp-imap-subject-marker
777 (if needed-subject needed-subject ""))))) 788 (if needed-subject needed-subject "")))))
789
790 (add-hook 'tramp-unload-hook
791 (lambda ()
792 (unload-feature 'tramp-imap 'force)))
778 793
779 ;;; TODO: 794 ;;; TODO:
780 795
781 ;; * Implement `tramp-imap-handle-delete-directory', 796 ;; * Implement `tramp-imap-handle-delete-directory',
782 ;; `tramp-imap-handle-make-directory', 797 ;; `tramp-imap-handle-make-directory',