summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alot/defaults/alot.rc.spec6
-rw-r--r--alot/settings/manager.py22
-rw-r--r--docs/source/configuration/alotrc_table6
-rw-r--r--tests/settings/manager_test.py11
4 files changed, 19 insertions, 26 deletions
diff --git a/alot/defaults/alot.rc.spec b/alot/defaults/alot.rc.spec
index cfecb123..36b45124 100644
--- a/alot/defaults/alot.rc.spec
+++ b/alot/defaults/alot.rc.spec
@@ -31,12 +31,10 @@ tabwidth = integer(default=8)
# templates directory that contains your message templates.
# It will be used if you give `compose --template` a filename without a path prefix.
-# The default path is `$XDG_CONFIG_HOME/alot/temmplates`.
-template_dir = string(default=None)
+template_dir = string(default='$XDG_CONFIG_HOME/alot/templates')
# directory containing theme files.
-# The default path is `$XDG_CONFIG_HOME/alot/themes`.
-themes_dir = string(default=None)
+themes_dir = string(default='$XDG_CONFIG_HOME/alot/themes')
# name of the theme to use
theme = string(default=None)
diff --git a/alot/settings/manager.py b/alot/settings/manager.py
index 6f1d01ca..150bd7d1 100644
--- a/alot/settings/manager.py
+++ b/alot/settings/manager.py
@@ -97,12 +97,12 @@ class SettingsManager(object):
if isinstance(newbindings, Section):
self._bindings.merge(newbindings)
- tempdir = self._process_xdg_default('template_dir', 'alot/templates')
+ tempdir = self._process_xdg_default('template_dir')
logging.debug('template directory: `{}`'.format(tempdir))
# themes
themestring = newconfig['theme']
- themes_dir = self._process_xdg_default('themes_dir', 'alot/themes')
+ themes_dir = self._process_xdg_default('themes_dir')
logging.debug('themes directory: `{}`'.format(themes_dir))
# if config contains theme string use that
@@ -137,7 +137,7 @@ class SettingsManager(object):
self._accounts = self._parse_accounts(self._config)
self._accountmap = self._account_table(self._accounts)
- def _process_xdg_default(self, setting_name, fallback):
+ def _process_xdg_default(self, setting_name):
"""
Processes setting that uses $XDG_CONFIG_HOME in the default value.
@@ -147,20 +147,18 @@ class SettingsManager(object):
:param setting_name: name of setting to be processed
:type setting_name: str
- :param fallback: fallback path relative to ~/.config if the setting
- is not set by the user.
- :type fallback: str
:returns: path
:rvalue: str
"""
path = self._config.get(setting_name)
- if path:
- path = os.path.expanduser(path)
- else:
- xdgdir = get_env('XDG_CONFIG_HOME',
- os.path.expanduser('~/.config'))
- path = os.path.join(xdgdir, fallback)
+ if path.startswith('$XDG_CONFIG_HOME'):
+ if os.environ.get('XDG_CONFIG_HOME', False):
+ xdg_expanded = os.environ['XDG_CONFIG_HOME']
+ else:
+ xdg_expanded = '~/.config'
+ path = path.replace('$XDG_CONFIG_HOME', xdg_expanded)
+ path = os.path.expanduser(path)
self._config[setting_name] = path
return path
diff --git a/docs/source/configuration/alotrc_table b/docs/source/configuration/alotrc_table
index 0299d406..5806f7bd 100644
--- a/docs/source/configuration/alotrc_table
+++ b/docs/source/configuration/alotrc_table
@@ -576,10 +576,9 @@
templates directory that contains your message templates.
It will be used if you give `compose --template` a filename without a path prefix.
- The default path is `$XDG_CONFIG_HOME/alot/temmplates`.
:type: string
- :default: None
+ :default: "$XDG_CONFIG_HOME/alot/templates"
.. _terminal-cmd:
@@ -607,10 +606,9 @@
.. describe:: themes_dir
directory containing theme files.
- The default path is `$XDG_CONFIG_HOME/alot/themes`.
:type: string
- :default: None
+ :default: "$XDG_CONFIG_HOME/alot/themes"
.. _thread-authors-me:
diff --git a/tests/settings/manager_test.py b/tests/settings/manager_test.py
index c056524b..06200c71 100644
--- a/tests/settings/manager_test.py
+++ b/tests/settings/manager_test.py
@@ -139,8 +139,7 @@ class TestSettingsManager(unittest.TestCase):
class TestSettingsManagerProcessXDG(unittest.TestCase):
""" Tests SettingsManager._process_xdg_default """
setting_name = 'template_dir'
- def_relative = 'alot/templates'
- default = os.path.join('$XDG_CONFIG_HOME', def_relative)
+ default = '$XDG_CONFIG_HOME/alot/templates'
xdg_fallback = '~/.config'
xdg_config_home = '/foo/bar/.config'
default_expanded = default.replace('$XDG_CONFIG_HOME', xdg_fallback)
@@ -150,7 +149,7 @@ class TestSettingsManagerProcessXDG(unittest.TestCase):
if 'XDG_CONFIG_HOME' in os.environ:
del os.environ['XDG_CONFIG_HOME']
manager = SettingsManager()
- manager._process_xdg_default(self.setting_name, self.def_relative)
+ manager._process_xdg_default(self.setting_name)
self.assertEqual(manager._config.get(self.setting_name),
os.path.expanduser(self.default_expanded))
@@ -158,7 +157,7 @@ class TestSettingsManagerProcessXDG(unittest.TestCase):
with mock.patch.dict('os.environ'):
os.environ['XDG_CONFIG_HOME'] = ''
manager = SettingsManager()
- manager._process_xdg_default(self.setting_name, self.def_relative)
+ manager._process_xdg_default(self.setting_name)
self.assertEqual(manager._config.get(self.setting_name),
os.path.expanduser(self.default_expanded))
@@ -166,7 +165,7 @@ class TestSettingsManagerProcessXDG(unittest.TestCase):
with mock.patch.dict('os.environ'):
os.environ['XDG_CONFIG_HOME'] = self.xdg_config_home
manager = SettingsManager()
- manager._process_xdg_default(self.setting_name, self.def_relative)
+ manager._process_xdg_default(self.setting_name)
actual = manager._config.get(self.setting_name)
expected = self.default.replace('$XDG_CONFIG_HOME',
self.xdg_config_home)
@@ -182,7 +181,7 @@ class TestSettingsManagerProcessXDG(unittest.TestCase):
self.addCleanup(os.unlink, f.name)
manager = SettingsManager(alot_rc=f.name)
- manager._process_xdg_default(self.setting_name, self.def_relative)
+ manager._process_xdg_default(self.setting_name)
self.assertEqual(manager._config.get(self.setting_name),
os.path.expanduser(user_setting))