Mercurial > emacs
annotate lisp/net/tramp-imap.el @ 110223:109e3a627792
gnus-start.el (gnus-get-unread-articles): Fix up the last commit.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Mon, 06 Sep 2010 00:48:40 +0000 |
parents | 280c8ae2476d |
children | ec526909f60b |
rev | line source |
---|---|
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
1 ;;; tramp-imap.el --- Tramp interface to IMAP through imap.el |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
2 |
106815 | 3 ;; Copyright (C) 2009, 2010 Free Software Foundation, Inc. |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
4 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
5 ;; Author: Teodor Zlatanov <tzz@lifelogs.com> |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
6 ;; Keywords: mail, comm |
110015
280c8ae2476d
Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents:
108816
diff
changeset
|
7 ;; Package: tramp |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
8 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
9 ;; This file is part of GNU Emacs. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
10 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
12 ;; it under the terms of the GNU General Public License as published by |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
13 ;; the Free Software Foundation, either version 3 of the License, or |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
14 ;; (at your option) any later version. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
15 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
16 ;; GNU Emacs is distributed in the hope that it will be useful, |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
19 ;; GNU General Public License for more details. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
20 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
21 ;; You should have received a copy of the GNU General Public License |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
23 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
24 ;;; Commentary: |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
25 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
26 ;; Package to provide Tramp over IMAP |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
27 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
28 ;;; Setup: |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
29 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
30 ;; just load and open files, e.g. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
31 ;; /imaps:user@yourhosthere.com:/INBOX.test/1 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
32 ;; or |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
33 ;; /imap:user@yourhosthere.com:/INBOX.test/1 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
34 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
35 ;; where `imap' goes over IMAP, while `imaps' goes over IMAP+SSL |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
36 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
37 ;; This module will use imap-hash.el to access the IMAP mailbox. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
38 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
39 ;; This module will use auth-source.el to authenticate against the |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
40 ;; IMAP server, PLUS it will use auth-source.el to get your passphrase |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
41 ;; for the symmetrically encrypted messages. For the former, use the |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
42 ;; usual IMAP ports. For the latter, use the port "tramp-imap". |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
43 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
44 ;; example .authinfo / .netrc file: |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
45 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
46 ;; machine yourhosthere.com port tramp-imap login USER password SYMMETRIC-PASSPHRASE |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
47 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
48 ;; note above is the symmetric encryption passphrase for GPG |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
49 ;; below is the regular password for IMAP itself and other things on that host |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
50 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
51 ;; machine yourhosthere.com login USER password NORMAL-PASSWORD |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
52 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
53 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
54 ;;; Code: |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
55 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
56 (require 'assoc) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
57 (require 'tramp) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
58 (require 'tramp-compat) |
106954
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
59 |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
60 (autoload 'auth-source-user-or-password "auth-source") |
106954
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
61 (autoload 'epg-context-operation "epg") |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
62 (autoload 'epg-context-set-armor "epg") |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
63 (autoload 'epg-context-set-passphrase-callback "epg") |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
64 (autoload 'epg-context-set-progress-callback "epg") |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
65 (autoload 'epg-decrypt-string "epg") |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
66 (autoload 'epg-encrypt-string "epg") |
108377
7827d5a5c826
* net/tramp-compat.el (byte-compile-not-obsolete-vars): Define if
Michael Albinus <albinus@detlef>
parents:
108244
diff
changeset
|
67 (autoload 'epg-make-context "epg") |
106954
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
68 (autoload 'imap-hash-get "imap-hash") |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
69 (autoload 'imap-hash-make "imap-hash") |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
70 (autoload 'imap-hash-map "imap-hash") |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
71 (autoload 'imap-hash-put "imap-hash") |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
72 (autoload 'imap-hash-rem "imap-hash") |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
73 |
105779
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
74 ;; We use the additional header "X-Size" for encoding the size of a file. |
106954
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
75 (eval-after-load "imap-hash" |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
76 '(add-to-list 'imap-hash-headers 'X-Size 'append)) |
105779
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
77 |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
78 ;; Define Tramp IMAP method ... |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
79 (defconst tramp-imap-method "imap" |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
80 "*Method to connect via IMAP protocol.") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
81 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
82 (add-to-list 'tramp-methods (list tramp-imap-method '(tramp-default-port 143))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
83 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
84 ;; Add a default for `tramp-default-user-alist'. Default is the local user. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
85 (add-to-list 'tramp-default-user-alist |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
86 `(,tramp-imap-method nil ,(user-login-name))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
87 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
88 ;; Define Tramp IMAPS method ... |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
89 (defconst tramp-imaps-method "imaps" |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
90 "*Method to connect via secure IMAP protocol.") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
91 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
92 ;; ... and add it to the method list. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
93 (add-to-list 'tramp-methods (list tramp-imaps-method '(tramp-default-port 993))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
94 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
95 ;; Add a default for `tramp-default-user-alist'. Default is the local user. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
96 (add-to-list 'tramp-default-user-alist |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
97 `(,tramp-imaps-method nil ,(user-login-name))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
98 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
99 ;; Add completion function for IMAP method. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
100 ;; (tramp-set-completion-function |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
101 ;; tramp-imap-method tramp-completion-function-alist-ssh) ; TODO: test this |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
102 ;; tramp-imaps-method tramp-completion-function-alist-ssh) ; TODO: test this |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
103 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
104 ;; New handlers should be added here. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
105 (defconst tramp-imap-file-name-handler-alist |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
106 '( |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
107 ;; `access-file' performed by default handler |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
108 (add-name-to-file . ignore) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
109 ;; `byte-compiler-base-file-name' performed by default handler |
105766
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
110 ;; `copy-directory' performed by default handler |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
111 (copy-file . tramp-imap-handle-copy-file) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
112 (delete-directory . ignore) ;; tramp-imap-handle-delete-directory) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
113 (delete-file . tramp-imap-handle-delete-file) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
114 ;; `diff-latest-backup-file' performed by default handler |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
115 (directory-file-name . tramp-handle-directory-file-name) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
116 (directory-files . tramp-handle-directory-files) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
117 (directory-files-and-attributes |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
118 . tramp-imap-handle-directory-files-and-attributes) |
105766
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
119 (dired-call-process . ignore) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
120 ;; `dired-compress-file' performed by default handler |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
121 ;; `dired-uncache' performed by default handler |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
122 (expand-file-name . tramp-imap-handle-expand-file-name) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
123 ;; `file-accessible-directory-p' performed by default handler |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
124 (file-attributes . tramp-imap-handle-file-attributes) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
125 (file-directory-p . tramp-imap-handle-file-directory-p) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
126 (file-executable-p . tramp-imap-handle-file-executable-p) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
127 (file-exists-p . tramp-imap-handle-file-exists-p) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
128 (file-local-copy . tramp-imap-handle-file-local-copy) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
129 (file-modes . tramp-handle-file-modes) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
130 (file-name-all-completions . tramp-imap-handle-file-name-all-completions) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
131 (file-name-as-directory . tramp-handle-file-name-as-directory) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
132 (file-name-completion . tramp-handle-file-name-completion) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
133 (file-name-directory . tramp-handle-file-name-directory) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
134 (file-name-nondirectory . tramp-handle-file-name-nondirectory) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
135 ;; `file-name-sans-versions' performed by default handler |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
136 (file-newer-than-file-p . tramp-imap-handle-file-newer-than-file-p) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
137 (file-ownership-preserved-p . ignore) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
138 (file-readable-p . tramp-imap-handle-file-readable-p) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
139 (file-regular-p . tramp-handle-file-regular-p) |
108077
93125d6fab29
Implement SELINUX backends.
Michael Albinus <michael.albinus@gmx.de>
parents:
107378
diff
changeset
|
140 (file-remote-p . tramp-handle-file-remote-p) |
93125d6fab29
Implement SELINUX backends.
Michael Albinus <michael.albinus@gmx.de>
parents:
107378
diff
changeset
|
141 ;; `file-selinux-context' performed by default handler. |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
142 (file-symlink-p . tramp-handle-file-symlink-p) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
143 ;; `file-truename' performed by default handler |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
144 (file-writable-p . tramp-imap-handle-file-writable-p) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
145 (find-backup-file-name . tramp-handle-find-backup-file-name) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
146 ;; `find-file-noselect' performed by default handler |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
147 ;; `get-file-buffer' performed by default handler |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
148 (insert-directory . tramp-imap-handle-insert-directory) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
149 (insert-file-contents . tramp-imap-handle-insert-file-contents) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
150 (load . tramp-handle-load) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
151 (make-directory . ignore) ;; tramp-imap-handle-make-directory) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
152 (make-directory-internal . ignore) ;; tramp-imap-handle-make-directory-internal) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
153 (make-symbolic-link . ignore) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
154 (rename-file . tramp-imap-handle-rename-file) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
155 (set-file-modes . ignore) |
108077
93125d6fab29
Implement SELINUX backends.
Michael Albinus <michael.albinus@gmx.de>
parents:
107378
diff
changeset
|
156 ;; `set-file-selinux-context' performed by default handler. |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
157 (set-file-times . ignore) ;; tramp-imap-handle-set-file-times) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
158 (set-visited-file-modtime . ignore) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
159 (shell-command . ignore) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
160 (substitute-in-file-name . tramp-handle-substitute-in-file-name) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
161 (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
162 (vc-registered . ignore) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
163 (verify-visited-file-modtime . ignore) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
164 (write-region . tramp-imap-handle-write-region) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
165 (executable-find . ignore) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
166 (start-file-process . ignore) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
167 (process-file . ignore) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
168 ) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
169 "Alist of handler functions for Tramp IMAP method. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
170 Operations not mentioned here will be handled by the default Emacs primitives.") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
171 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
172 (defgroup tramp-imap nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
173 "Tramp over IMAP configuration." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
174 :version "23.2" |
107378
904ccd8f2acb
Reorganize Custom groups.
Chong Yidong <cyd@stupidchicken.com>
parents:
107092
diff
changeset
|
175 :group 'tramp) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
176 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
177 (defcustom tramp-imap-subject-marker "tramp-imap-subject-marker" |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
178 "The subject marker that Tramp-IMAP will use." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
179 :type 'string |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
180 :version "23.2" |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
181 :group 'tramp-imap) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
182 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
183 ;; TODO: these will be defcustoms later. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
184 (defvar tramp-imap-passphrase-cache nil) ;; can be t or 'never |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
185 (defvar tramp-imap-passphrase nil) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
186 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
187 (defun tramp-imap-file-name-p (filename) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
188 "Check if it's a filename for IMAP protocol." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
189 (let ((v (tramp-dissect-file-name filename))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
190 (or |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
191 (string= (tramp-file-name-method v) tramp-imap-method) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
192 (string= (tramp-file-name-method v) tramp-imaps-method)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
193 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
194 (defun tramp-imap-file-name-handler (operation &rest args) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
195 "Invoke the IMAP related OPERATION. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
196 First arg specifies the OPERATION, second arg is a list of arguments to |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
197 pass to the OPERATION." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
198 (let ((fn (assoc operation tramp-imap-file-name-handler-alist))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
199 (if fn |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
200 (save-match-data (apply (cdr fn) args)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
201 (tramp-run-real-handler operation args)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
202 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
203 (add-to-list 'tramp-foreign-file-name-handler-alist |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
204 (cons 'tramp-imap-file-name-p 'tramp-imap-file-name-handler)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
205 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
206 (defun tramp-imap-handle-copy-file |
108077
93125d6fab29
Implement SELINUX backends.
Michael Albinus <michael.albinus@gmx.de>
parents:
107378
diff
changeset
|
207 (filename newname &optional ok-if-already-exists keep-date |
93125d6fab29
Implement SELINUX backends.
Michael Albinus <michael.albinus@gmx.de>
parents:
107378
diff
changeset
|
208 preserve-uid-gid preserve-selinux-context) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
209 "Like `copy-file' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
210 (tramp-imap-do-copy-or-rename-file |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
211 'copy filename newname ok-if-already-exists keep-date preserve-uid-gid)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
212 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
213 (defun tramp-imap-handle-rename-file |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
214 (filename newname &optional ok-if-already-exists) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
215 "Like `rename-file' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
216 (tramp-imap-do-copy-or-rename-file |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
217 'rename filename newname ok-if-already-exists t t)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
218 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
219 (defun tramp-imap-do-copy-or-rename-file |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
220 (op filename newname &optional ok-if-already-exists keep-date preserve-uid-gid) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
221 "Copy or rename a remote file. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
222 OP must be `copy' or `rename' and indicates the operation to perform. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
223 FILENAME specifies the file to copy or rename, NEWNAME is the name of |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
224 the new file (for copy) or the new name of the file (for rename). |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
225 OK-IF-ALREADY-EXISTS means don't barf if NEWNAME exists already. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
226 KEEP-DATE means to make sure that NEWNAME has the same timestamp |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
227 as FILENAME. PRESERVE-UID-GID, when non-nil, instructs to keep |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
228 the uid and gid if both files are on the same host. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
229 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
230 This function is invoked by `tramp-imap-handle-copy-file' and |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
231 `tramp-imap-handle-rename-file'. It is an error if OP is neither |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
232 of `copy' and `rename'." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
233 (unless (memq op '(copy rename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
234 (error "Unknown operation `%s', must be `copy' or `rename'" op)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
235 (setq filename (expand-file-name filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
236 (setq newname (expand-file-name newname)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
237 (when (file-directory-p newname) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
238 (setq newname (expand-file-name (file-name-nondirectory filename) newname))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
239 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
240 (let ((t1 (and (tramp-tramp-file-p filename) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
241 (tramp-imap-file-name-p filename))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
242 (t2 (and (tramp-tramp-file-p newname) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
243 (tramp-imap-file-name-p newname)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
244 |
108739
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
245 (with-parsed-tramp-file-name (if t1 filename newname) nil |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
246 (when (and (not ok-if-already-exists) (file-exists-p newname)) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
247 (tramp-error |
108739
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
248 v 'file-already-exists "File %s already exists" newname)) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
249 |
108739
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
250 (with-progress-reporter |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
251 v 0 (format "%s %s to %s" |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
252 (if (eq op 'copy) "Copying" "Renaming") |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
253 filename newname) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
254 |
108739
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
255 ;; We just make a local copy of FILENAME, and write it then to |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
256 ;; NEWNAME. This must be optimized, when both files are |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
257 ;; located on the same IMAP server. |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
258 (with-temp-buffer |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
259 (if (and t1 t2) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
260 ;; We don't encrypt. |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
261 (with-parsed-tramp-file-name newname v1 |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
262 (insert (tramp-imap-get-file filename nil)) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
263 (tramp-imap-put-file |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
264 v1 (current-buffer) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
265 (tramp-imap-file-name-name v1) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
266 nil nil (nth 7 (file-attributes filename)))) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
267 ;; One of them is not located on a IMAP mailbox. |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
268 (insert-file-contents filename) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
269 (write-region (point-min) (point-max) newname))))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
270 |
108816
94d1d8a6dcfd
* net/tramp-compat.el (tramp-compat-delete-file): Use
Michael Albinus <michael.albinus@gmx.de>
parents:
108806
diff
changeset
|
271 (when (eq op 'rename) (delete-file filename)))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
272 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
273 ;; TODO: revise this much |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
274 (defun tramp-imap-handle-expand-file-name (name &optional dir) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
275 "Like `expand-file-name' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
276 ;; If DIR is not given, use DEFAULT-DIRECTORY or "/". |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
277 (setq dir (or dir default-directory "/")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
278 ;; Unless NAME is absolute, concat DIR and NAME. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
279 (unless (file-name-absolute-p name) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
280 (setq name (concat (file-name-as-directory dir) name))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
281 ;; If NAME is not a Tramp file, run the real handler. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
282 (if (or (tramp-completion-mode-p) (not (tramp-tramp-file-p name))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
283 (tramp-drop-volume-letter |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
284 (tramp-run-real-handler 'expand-file-name (list name nil))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
285 ;; Dissect NAME. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
286 (with-parsed-tramp-file-name name nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
287 (unless (tramp-run-real-handler 'file-name-absolute-p (list localname)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
288 (setq localname (concat "/" localname))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
289 ;; There might be a double slash, for example when "~/" |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
290 ;; expands to "/". Remove this. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
291 (while (string-match "//" localname) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
292 (setq localname (replace-match "/" t t localname))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
293 ;; Do normal `expand-file-name' (this does "/./" and "/../"). |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
294 ;; We bind `directory-sep-char' here for XEmacs on Windows, |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
295 ;; which would otherwise use backslash. `default-directory' is |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
296 ;; bound, because on Windows there would be problems with UNC |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
297 ;; shares or Cygwin mounts. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
298 (let ((default-directory (tramp-compat-temporary-file-directory))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
299 (tramp-make-tramp-file-name |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
300 method user host |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
301 (tramp-drop-volume-letter |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
302 (tramp-run-real-handler |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
303 'expand-file-name (list localname)))))))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
304 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
305 ;; This function should return "foo/" for directories and "bar" for |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
306 ;; files. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
307 (defun tramp-imap-handle-file-name-all-completions (filename directory) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
308 "Like `file-name-all-completions' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
309 (all-completions |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
310 filename |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
311 (with-parsed-tramp-file-name (expand-file-name directory) nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
312 (save-match-data |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
313 (let ((entries |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
314 (tramp-imap-get-file-entries v localname))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
315 (mapcar |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
316 (lambda (x) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
317 (list |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
318 (if (string-match "d" (nth 9 x)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
319 (file-name-as-directory (nth 0 x)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
320 (nth 0 x)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
321 entries)))))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
322 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
323 (defun tramp-imap-get-file-entries (vec localname &optional exact) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
324 "Read entries returned by IMAP server. EXACT limits to exact matches. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
325 Result is a list of (LOCALNAME LINK COUNT UID GID ATIME MTIME CTIME |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
326 SIZE MODE WEIRD INODE DEVICE)." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
327 (tramp-message vec 5 "working on %s" localname) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
328 (let* ((name (tramp-imap-file-name-name vec)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
329 (search-name (or name "")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
330 (search-name (if exact (concat search-name "$") search-name)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
331 (iht (tramp-imap-make-iht vec search-name))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
332 ;; TODO: catch errors |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
333 ;; (tramp-error vec 'none "bad name %s or mailbox %s" name mbox)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
334 (imap-hash-map (lambda (uid headers body) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
335 (let ((subject (substring |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
336 (aget headers 'Subject "") |
105779
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
337 (length tramp-imap-subject-marker))) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
338 (from (aget headers 'From "")) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
339 (date (date-to-time (aget headers 'Date ""))) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
340 (size (string-to-number |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
341 (or (aget headers 'X-Size "0") "0")))) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
342 (setq from |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
343 (if (string-match "<\\([^@]+\\)@" from) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
344 (match-string 1 from) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
345 "nobody")) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
346 (list |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
347 subject |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
348 nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
349 -1 |
105779
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
350 from |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
351 "nogroup" |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
352 date |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
353 date |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
354 date |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
355 size |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
356 "-rw-rw-rw-" |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
357 nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
358 uid |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
359 (tramp-get-device vec)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
360 iht t))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
361 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
362 (defun tramp-imap-handle-write-region (start end filename &optional append visit lockname confirm) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
363 "Like `write-region' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
364 (setq filename (expand-file-name filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
365 (with-parsed-tramp-file-name filename nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
366 ;; XEmacs takes a coding system as the seventh argument, not `confirm'. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
367 (when (and (not (featurep 'xemacs)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
368 confirm (file-exists-p filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
369 (unless (y-or-n-p (format "File %s exists; overwrite anyway? " |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
370 filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
371 (tramp-error v 'file-error "File not overwritten"))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
372 (tramp-flush-file-property v localname) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
373 (let* ((old-buffer (current-buffer)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
374 (inode (tramp-imap-get-file-inode filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
375 (min 1) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
376 (max (point-max)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
377 ;; Make sure we have good start and end values. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
378 (start (or start min)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
379 (end (or end max)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
380 temp-buffer) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
381 (with-temp-buffer |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
382 (setq temp-buffer (if (and (eq start min) (eq end max)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
383 old-buffer |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
384 ;; If this is a region write, insert the substring. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
385 (insert |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
386 (with-current-buffer old-buffer |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
387 (buffer-substring-no-properties start end))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
388 (current-buffer))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
389 (tramp-imap-put-file v |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
390 temp-buffer |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
391 (tramp-imap-file-name-name v) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
392 inode |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
393 t))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
394 (when (eq visit t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
395 (set-visited-file-modtime)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
396 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
397 (defun tramp-imap-handle-insert-directory |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
398 (filename switches &optional wildcard full-directory-p) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
399 "Like `insert-directory' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
400 (setq filename (expand-file-name filename)) |
107092
2e763e444bc2
* net/ange-ftp.el (ange-ftp-insert-directory):
Michael Albinus <michael.albinus@gmx.de>
parents:
107085
diff
changeset
|
401 (if full-directory-p |
2e763e444bc2
* net/ange-ftp.el (ange-ftp-insert-directory):
Michael Albinus <michael.albinus@gmx.de>
parents:
107085
diff
changeset
|
402 ;; Called from `dired-add-entry'. |
2e763e444bc2
* net/ange-ftp.el (ange-ftp-insert-directory):
Michael Albinus <michael.albinus@gmx.de>
parents:
107085
diff
changeset
|
403 (setq filename (file-name-as-directory filename)) |
2e763e444bc2
* net/ange-ftp.el (ange-ftp-insert-directory):
Michael Albinus <michael.albinus@gmx.de>
parents:
107085
diff
changeset
|
404 (setq filename (directory-file-name filename))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
405 (with-parsed-tramp-file-name filename nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
406 (save-match-data |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
407 (let ((base (file-name-nondirectory localname)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
408 (entries (copy-sequence |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
409 (tramp-imap-get-file-entries |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
410 v (file-name-directory localname))))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
411 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
412 (when wildcard |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
413 (when (string-match "\\." base) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
414 (setq base (replace-match "\\\\." nil nil base))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
415 (when (string-match "\\*" base) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
416 (setq base (replace-match ".*" nil nil base))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
417 (when (string-match "\\?" base) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
418 (setq base (replace-match ".?" nil nil base)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
419 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
420 ;; Filter entries. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
421 (setq entries |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
422 (delq |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
423 nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
424 (if (or wildcard (zerop (length base))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
425 ;; Check for matching entries. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
426 (mapcar |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
427 (lambda (x) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
428 (when (string-match |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
429 (format "^%s" base) (nth 0 x)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
430 x)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
431 entries) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
432 ;; We just need the only and only entry FILENAME. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
433 (list (assoc base entries))))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
434 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
435 ;; Sort entries. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
436 (setq entries |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
437 (sort |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
438 entries |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
439 (lambda (x y) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
440 (if (string-match "t" switches) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
441 ;; Sort by date. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
442 (tramp-time-less-p (nth 6 y) (nth 6 x)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
443 ;; Sort by name. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
444 (string-lessp (nth 0 x) (nth 0 y)))))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
445 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
446 ;; Handle "-F" switch. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
447 (when (string-match "F" switches) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
448 (mapc |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
449 (lambda (x) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
450 (when (not (zerop (length (car x)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
451 (cond |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
452 ((char-equal ?d (string-to-char (nth 9 x))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
453 (setcar x (concat (car x) "/"))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
454 ((char-equal ?x (string-to-char (nth 9 x))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
455 (setcar x (concat (car x) "*")))))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
456 entries)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
457 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
458 ;; Print entries. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
459 (mapcar |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
460 (lambda (x) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
461 (when (not (zerop (length (nth 0 x)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
462 (insert |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
463 (format |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
464 "%10s %3d %-8s %-8s %8s %s " |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
465 (nth 9 x) ; mode |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
466 (nth 11 x) ; inode |
105779
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
467 (nth 3 x) ; uid |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
468 (nth 4 x) ; gid |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
469 (nth 8 x) ; size |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
470 (format-time-string |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
471 (if (tramp-time-less-p |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
472 (tramp-time-subtract (current-time) (nth 6 x)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
473 tramp-half-a-year) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
474 "%b %e %R" |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
475 "%b %e %Y") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
476 (nth 6 x)))) ; date |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
477 ;; For the file name, we set the `dired-filename' |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
478 ;; property. This allows to handle file names with |
107085
d7831d04952b
* dired.el (dired-revert): If DIRED-DIRECTORY is a cons cell, call
Michael Albinus <michael.albinus@gmx.de>
parents:
106955
diff
changeset
|
479 ;; leading or trailing spaces as well. The inserted name |
d7831d04952b
* dired.el (dired-revert): If DIRED-DIRECTORY is a cons cell, call
Michael Albinus <michael.albinus@gmx.de>
parents:
106955
diff
changeset
|
480 ;; could be from somewhere else, so we use the relative |
d7831d04952b
* dired.el (dired-revert): If DIRED-DIRECTORY is a cons cell, call
Michael Albinus <michael.albinus@gmx.de>
parents:
106955
diff
changeset
|
481 ;; file name of `default-directory'. |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
482 (let ((pos (point))) |
107085
d7831d04952b
* dired.el (dired-revert): If DIRED-DIRECTORY is a cons cell, call
Michael Albinus <michael.albinus@gmx.de>
parents:
106955
diff
changeset
|
483 (insert |
d7831d04952b
* dired.el (dired-revert): If DIRED-DIRECTORY is a cons cell, call
Michael Albinus <michael.albinus@gmx.de>
parents:
106955
diff
changeset
|
484 (format |
d7831d04952b
* dired.el (dired-revert): If DIRED-DIRECTORY is a cons cell, call
Michael Albinus <michael.albinus@gmx.de>
parents:
106955
diff
changeset
|
485 "%s\n" |
107092
2e763e444bc2
* net/ange-ftp.el (ange-ftp-insert-directory):
Michael Albinus <michael.albinus@gmx.de>
parents:
107085
diff
changeset
|
486 (file-relative-name |
2e763e444bc2
* net/ange-ftp.el (ange-ftp-insert-directory):
Michael Albinus <michael.albinus@gmx.de>
parents:
107085
diff
changeset
|
487 (expand-file-name (nth 0 x) (file-name-directory filename))))) |
107085
d7831d04952b
* dired.el (dired-revert): If DIRED-DIRECTORY is a cons cell, call
Michael Albinus <michael.albinus@gmx.de>
parents:
106955
diff
changeset
|
488 (put-text-property pos (1- (point)) 'dired-filename t)) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
489 (forward-line) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
490 (beginning-of-line))) |
107085
d7831d04952b
* dired.el (dired-revert): If DIRED-DIRECTORY is a cons cell, call
Michael Albinus <michael.albinus@gmx.de>
parents:
106955
diff
changeset
|
491 entries))))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
492 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
493 (defun tramp-imap-handle-insert-file-contents |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
494 (filename &optional visit beg end replace) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
495 "Like `insert-file-contents' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
496 (barf-if-buffer-read-only) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
497 (when visit |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
498 (setq buffer-file-name (expand-file-name filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
499 (set-visited-file-modtime) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
500 (set-buffer-modified-p nil)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
501 (with-parsed-tramp-file-name filename nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
502 (if (not (file-exists-p filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
503 (tramp-error |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
504 v 'file-error "File `%s' not found on remote host" filename) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
505 (let ((point (point)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
506 size data) |
108739
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
507 (with-progress-reporter v 3 (format "Fetching file %s" filename) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
508 (insert (tramp-imap-get-file filename t)) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
509 (setq size (- (point) point)) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
510 ;;; TODO: handle ranges. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
511 ;;; (let ((beg (or beg (point-min))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
512 ;;; (end (min (or end (point-max)) (point-max)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
513 ;;; (setq size (- end beg)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
514 ;;; (buffer-substring beg end)) |
108739
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
515 (goto-char point) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
516 (list (expand-file-name filename) size)))))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
517 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
518 (defun tramp-imap-handle-file-exists-p (filename) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
519 "Like `file-exists-p' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
520 (and (file-attributes filename) t)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
521 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
522 (defun tramp-imap-handle-file-directory-p (filename) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
523 "Like `file-directory-p' for Tramp-IMAP files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
524 ;; We allow only mailboxes to be a directory. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
525 (with-parsed-tramp-file-name (expand-file-name filename default-directory) nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
526 (and (string-match "^/[^/]*$" (directory-file-name localname)) t))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
527 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
528 (defun tramp-imap-handle-file-attributes (filename &optional id-format) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
529 "Like `file-attributes' for Tramp-IMAP FILENAME." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
530 (with-parsed-tramp-file-name (expand-file-name filename) nil |
105779
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
531 (let ((res (cdr-safe (nth 0 (tramp-imap-get-file-entries v localname))))) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
532 (unless (or (null res) (eq id-format 'string)) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
533 (setcar (nthcdr 2 res) 1) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
534 (setcar (nthcdr 3 res) 1)) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
535 res))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
536 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
537 (defun tramp-imap-get-file-inode (filename &optional id-format) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
538 "Get inode equivalent \(actually the UID) for Tramp-IMAP FILENAME." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
539 (nth 10 (tramp-compat-file-attributes filename id-format))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
540 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
541 (defun tramp-imap-handle-file-executable-p (filename) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
542 "Like `file-executable-p' for Tramp files. False for IMAP." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
543 nil) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
544 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
545 (defun tramp-imap-handle-file-readable-p (filename) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
546 "Like `file-readable-p' for Tramp files. True for IMAP." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
547 (file-exists-p filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
548 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
549 (defun tramp-imap-handle-file-writable-p (filename) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
550 "Like `file-writable-p' for Tramp files. True for IMAP." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
551 ;; `file-exists-p' does not work yet for directories. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
552 ;; (file-exists-p (file-name-directory filename))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
553 (file-directory-p (file-name-directory filename))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
554 |
108806
511da81b16c5
Change delete-by-moving-to-trash so Lisp calls explicitly request trashing.
Chong Yidong <cyd@stupidchicken.com>
parents:
108739
diff
changeset
|
555 (defun tramp-imap-handle-delete-file (filename &optional trash) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
556 "Like `delete-file' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
557 (cond |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
558 ((not (file-exists-p filename)) nil) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
559 (t (with-parsed-tramp-file-name (expand-file-name filename) nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
560 (let ((iht (tramp-imap-make-iht v))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
561 (imap-hash-rem (tramp-imap-get-file-inode filename) iht)))))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
562 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
563 (defun tramp-imap-handle-directory-files-and-attributes |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
564 (directory &optional full match nosort id-format) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
565 "Like `directory-files-and-attributes' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
566 (mapcar |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
567 (lambda (x) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
568 (cons x (tramp-compat-file-attributes |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
569 (if full x (expand-file-name x directory)) id-format))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
570 (directory-files directory full match nosort))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
571 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
572 ;; TODO: fix this in tramp-imap-get-file-entries. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
573 (defun tramp-imap-handle-file-newer-than-file-p (file1 file2) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
574 "Like `file-newer-than-file-p' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
575 (cond |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
576 ((not (file-exists-p file1)) nil) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
577 ((not (file-exists-p file2)) t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
578 (t (tramp-time-less-p (nth 5 (file-attributes file2)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
579 (nth 5 (file-attributes file1)))))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
580 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
581 (defun tramp-imap-handle-file-local-copy (filename) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
582 "Like `file-local-copy' for Tramp files." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
583 (with-parsed-tramp-file-name (expand-file-name filename) nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
584 (unless (file-exists-p filename) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
585 (tramp-error |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
586 v 'file-error |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
587 "Cannot make local copy of non-existing file `%s'" filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
588 (let ((tmpfile (tramp-compat-make-temp-file filename))) |
108739
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
589 (with-progress-reporter |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
590 v 3 (format "Fetching %s to tmp file %s" filename tmpfile) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
591 (with-temp-buffer |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
592 (insert-file-contents filename) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
593 (write-region (point-min) (point-max) tmpfile) |
ae0f7dfcf9c9
* net/tramp.el (tramp-do-copy-or-rename-file)
Michael Albinus <michael.albinus@gmx.de>
parents:
108377
diff
changeset
|
594 tmpfile))))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
595 |
105779
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
596 (defun tramp-imap-put-file |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
597 (vec filename-or-buffer &optional subject inode encode size) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
598 "Write contents of FILENAME-OR-BUFFER to Tramp-IMAP file VEC with name SUBJECT. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
599 When INODE is given, delete that old remote file after writing the new one |
105779
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
600 \(normally this is the old file with the same name). A non-nil ENCODE |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
601 forces the encoding of the buffer or file. SIZE, when available, indicates |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
602 the file size; this is needed, if the file or buffer is already encoded." |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
603 ;; `tramp-current-host' is used in `tramp-imap-passphrase-callback-function'. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
604 (let ((tramp-current-host (tramp-file-name-real-host vec)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
605 (iht (tramp-imap-make-iht vec))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
606 (imap-hash-put (list |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
607 (list (cons |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
608 'Subject |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
609 (format |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
610 "%s%s" |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
611 tramp-imap-subject-marker |
105779
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
612 (or subject "no subject"))) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
613 (cons |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
614 'X-Size |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
615 (number-to-string |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
616 (cond |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
617 ((numberp size) size) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
618 ((bufferp filename-or-buffer) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
619 (buffer-size filename-or-buffer)) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
620 ((stringp filename-or-buffer) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
621 (nth 7 (file-attributes filename-or-buffer))) |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
622 ;; We don't know the size. |
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
623 (t -1))))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
624 (cond ((bufferp filename-or-buffer) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
625 (with-current-buffer filename-or-buffer |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
626 (if encode |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
627 (tramp-imap-encode-buffer) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
628 (buffer-string)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
629 ;; TODO: allow file names. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
630 (t "No body available"))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
631 iht |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
632 inode))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
633 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
634 (defun tramp-imap-get-file (filename &optional decode) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
635 ;; (debug (tramp-imap-get-file-inode filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
636 (with-parsed-tramp-file-name (expand-file-name filename) nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
637 (condition-case () |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
638 ;; `tramp-current-host' is used in |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
639 ;; `tramp-imap-passphrase-callback-function'. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
640 (let* ((tramp-current-host (tramp-file-name-real-host v)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
641 (iht (tramp-imap-make-iht v)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
642 (inode (tramp-imap-get-file-inode filename)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
643 (data (imap-hash-get inode iht t))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
644 (if decode |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
645 (with-temp-buffer |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
646 (insert (nth 1 data)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
647 ;;(debug inode (buffer-string)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
648 (tramp-imap-decode-buffer)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
649 (nth 1 data))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
650 (error (tramp-error |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
651 v 'file-error "File `%s' could not be read" filename))))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
652 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
653 (defun tramp-imap-passphrase-callback-function (context key-id handback) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
654 "Called by EPG to get a passphrase for Tramp-IMAP. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
655 CONTEXT is the encryption/decryption EPG context. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
656 HANDBACK is just carried through. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
657 KEY-ID can be 'SYM or 'PIN among others." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
658 (let* ((server tramp-current-host) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
659 (port "tramp-imap") ; this is NOT the server password! |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
660 (auth-passwd |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
661 (auth-source-user-or-password "password" server port))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
662 (or |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
663 (copy-sequence auth-passwd) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
664 ;; If we cache the passphrase and we have one. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
665 (if (and (eq tramp-imap-passphrase-cache t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
666 tramp-imap-passphrase) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
667 ;; Do we reuse it? |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
668 (if (y-or-n-p "Reuse the passphrase? ") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
669 (copy-sequence tramp-imap-passphrase) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
670 ;; Don't reuse: revert caching behavior to nil, erase passphrase, |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
671 ;; call ourselves again. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
672 (setq tramp-imap-passphrase-cache nil) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
673 (setq tramp-imap-passphrase nil) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
674 (tramp-imap-passphrase-callback-function context key-id handback)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
675 (let ((p (if (eq key-id 'SYM) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
676 (read-passwd |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
677 "Tramp-IMAP passphrase for symmetric encryption: " |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
678 (eq (epg-context-operation context) 'encrypt) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
679 tramp-imap-passphrase) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
680 (read-passwd |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
681 (if (eq key-id 'PIN) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
682 "Tramp-IMAP passphrase for PIN: " |
106954
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
683 (let ((entry (assoc key-id |
b21e977d14e7
* net/tramp-imap.el (top): Autoload needed packages.
Michael Albinus <michael.albinus@gmx.de>
parents:
106815
diff
changeset
|
684 (symbol-value 'epg-user-id-alist)))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
685 (if entry |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
686 (format "Tramp-IMAP passphrase for %s %s: " |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
687 key-id (cdr entry)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
688 (format "Tramp-IMAP passphrase for %s: " key-id)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
689 nil |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
690 tramp-imap-passphrase)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
691 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
692 ;; If we have an answer, the passphrase has changed, |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
693 ;; the user hasn't declined keeping the passphrase, |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
694 ;; and they answer yes to keep it now... |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
695 (when (and |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
696 p |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
697 (not (equal tramp-imap-passphrase p)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
698 (not (eq tramp-imap-passphrase-cache 'never)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
699 (y-or-n-p "Keep the passphrase? ")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
700 (setq tramp-imap-passphrase (copy-sequence p)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
701 (setq tramp-imap-passphrase-cache t)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
702 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
703 ;; If we still don't have a passphrase, the user didn't want |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
704 ;; to keep it. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
705 (when (and |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
706 p |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
707 (not tramp-imap-passphrase)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
708 (setq tramp-imap-passphrase-cache 'never)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
709 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
710 p))))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
711 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
712 (defun tramp-imap-encode-buffer () |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
713 (let ((context (epg-make-context 'OpenPGP)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
714 cipher) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
715 (epg-context-set-armor context t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
716 (epg-context-set-passphrase-callback context |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
717 #'tramp-imap-passphrase-callback-function) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
718 (epg-context-set-progress-callback context |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
719 (cons #'epa-progress-callback-function |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
720 "Encrypting...")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
721 (message "Encrypting...") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
722 (setq cipher (epg-encrypt-string |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
723 context |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
724 (encode-coding-string (buffer-string) 'utf-8) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
725 nil)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
726 (message "Encrypting...done") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
727 cipher)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
728 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
729 (defun tramp-imap-decode-buffer () |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
730 (let ((context (epg-make-context 'OpenPGP)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
731 plain) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
732 (epg-context-set-passphrase-callback context |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
733 #'tramp-imap-passphrase-callback-function) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
734 (epg-context-set-progress-callback context |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
735 (cons #'epa-progress-callback-function |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
736 "Decrypting...")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
737 (message "Decrypting...") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
738 (setq plain (decode-coding-string |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
739 (epg-decrypt-string context (buffer-string)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
740 'utf-8)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
741 (message "Decrypting...done") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
742 plain)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
743 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
744 (defun tramp-imap-file-name-mailbox (vec) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
745 (nth 0 (tramp-imap-file-name-parse vec))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
746 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
747 (defun tramp-imap-file-name-name (vec) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
748 (nth 1 (tramp-imap-file-name-parse vec))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
749 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
750 (defun tramp-imap-file-name-localname (vec) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
751 (nth 1 (tramp-imap-file-name-parse vec))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
752 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
753 (defun tramp-imap-file-name-parse (vec) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
754 (let ((name (substring-no-properties (tramp-file-name-localname vec)))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
755 (if (string-match "^/\\([^/]+\\)/?\\(.*\\)$" name) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
756 (list (match-string 1 name) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
757 (match-string 2 name)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
758 nil))) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
759 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
760 (defun tramp-imap-make-iht (vec &optional needed-subject) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
761 "Translate the Tramp vector VEC to the imap-hash structure. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
762 With NEEDED-SUBJECT, alters the imap-hash test accordingly." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
763 (let* ((mbox (tramp-imap-file-name-mailbox vec)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
764 (server (tramp-file-name-real-host vec)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
765 (method (tramp-file-name-method vec)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
766 (user (tramp-file-name-user vec)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
767 (ssl (string-equal method tramp-imaps-method)) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
768 (port (or (tramp-file-name-port vec) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
769 (tramp-get-method-parameter method 'tramp-default-port))) |
105766
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
770 (result (imap-hash-make server port mbox user nil ssl))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
771 ;; Return the IHT with a test override to look for the subject |
105766
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
772 ;; marker. |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
773 (plist-put |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
774 result |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
775 :test (format "^%s%s" |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
776 tramp-imap-subject-marker |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
777 (if needed-subject needed-subject ""))))) |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
778 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
779 ;;; TODO: |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
780 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
781 ;; * Implement `tramp-imap-handle-delete-directory', |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
782 ;; `tramp-imap-handle-make-directory', |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
783 ;; `tramp-imap-handle-make-directory-internal', |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
784 ;; `tramp-imap-handle-set-file-times'. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
785 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
786 ;; * Encode the subject. If the filename has trailing spaces (like |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
787 ;; "test "), those characters get lost, for example in dired listings. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
788 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
789 ;; * When opening a dired buffer, like "/imap::INBOX.test", there are |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
790 ;; several error messages: |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
791 ;; "Buffer has a running process; kill it? (yes or no) " |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
792 ;; "error in process filter: Internal error, tag 6 status BAD code nil text No mailbox selected." |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
793 ;; Afterwards, everything seems to be fine. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
794 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
795 ;; * imaps works for local IMAP servers. Accessing |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
796 ;; "/imaps:imap.gmail.com:/INBOX.test/" results in error |
105766
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
797 ;; "error in process filter: Internal error, tag 5 status BAD code nil text UNSELECT not allowed now." |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
798 |
105779
4f83cd6cf378
* net/tramp-imap.el (top): Add `X-Size' to `imap-hash-headers'.
Michael Albinus <michael.albinus@gmx.de>
parents:
105766
diff
changeset
|
799 ;; * Improve `tramp-imap-handle-file-attributes' for directories. |
105766
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
800 |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
801 ;; * Saving a file creates a second one, instead of overwriting. |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
802 |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
803 ;; * Backup files: just *one* is kept. |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
804 |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
805 ;; * Password requests shall have a descriptive prompt. |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
806 |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
807 ;; * Exiting Emacs, there are running IMAP processes. Make them quiet |
bbf5bbea0d69
* net/tramp-imap.el (tramp-imap-file-name-handler-alist): Ignore
Michael Albinus <michael.albinus@gmx.de>
parents:
105377
diff
changeset
|
808 ;; by `set-process-query-on-exit-flag'. |
105250
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
809 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
810 (provide 'tramp-imap) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
811 ;;; tramp-imap.el ends here |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
812 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
813 ;; Ignore, for testing only. |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
814 |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
815 ;;; (setq tramp-imap-subject-marker "T") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
816 ;;; (tramp-imap-get-file-entries (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/4") t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
817 ;;; (tramp-imap-get-file-entries (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/") t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
818 ;;; (tramp-imap-get-file-entries (tramp-dissect-file-name "/imap:yourhosthere.com:/test/4") t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
819 ;;; (tramp-imap-get-file-entries (tramp-dissect-file-name "/imap:yourhosthere.com:/test/") t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
820 ;;; (tramp-imap-get-file-entries (tramp-dissect-file-name "/imap:yourhosthere.com:/test/welcommen") t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
821 ;;; (tramp-imap-get-file-entries (tramp-dissect-file-name "/imap:yourhosthere.com:/test/welcommen") t t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
822 ;;;(tramp-imap-get-file-inode "/imap:yourhosthere.com:/test/welcome") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
823 ;;; (dired-copy-file "/etc/fstab" "/imap:yourhosthere.com:/test/welcome" t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
824 ;;; (write-region 1 100 "/imap:yourhosthere.com:/test/welcome") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
825 ;;; (tramp-imap-get-file "/imap:yourhosthere.com:/test/welcome" t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
826 ;;(with-temp-buffer (insert "hello") (write-file "/imap:yourhosthere.com:/test/welcome")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
827 ;;(with-temp-buffer (insert "hello") (write-file "/imap:yourhosthere.com:/test/welcome2")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
828 ;;(file-writable-p "/imap:yourhosthere.com:/test/welcome2") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
829 ;;(file-name-directory "/imap:yourhosthere.com:/test/welcome2") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
830 ;;(with-temp-buffer (insert "hello") (delete-file "/tmp/hellotest") (write-file "/tmp/hellotest") (write-file "/imap:yourhosthere.com:/test/welcome2")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
831 ;;;(file-exists-p "/imap:yourhosthere.com:/INBOX.test/4") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
832 ;;;(file-attributes "/imap:yourhosthere.com:/INBOX.test/4") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
833 ;;;(setq vec (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/4")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
834 ;;;(tramp-imap-handle-file-attributes "/imap:yourhosthere.com:/INBOX.test/4") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
835 ;;; (tramp-imap-handle-insert-file-contents "/imap:user@yourhosthere.com:/INBOX.test/4" nil nil nil nil) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
836 ;;;(insert-file-contents "/imap:yourhosthere.com:/INBOX.test/4") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
837 ;;;(file-attributes "/imap:yourhosthere.com:/test/welcommen") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
838 ;;;(insert-file-contents "/imap:yourhosthere.com:/test/welcome") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
839 ;;;(file-exists-p "/imap:yourhosthere.com:/test/welcome2") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
840 ;;;(tramp-imap-handle-file-attributes "/imap:yourhosthere.com:/test/welcome") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
841 ;;;(tramp-imap-get-file-inode "/imap:yourhosthere.com:/test/welcommen") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
842 ;;;(tramp-imap-get-file-inode "/imap:yourhosthere.com:/test/welcome") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
843 ;;;(file-writable-p "/imap:yourhosthere.com:/test/welcome2") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
844 ;;; (delete-file "/imap:yourhosthere.com:/test/welcome") |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
845 ;;; (tramp-imap-get-file "/imap:yourhosthere.com:/test/welcommen" t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
846 ;;; (tramp-imap-get-file "/imap:yourhosthere.com:/test/welcome" t) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
847 ;;;(tramp-imap-file-name-mailbox (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
848 ;;;(tramp-imap-file-name-mailbox (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/new/old")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
849 ;;;(tramp-imap-file-name-mailbox (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/new")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
850 ;;;(tramp-imap-file-name-parse (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/new/two")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
851 ;;;(tramp-imap-file-name-parse (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/new/one")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
852 ;;;(tramp-imap-file-name-parse (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
853 ;;; (tramp-imap-file-name-parse (tramp-dissect-file-name "/imap:yourhosthere.com:/test/4")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
854 ;;; (tramp-imap-file-name-parse (tramp-dissect-file-name "/imap:yourhosthere.com:/test/")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
855 ;;; (tramp-imap-file-name-parse (tramp-dissect-file-name "/imap:yourhosthere.com:/test/welcommen")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
856 ;;; (tramp-imap-file-name-parse (tramp-dissect-file-name "/imap:yourhosthere.com:/test/welcommen")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
857 ;;; (tramp-imap-make-iht (tramp-dissect-file-name "/imap:yourhosthere.com:/test/welcommen")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
858 ;;; (tramp-imap-make-iht (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/4")) |
ceeb0491fbb4
* net/tramp-imap.el: New package.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
859 ;;; (tramp-imap-make-iht (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/4") "extra") |
105377 | 860 |
861 ;; arch-tag: f2723749-58fb-4f29-894e-39708096e850 |