Avoid keyconf circular import.
The new function-based completion API introduced a circular import: config -> keyconf -> miscmodels -> config. config only depended on keyconf so it could initialize it as part of config.init. This can be resolved by moving this to keyconf.init and initializing keyconf as part of app.init.
This commit is contained in:
parent
fc5fd6096a
commit
6cc2095221
@ -45,6 +45,7 @@ import qutebrowser.resources
|
||||
from qutebrowser.completion.models import miscmodels
|
||||
from qutebrowser.commands import cmdutils, runners, cmdexc
|
||||
from qutebrowser.config import style, config, websettings, configexc
|
||||
from qutebrowser.config.parsers import keyconf
|
||||
from qutebrowser.browser import (urlmarks, adblock, history, browsertab,
|
||||
downloads)
|
||||
from qutebrowser.browser.network import proxy
|
||||
@ -423,6 +424,10 @@ def _init_modules(args, crash_handler):
|
||||
config.init(qApp)
|
||||
save_manager.init_autosave()
|
||||
|
||||
log.init.debug("Initializing keys...")
|
||||
keyconf.init(qApp)
|
||||
save_manager.init_autosave()
|
||||
|
||||
log.init.debug("Initializing sql...")
|
||||
sql.init()
|
||||
|
||||
|
@ -249,7 +249,6 @@ def init(parent=None):
|
||||
parent: The parent to pass to QObjects which get initialized.
|
||||
"""
|
||||
_init_main_config(parent)
|
||||
_init_key_config(parent)
|
||||
_init_misc()
|
||||
|
||||
|
||||
|
@ -22,15 +22,46 @@
|
||||
import collections
|
||||
import os.path
|
||||
import itertools
|
||||
import sys
|
||||
|
||||
from PyQt5.QtCore import pyqtSignal, QObject
|
||||
|
||||
from qutebrowser.config import configdata, textwrapper
|
||||
from qutebrowser.commands import cmdutils, cmdexc
|
||||
from qutebrowser.utils import log, utils, qtutils, message, usertypes
|
||||
from qutebrowser.utils import (log, utils, qtutils, message, usertypes, objreg,
|
||||
standarddir, error)
|
||||
from qutebrowser.completion.models import miscmodels
|
||||
|
||||
|
||||
def init(parent=None):
|
||||
"""Read and save keybindings.
|
||||
|
||||
Args:
|
||||
parent: The parent to use for the KeyConfigParser.
|
||||
"""
|
||||
args = objreg.get('args')
|
||||
try:
|
||||
key_config = KeyConfigParser(standarddir.config(), 'keys.conf',
|
||||
args.relaxed_config, parent=parent)
|
||||
except (KeyConfigError, UnicodeDecodeError) as e:
|
||||
log.init.exception(e)
|
||||
errstr = "Error while reading key config:\n"
|
||||
if e.lineno is not None:
|
||||
errstr += "In line {}: ".format(e.lineno)
|
||||
error.handle_fatal_exc(e, args, "Error while reading key config!",
|
||||
pre_text=errstr)
|
||||
# We didn't really initialize much so far, so we just quit hard.
|
||||
sys.exit(usertypes.Exit.err_key_config)
|
||||
else:
|
||||
objreg.register('key-config', key_config)
|
||||
save_manager = objreg.get('save-manager')
|
||||
filename = os.path.join(standarddir.config(), 'keys.conf')
|
||||
save_manager.add_saveable(
|
||||
'key-config', key_config.save, key_config.config_dirty,
|
||||
config_opt=('general', 'auto-save-config'), filename=filename,
|
||||
dirty=key_config.is_dirty)
|
||||
|
||||
|
||||
class KeyConfigError(Exception):
|
||||
|
||||
"""Raised on errors with the key config.
|
||||
|
Loading…
Reference in New Issue
Block a user