tramp-devel
[Top][All Lists]
Advanced

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

Re: file storage in IMAP (eventually for Tramp) working and needs testin


From: Ted Zlatanov
Subject: Re: file storage in IMAP (eventually for Tramp) working and needs testing
Date: Wed, 22 Apr 2009 19:15:36 -0500
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.92 (gnu/linux)

On Wed, 15 Apr 2009 23:03:16 +0200 Michael Albinus <address@hidden> wrote: 

MA> No problem for me if you check it in. As long as we don't add it to the
MA> makefiles, and we don't load it in tramp.el, it doesn't hurt.

MA> Please adjust the copyright years, and replace GPLv2 by GPLv3.

Let's wait until it at least does completion, reads, and writes, please.

I made the year and GPL fixes.

The current code will:

- install many handlers, many unimplemented (copied from tramp-fish.el)

- handle "/imap:blockstar.com:/INBOX.test/" for filename expansion (but
  the actual expansion is not working; tramp-imap-get-file-entries does
  not get the correct file name from Emacs)

- save /imap:blockstar.com:/INBOX.test/new via tramp-imap-put-file (uses PGG)

- read /imap:blockstar.com:/INBOX.test/new via tramp-imap-get-file (uses PGG)

- use auth-source to get user name and password for a server

- maintain an IMAP connection in the Tramp buffer specific for this
  connection

- show you how much nasty code I can produce in a few hours

My biggest problem right now is that I can't get filename completion to
work (as mentioned above, tramp-imap-get-file-entries does not get the
right name).  I'm sure I'm missing a lot of details here, but ideally I
should parse the filename myself without any interferences from Emacs or
from Tramp (everything else--port, username, server, etc.--can be parsed
by Tramp).

Here's how I want the parsing to work:

/imap:SERVER:/MAILBOX/

hitting TAB after MAILBOX or after MAILBOX/ should complete
"/imap:SERVER:/MAILBOX" with or without the trailing slash.  MAILBOX is
the directory.

/imap:SERVER:/MAILBOX/anything

hitting TAB at the end should complete all the messages that match
"anything".

/imap:SERVER:/MAILBOX/anything/else

The mailbox here will be "MAILBOX/anything" and completion will look for
messages that match "else"

So basically the mailbox name is everything up to the last / character,
like a `dirname' call.  IMAP mailboxes can contain many characters,
including /, so we need to forbid those characters in the file name.
The base file name is then just `basename' on the full name.  I tried to
implement this by hand in tramp-imap-file-name-mailbox-or-name but there
must be a better way.

My second problem is that messages are not yet sorted by date so you are
not guaranteed to get the latest version (we agreed not to delete the
older versions, though there probably should be a flexible way to mark
them deleted past N backups).

Third, ranges are not supported for most commands.

The last major issue is that error handling and PGG integration are not
good.  Usability is not good.

If anyone can help me with the above items, I'd appreciate it.

Thanks
Ted

Attachment: tramp-imap.el
Description: application/emacs-lisp


reply via email to

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