summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2015-04-13 08:38:12 +0200
committerFlorian Bruhin <git@the-compiler.org>2015-04-13 08:38:12 +0200
commitf85ba8645f3fa7a33da30a6000884ef8e0016a79 (patch)
tree1e19b8690c8afc5632bdd781172c24b70780110c
parentd700d1878029ac06ac2cb3c45085d188b646c546 (diff)
downloadqutebrowser-f85ba8645f3fa7a33da30a6000884ef8e0016a79.tar.gz
qutebrowser-f85ba8645f3fa7a33da30a6000884ef8e0016a79.zip
Handle a missing session folder at some places.
-rw-r--r--qutebrowser/app.py8
-rw-r--r--qutebrowser/completion/models/miscmodels.py11
-rw-r--r--qutebrowser/misc/sessions.py6
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))