- Compacting a folder adds the X-Mozilla-Keys: header if it does not exist [mozillazine],[googlegroups thread],[bugzilla].
- You can force a folder compact by deleting an (unimportant) email and then compacting the folder. (Just clicking compact will do nothing to a folder if there is nothing to be deleted).
- Thunderbird, once it sees the X-Mozilla-Keys: header, will actually use it to store tags.
- You can verify this by deleting the .msf file and seeing if the tagging persists
- You can now move this email around (from inside Thunderbird) and the tags move with the email, even to a folder that, in general, does not have the X-Mozilla-Keys: header! True metadata.
- You can tag a folder that doesn't have the X-Mozilla-Keys: header and afterwards compact it and Thunderbird will move the tags into the header. Just make sure you really compact the folder (pt 2. above)
- Thunderbird stores tag definitions (highlight color etc.) in prefs.js
Python's context managers are a very neat way of handling code that needs a teardown once you are done. Python objects have do have a destructor method ( __del__ ) called right before the last instance of the object is about to be destroyed. You can do a teardown there. However there is a lot of fine print to the __del__ method. A cleaner way of doing tear-downs is through Python's context manager , manifested as the with keyword. class CrushMe: def __init__(self): self.f = open('test.txt', 'w') def foo(self, a, b): self.f.write(str(a - b)) def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): self.f.close() return True with CrushMe() as c: c.foo(2, 3) One thing that is important, and that got me just now, is error handling. I made the mistake of ignoring all those 'junk' arguments ( exc_type, exc_val, exc_tb ). I just skimmed the docs and what popped out is that you need to return True or...
Interesting!
ReplyDeleteWhat about subfolders? If I delete an email in folder Local Folders>Inbox>John and compact Local Folder, will Thunderbird compact ALL folders that are a subfolder of Local Folders such as Local Folders>Sent>Smith?
First of all, thanks for the tip! It solved my problem of migrating tags to another mail client!
ReplyDelete@John: Unfortunately, no. Each subfolder has its own mailbox file (or so I'm told), and you'll need to compact each folder individually.
I did exactly that, yesterday.
Also, I found a less destructive way to force compaction - you don't need to delete a mail, it suffices to just move a mail to another folder (e.g. a temporary empty one) and then move it back (and click Compact of course).