Add new expansion key for mbnames.peritem config variable

It is called localfolders and holds expanded name for the same
variable for the local repository of the account that is being
processed.

GitHub issue: https://github.com/OfflineIMAP/offlineimap/issues/21
Signed-off-by: Eygene Ryabinkin <rea@codelabs.ru>
This commit is contained in:
Eygene Ryabinkin 2013-08-27 18:11:57 +04:00
parent 8b6f10e2e7
commit 95aea5e489
5 changed files with 22 additions and 3 deletions

View File

@ -23,6 +23,9 @@ WIP (add new stuff for the next release)
(Andreas Mack)
* Allow to set message access and modification timestamps based
on the "Date" header of the message itself. (Cyril Russo)
* "peritem" format string for [mbnames] got new expansion key
"localfolders" that corresponds to the same parameter of the
local repository for the account being processed.
* [regression] pass folder names to the foldersort function,
revert the documented behaviour

View File

@ -129,6 +129,12 @@ accounts = Test
#
# The header, peritem, sep, and footer are all Python expressions passed
# through eval, so you can (and must) use Python quoting.
#
# The following hash key are available to the expansion for 'peritem':
# - accountname: the name of the corresponding account;
# - foldername: the name of the folder;
# - localfolders: path to the local directory hosting all Maildir
# folders for the account.
enabled = no
filename = ~/Mutt/muttrc.mailboxes

View File

@ -390,7 +390,8 @@ def syncfolder(account, remotefolder, quick):
localfolder = account.get_local_folder(remotefolder)
# Write the mailboxes
mbnames.add(account.name, localfolder.getname())
mbnames.add(account.name, localfolder.getname(),
localrepos.getlocalroot())
# Load status folder.
statusfolder = statusrepos.getfolder(remotefolder.getvisiblename().\

View File

@ -21,6 +21,7 @@ import re # for folderfilter
from threading import Lock
boxes = {}
localroots = {}
config = None
accounts = None
mblock = Lock()
@ -30,9 +31,10 @@ def init(conf, accts):
config = conf
accounts = accts
def add(accountname, foldername):
def add(accountname, foldername, localfolders):
if not accountname in boxes:
boxes[accountname] = []
localroots[accountname] = localfolders
if not foldername in boxes[accountname]:
boxes[accountname].append(foldername)
@ -64,10 +66,12 @@ def genmbnames():
{'re': re})
itemlist = []
for accountname in boxes.keys():
localroot = localroots[accountname]
for foldername in boxes[accountname]:
if folderfilter(accountname, foldername):
itemlist.append({'accountname': accountname,
'foldername': foldername})
'foldername': foldername,
'localfolders': localroot})
itemlist.sort(key = mb_sort_keyfunc)
format_string = config.get("mbnames", "peritem", raw=1)
itemlist = [format_string % d for d in itemlist]

View File

@ -259,3 +259,8 @@ class BaseRepository(CustomConfig.ConfigHelperMixin, object):
for the threads to terminate."""
pass
def getlocalroot(self):
""" Local root folder for storing messages.
Will not be set for remote repositories."""
return None