diff options
author | Florian Bruhin <git@the-compiler.org> | 2015-04-13 08:38:12 +0200 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2015-04-13 08:38:12 +0200 |
commit | f85ba8645f3fa7a33da30a6000884ef8e0016a79 (patch) | |
tree | 1e19b8690c8afc5632bdd781172c24b70780110c | |
parent | d700d1878029ac06ac2cb3c45085d188b646c546 (diff) | |
download | qutebrowser-f85ba8645f3fa7a33da30a6000884ef8e0016a79.tar.gz qutebrowser-f85ba8645f3fa7a33da30a6000884ef8e0016a79.zip |
Handle a missing session folder at some places.
-rw-r--r-- | qutebrowser/app.py | 8 | ||||
-rw-r--r-- | qutebrowser/completion/models/miscmodels.py | 11 | ||||
-rw-r--r-- | qutebrowser/misc/sessions.py | 6 |
3 files changed, 18 insertions, 7 deletions
diff --git a/qutebrowser/app.py b/qutebrowser/app.py index db50f0425..efd37e24c 100644 --- a/qutebrowser/app.py +++ b/qutebrowser/app.py @@ -44,7 +44,7 @@ except ImportError: import qutebrowser import qutebrowser.resources # pylint: disable=unused-import from qutebrowser.completion.models import instances as completionmodels -from qutebrowser.commands import cmdutils, runners +from qutebrowser.commands import cmdutils, runners, cmdexc from qutebrowser.config import style, config, websettings, configexc from qutebrowser.browser import quickmarks, cookies, cache, adblock, history from qutebrowser.browser.network import qutescheme, proxy, networkmanager @@ -728,7 +728,11 @@ class Application(QApplication): @cmdutils.register(instance='app') def restart(self): """Restart qutebrowser while keeping existing tabs open.""" - ok = self._do_restart(session='_restart') + try: + ok = self._do_restart(session='_restart') + except sessions.SessionError as e: + log.destroy.exception("Failed to save session!") + raise cmdexc.CommandError("Failed to save session: {}!".format(e)) if ok: self.shutdown() diff --git a/qutebrowser/completion/models/miscmodels.py b/qutebrowser/completion/models/miscmodels.py index df8b2cdf9..f9af679ce 100644 --- a/qutebrowser/completion/models/miscmodels.py +++ b/qutebrowser/completion/models/miscmodels.py @@ -20,7 +20,7 @@ """Misc. CompletionModels.""" from qutebrowser.config import config, configdata -from qutebrowser.utils import objreg +from qutebrowser.utils import objreg, log from qutebrowser.commands import cmdutils from qutebrowser.completion.models import base @@ -120,6 +120,9 @@ class SessionCompletionModel(base.BaseCompletionModel): def __init__(self, parent=None): super().__init__(parent) cat = self.new_category("Sessions") - for name in objreg.get('session-manager').list_sessions(): - if not name.startswith('_'): - self.new_item(cat, name) + try: + for name in objreg.get('session-manager').list_sessions(): + if not name.startswith('_'): + self.new_item(cat, name) + except OSError: + log.completion.exception("Failed to list sessions!") diff --git a/qutebrowser/misc/sessions.py b/qutebrowser/misc/sessions.py index aeddea948..d0adbd259 100644 --- a/qutebrowser/misc/sessions.py +++ b/qutebrowser/misc/sessions.py @@ -375,6 +375,10 @@ class SessionManager(QObject): name)) try: self.delete(name) - except OSError as e: + except SessionNotFoundError as e: + log.misc.exception("Session not found!") + raise cmdexc.CommandError("Session {} not found".format(e)) + except (OSError, SessionError) as e: + log.misc.exception("Error while deleting session!") raise cmdexc.CommandError("Error while deleting session: {}" .format(e)) |