Handle a missing session folder at some places.

This commit is contained in:
Florian Bruhin 2015-04-13 08:38:12 +02:00
parent d700d18780
commit f85ba8645f
3 changed files with 18 additions and 7 deletions

View File

@ -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()

View File

@ -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!")

View File

@ -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))