Mercurial > emacs
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', |