Florian Bruhin
9a6de48efa
Break long line
2017-09-21 09:12:25 +02:00
Florian Bruhin
fb33985f07
Merge remote-tracking branch 'origin/pr/2992'
2017-09-21 09:12:03 +02:00
Florian Bruhin
192c063743
Mark another window.open test as flaky
...
See https://travis-ci.org/qutebrowser/qutebrowser/jobs/277846887
2017-09-21 08:58:56 +02:00
Florian Bruhin
9913550688
Fix windows condition
2017-09-20 18:28:18 +02:00
Felix Van der Jeugt
6892705e18
cover setting-saving-loading-getting yaml config
2017-09-20 15:52:42 +02:00
Ryan Roden-Corrent
5cd00f699e
Resolve KeyError when deleting URL with space.
...
Resolves #2963 .
2017-09-20 07:15:59 -04:00
Ryan Roden-Corrent
f9440b8026
Use CommandParser for configmodel.bind.
...
The parsing bind() did manually is now available through CommandParser.
Resolves #2952 .
This also adds a unit test for the case when there is no current
binding, as I broke that while working on this and there was no test to
catch it :)
2017-09-20 07:05:38 -04:00
Florian Bruhin
1d964ccdaf
Only run system datadir test on Linux
2017-09-20 12:20:46 +02:00
Florian Bruhin
2a4f10f0f5
Add qapp for tabbed_browser_stubs
2017-09-20 11:30:18 +02:00
Florian Bruhin
46cfd5353d
Use a pytest marker to fake an OS
2017-09-20 11:30:18 +02:00
Florian Bruhin
ef1c83862b
Use utils.is_* for platform checks everywhere
2017-09-20 11:10:24 +02:00
Felix Van der Jeugt
285b534384
make changed dirty and save on duplicate write
2017-09-20 10:04:34 +02:00
Florian Bruhin
55cbb39127
Merge remote-tracking branch 'origin/pr/2999'
2017-09-20 08:48:22 +02:00
Florian Bruhin
a519d54e7d
Remove hypothesis strict setting
...
It was deprecated as normal python warnings are used now
2017-09-20 08:17:04 +02:00
Florian Bruhin
54ceb52eaf
Switch to using Item.get_report() for vulture
2017-09-20 08:17:04 +02:00
Florian Bruhin
22be2bf7ab
Fix circular import in ImportFake in test_version
...
We can't use importlib.import_module() when we patched that away...
2017-09-20 08:17:04 +02:00
Ryan Farley
dd4294de03
fix #2979 : use dictionary for mutable tracking
...
Using a dictionary instead of a list keeps only one working copy,
allowing consistency in between calls of update_mutables()
2017-09-19 16:26:02 -05:00
Florian Bruhin
3a5241b642
Start using attrs
...
Closes #1073
2017-09-19 22:21:45 +02:00
Ryan Farley
cc540bb166
Merge branch 'master' into mutable-dict
2017-09-19 14:07:46 -05:00
Ryan Farley
83473b9c69
fix test for new tuples
2017-09-19 14:00:44 -05:00
Felix Van der Jeugt
8db630d358
don't copy values but set dirty
2017-09-19 17:26:03 +02:00
Felix Van der Jeugt
7b192d426e
add unit test and fix issues with it
2017-09-19 15:30:28 +02:00
Florian Bruhin
7226750363
Bump up Hypothesis deadline globally
2017-09-19 15:08:56 +02:00
Florian Bruhin
bb073e1709
Bump up another hypothesis deadline
2017-09-19 13:38:44 +02:00
Florian Bruhin
248afde21e
configapi: Also allow mode as posarg
2017-09-19 13:18:44 +02:00
Florian Bruhin
e8ae672c93
Check for read errors in test_configfiles
2017-09-19 13:18:16 +02:00
Florian Bruhin
7d1549aaeb
Make mode optionally in ConfigAPI.bind and .unbind
2017-09-19 13:14:41 +02:00
Florian Bruhin
a23492fe27
Bump up hypothesis deadline for Content-Disposition test
2017-09-19 11:16:03 +02:00
Florian Bruhin
51afe14965
Set backend to QtWebKit in cookie tests
2017-09-19 11:07:11 +02:00
Florian Bruhin
55a4eb18f2
Get rid of httpbin
...
Fixes #2949
2017-09-19 10:35:54 +02:00
Florian Bruhin
e9b8288e4b
Add a test for Config._set_value without backend
2017-09-19 07:08:56 +02:00
Florian Bruhin
13a8867e13
Add tests for config.get_backend()
2017-09-19 07:05:36 +02:00
Florian Bruhin
7bece81519
Make sure tests always have object.backend set
2017-09-19 06:46:08 +02:00
Florian Bruhin
8ae87bbde2
Remove typing module from version.py
...
It comes with python now
2017-09-18 23:06:49 +02:00
Florian Bruhin
3772dc5930
Drop legacy QtWebKit support
...
See #2742
2017-09-18 23:01:17 +02:00
Florian Bruhin
3e70bf5af9
Make sure we never compare against an uninit'ed backend
2017-09-18 23:01:17 +02:00
Florian Bruhin
5298d14084
Move backend initialization to config.py
2017-09-18 23:01:17 +02:00
Florian Bruhin
505321c336
Drop support for Python 3.4
...
See #2742
2017-09-18 23:01:17 +02:00
Florian Bruhin
852baaa8c3
Drop support for Qt < 5.7.1
...
See #2742
2017-09-18 23:01:17 +02:00
Florian Bruhin
66e4c3286a
Fix lint
2017-09-17 22:53:32 +02:00
Florian Bruhin
fe05947b54
Add a new qt_args setting
...
See #2589
2017-09-17 22:53:27 +02:00
Florian Bruhin
4c616a5733
Move all documentation files to doc/
2017-09-17 21:27:38 +02:00
Florian Bruhin
3e0ca5d94d
Stop using objreg for state-config
2017-09-17 21:04:34 +02:00
Florian Bruhin
70b8585e95
Move qtutils.unset_organization to standarddir
2017-09-17 20:44:08 +02:00
Florian Bruhin
f40103cbba
Don't require qapp for configtypes tests anymore
...
We need to make sure they work without a QApplication, and the only reason they
needed one before was standarddir.
2017-09-17 20:38:34 +02:00
Ryan Farley
b35a808712
test multiple mutations for config
...
This detects the problem in #2979
2017-09-17 13:24:05 -05:00
Florian Bruhin
6f1b8bd1d9
Make sure the config is available before the QApplication
...
See #2589
2017-09-17 20:06:35 +02:00
Florian Bruhin
21a10fcb17
Break up long line
2017-09-17 16:33:37 +02:00
Florian Bruhin
e4d05e3fec
Log error information when config init fails
2017-09-17 14:13:36 +02:00
Florian Bruhin
62b30af12a
Fix unit tests for end2end SQL change
2017-09-17 11:49:42 +02:00
Florian Bruhin
f85f4630ff
Turn off SQL history writing during end2end tests
...
This hopefully makes them a bit faster, and also should help with weird hangs we
had in tests.
2017-09-17 10:58:30 +02:00
Florian Bruhin
f6d878f33f
Mark window.open test as flaky
2017-09-17 10:36:28 +02:00
Florian Bruhin
f29bafcdb2
Fix expected dir on macOS
2017-09-17 10:35:05 +02:00
Florian Bruhin
7ed64efa08
Fix standarddir.cache() on Windows
2017-09-17 10:35:05 +02:00
Florian Bruhin
b31db0d0d5
Add another str() for paths
...
Using py.path for os.path is only supported since 3.6
2017-09-17 09:49:06 +02:00
Florian Bruhin
5aa653a54f
Fix IPC socket location test
...
We use fake_runtime_dir which simply patches XDG_RUNTIME_DIR for this test.
Since we patch QApplication.applicationName() during the tests, but standarddir
doesn't use that anymore, we get a different name.
2017-09-17 09:49:06 +02:00
Florian Bruhin
df9726a152
Fix standarddir without AppDataLocation
2017-09-17 09:49:06 +02:00
Florian Bruhin
9354297276
Add test for standarddir without QApplication
...
See #2791 .
2017-09-16 23:48:06 +02:00
Florian Bruhin
9706dcbda5
Fix lint
2017-09-16 23:48:02 +02:00
Florian Bruhin
a1fa40f067
Remove the ability to migrate old QtWebEngine data
...
Versions before v0.9.0 (which didn't even support hinting with QtWebEngine!)
used to write QtWebEngine data to:
~/.local/share/qutebrowser/qutebrowser/QtWebEngine/Default
~/.cache/qutebrowser/qutebrowser/QtWebEngine/Default
In v0.9.0 this was changed to:
~/.local/share/qutebrowser/webengine
~/.cache/qutebrowser/webengine
Now we don't try to migrate data from the old location anymore.
2017-09-16 23:48:02 +02:00
Florian Bruhin
a85e19a5e1
Add initial support for early standarddir init
...
See #2589 , #2791
2017-09-16 23:47:22 +02:00
Florian Bruhin
624c3a4c27
Merge branch 'new-config'
2017-09-16 16:12:21 +02:00
Florian Bruhin
0aa85f5967
Skip SSL download test if SSL is not supported
...
This makes the testsuite pass entirely with a PyPI PyQt and OpenSSL 1.1
2017-09-16 10:43:59 +02:00
Florian Bruhin
3179e8c7b9
Always autoescape jinja environments unless overridden
...
We were only rendering .html files before, so the old _guess_autoescape function
had the effect of always autoescaping .render() (from a file) but never
autoescaping .from_string(). However, most places using .from_string() actually
render (Qt-)HTML via jinja, so they should escape stuff!
Now, we always autoescape, except when the caller uses the
jinja.environment.no_autoescape() context manager, which places rendering
stylesheets now do.
This impacted:
- Confirm quit texts (no HTML here)
- config.py loading errors
(where this was found because of an error containing - a <keybinding>)
- Certificate error prompts
(should be fine from what I can tell, as the only user-controllable output is
the hostname, which cannot contain HTML)
2017-09-16 10:43:59 +02:00
Florian Bruhin
c8f3743008
Remove auto_save.config setting
...
This is not needed anymore now that we have config.load_autoconfig=False and
wasn't even read anywhere.
2017-09-15 22:22:09 +02:00
Florian Bruhin
4f6e085be8
Quote a completed value if it contains "
2017-09-15 22:17:38 +02:00
Florian Bruhin
a7d5a98cc4
Fix NUL byte error handling on Python 3.4
...
Looks like Python 3.4 raises TypeError and not ValueError...
2017-09-15 22:17:38 +02:00
Florian Bruhin
d901bee88e
Fix test_oserror on older Pythons
2017-09-15 22:17:38 +02:00
Florian Bruhin
42039eee99
Fully remove ConfigAPI.val
2017-09-15 19:01:03 +02:00
Florian Bruhin
3be7299cb4
Fix completions for FlagList
2017-09-15 18:41:08 +02:00
Florian Bruhin
2e8419db27
Fix lint
2017-09-15 17:24:39 +02:00
Florian Bruhin
c9625cb311
Add more tests for YAML error handling
2017-09-15 17:21:11 +02:00
Florian Bruhin
3f8817cc2d
Use blocking message boxes for config errors
2017-09-15 17:21:11 +02:00
Florian Bruhin
745ef63451
Start implementing autoconfig.yml error handling
2017-09-15 17:21:11 +02:00
Florian Bruhin
3d3391b55e
Clean up *_tmpdir fixtures
2017-09-15 14:32:03 +02:00
Florian Bruhin
fa4ea912c9
Get rid of init_standarddir fixture
...
Instead, always patch in tmpdir's so we don't write to qute_test folders.
2017-09-15 14:30:46 +02:00
Florian Bruhin
e87a782411
Move command-history init to cmdhistory.py
2017-09-15 14:27:15 +02:00
Florian Bruhin
54214873f4
Resurrect :debug-cache-stats test
2017-09-15 14:16:42 +02:00
Florian Bruhin
54dfc083f9
Remove default_config fixture
2017-09-15 14:13:27 +02:00
Florian Bruhin
9f955f251a
Reshape comments
2017-09-15 14:11:45 +02:00
Florian Bruhin
e0621c6eda
Fix initializing without a config.py
2017-09-15 14:08:37 +02:00
Florian Bruhin
f406e8d9ca
Remove config.val support for config.py
2017-09-15 14:08:37 +02:00
Florian Bruhin
25baf3b97e
Add more tests for config.py error handling
2017-09-15 13:30:09 +02:00
Florian Bruhin
5efce10c2c
Add initial tests for config.py error handling
2017-09-15 12:07:54 +02:00
Florian Bruhin
4da9b8c495
check_coverage: Truncate long floats
2017-09-15 12:07:54 +02:00
Florian Bruhin
c5c566aadc
tests: Bump up timeout for CallbackChecker
2017-09-15 12:07:54 +02:00
Florian Bruhin
b8fb88f4c2
Improve config error handling
...
- Errors are now combined if possible
- Rich text output in message boxes
- ConfigContainer errors are collected properly
2017-09-15 12:07:54 +02:00
Florian Bruhin
490de32b49
Initial attempt at error handling for config.py
2017-09-14 21:51:29 +02:00
Florian Bruhin
5a11c96e56
Don't fail tests because of OpenSSL 1.1 warnings
...
"Downloading with SSL errors" from downloads.feature still fails, but like this,
at least all other tests pass without the need to modify LD_LIBRARY_PATH.
2017-09-14 18:23:40 +02:00
Florian Bruhin
b3734b151b
Handle mutations in config.py correctly
2017-09-14 17:38:33 +02:00
Florian Bruhin
cb806aefa3
Initial config.py support
...
See #2795
2017-09-14 17:38:33 +02:00
Florian Bruhin
ed6933a839
tests: Ignore "Invalid node channel message" log from Chromium
2017-09-14 16:15:07 +02:00
Florian Bruhin
0a3a1b756d
Mark confirm_quit test to only run on Windows
...
See #2964
2017-09-14 16:14:01 +02:00
Florian Bruhin
6618c3a6e8
Don't use shlex for configtypes.ShellCommand
...
We accidentally did show the command as a list in to_str(). However, after
correcting that to use shlex.escape, we got ugly qutebrowser command lines
when tabbing to the default value, because of how shlex handles double-escaping:
>>> print(shlex.quote("gvim -f '{}'"))
'gvim -f '"'"'{}'"'"''
While in this case, outputting "gvim -f '{}'" would be much more appropriate, it
doesn't look like we can teach shlex.quote to do that.
Instead, we now only accept a list as input for ShellCommand, at the price that
the user needs to do
:set editor.command '["gvim", "-f", "{}"]'
instead of
:set editor.command 'gvim -f {}'
Fixes #2962 .
2017-09-14 14:44:24 +02:00
Florian Bruhin
12260e068a
Don't move cache directory on Windows
2017-09-14 13:35:42 +02:00
Florian Bruhin
5cd14c941b
Fix race condition is :jseval test
2017-09-14 09:33:58 +02:00
Florian Bruhin
0de7b2eb83
Skip standarddir migrations when a basedir is given
2017-09-14 00:37:54 +02:00
Florian Bruhin
3dc67df180
Fix minor standarddir migration issues
2017-09-14 00:37:54 +02:00
Florian Bruhin
d1e69a75dd
tests: Ignore some more Mac Mini messages
2017-09-14 00:37:54 +02:00
Florian Bruhin
cee51df4fb
Refactor JS log handling and use a dict for javascript.log
...
Fixes #2828
2017-09-14 00:37:01 +02:00
Florian Bruhin
1fc9817cd4
Remove support for ambiguous keybindings
2017-09-14 00:37:01 +02:00
Florian Bruhin
9d95dec5ea
Handle standarddir.config() correctly on macOS
...
With auto=False we should get ~/.qutebrowser
2017-09-13 21:32:36 +02:00
Florian Bruhin
08b5fc8e3b
Stabilize qute://plainlog test
...
Looks like we actually get a loading event on Qt 5.9 just fine, and there was a
race condition here otherwise.
2017-09-13 21:32:36 +02:00
Florian Bruhin
70a9a7e5c8
Fix macOS testsuite issues
2017-09-13 21:32:36 +02:00
Florian Bruhin
231193f7a6
Fix standarddir test coverage
2017-09-13 21:32:36 +02:00
Florian Bruhin
2f394d3c9f
Mock out all moving functions for standarddir.init()
2017-09-13 21:32:36 +02:00
Florian Bruhin
50aab7a802
Skip tests needing AppDataLocation on older Qt versions
2017-09-13 21:32:22 +02:00
Florian Bruhin
f7d17c4c55
Allow existing empty dir when migrating files
...
Remove old empty directory if it exists - otherwise, we move old/data to
new/data/data.
2017-09-13 21:32:22 +02:00
Florian Bruhin
0498e042a0
Ignore another macOS log line
2017-09-13 21:32:22 +02:00
Florian Bruhin
e84c1fa82f
Call _init_config in test_fake_mac_auto_config
2017-09-13 21:32:22 +02:00
Florian Bruhin
2a9441dfbf
Make moving data in standarddir more generic
2017-09-13 21:32:22 +02:00
Florian Bruhin
8c4bc76de6
Stabilize hint test which failed on macOS
2017-09-13 17:26:56 +02:00
Florian Bruhin
ad2598b475
Add initial support for standarddir.config(auto=True)
...
This doesn't actually migrate things yet.
See #2791 , #383 .
2017-09-13 17:26:56 +02:00
Florian Bruhin
a2f16dbecd
Merge standarddir.system_data() into standarddir.data(system=True)
...
See #2791
2017-09-13 17:26:56 +02:00
Florian Bruhin
2d500d4efa
Also don't create ~/Downloads in standarddir.downloads()
...
This means we need to create it in downloads.py instead.
Fixes #2418
2017-09-13 17:26:56 +02:00
Florian Bruhin
91f5e72f02
Remove download dir from path info
...
This always returns the default Qt path (e.g. ~/Downloads) and also creates it
each time.
See #2418
2017-09-13 17:26:56 +02:00
Florian Bruhin
b185e57406
Remove change_qapp_name in test_standarddir
...
This is already done in conftest.py anyways
2017-09-13 17:26:56 +02:00
Florian Bruhin
56bbd73622
Introduce standarddir caching
...
This makes things a bit more complicated, but is needed to make standarddir (and
thus the config) work without a QApplication.
2017-09-13 17:26:56 +02:00
Florian Bruhin
56b673ca05
tests: Don't use <Ctrl+Backspace> to clear qute://settings fields
...
This won't work on macOS
2017-09-13 10:29:54 +02:00
Florian Bruhin
5d50ec612d
Disable qsettings subdir test on macOS
...
QSettings uses a plist file there.
2017-09-13 10:21:23 +02:00
Florian Bruhin
73ea316501
Use upper-case Monospace in test_progress_affecting_statusbar_height
...
While the test worked again with eb4691adfc
, it
broke again immediately because of 40ee89bddc
.
With that fix in, the lower-case monospace in the set value was immediately
replaced by the full list of fonts again. With an upper-case Monospace, this
won't happen.
Fixes #2825 , for real this time.
2017-09-12 22:51:52 +02:00
Florian Bruhin
b04a233e8d
Adjust :unbind signature to match :bind
2017-09-12 22:51:52 +02:00
Florian Bruhin
eb4691adfc
Fix test_progress_affecting_statusbar_height on Windows
...
Fixes #2825
2017-09-12 22:12:37 +02:00
Florian Bruhin
40ee89bddc
Initialize monospace fonts in tests properly
...
See #2825
2017-09-12 22:12:37 +02:00
Florian Bruhin
9bcd120dcc
Only mark completion issue as flaky
2017-09-11 19:33:27 +02:00
Florian Bruhin
f6a0500bd3
Merge branch 'master' into new-config
...
This pulls the travis changes to drop the old Qt 5.2 environment.
2017-09-11 18:39:41 +02:00
Florian Bruhin
a65d70820a
Add macOS xfail for session completion test
...
See #2956
2017-09-11 18:33:08 +02:00
Florian Bruhin
50d43b0678
Fix some macOS testsuite issues
2017-09-11 18:33:08 +02:00
Florian Bruhin
2538fec0c5
Ignore Mach IPC message
2017-09-11 18:33:08 +02:00
Florian Bruhin
f320da07b4
Increase timeout for test_version
2017-09-11 18:33:07 +02:00
Florian Bruhin
9e10f891ff
Print output earlier in test_version
2017-09-11 18:32:23 +02:00
Florian Bruhin
9a8088586f
tests: Ignore dbus-uuidgen error messages
2017-09-11 18:32:23 +02:00
Florian Bruhin
1491f20201
Remove geolocation tests
...
They just cause more trouble than they're worth.
2017-09-11 18:32:23 +02:00
Florian Bruhin
b4f30f6df2
Move coverage to QtWebEngine environment with PyPI-PyQt
2017-09-11 18:30:23 +02:00
Florian Bruhin
a283a1bb65
Merge branch 'master' into new-config
2017-09-09 10:52:02 +02:00
Ryan Roden-Corrent
a6d14ad7dc
Fix two new-config/master merge resolutions.
...
Remove icon from jinja.render call (removed in master).
Add 'When the unwritable dir is unwritable' to download feature file.
2017-09-07 08:58:55 -04:00
Ryan Roden-Corrent
63e0574411
Remove stray FIXME:conf
2017-09-07 07:32:46 -04:00
Ryan Roden-Corrent
a5ecb75fcd
Really avoid flakiness in test_models.
...
Ensure the OrderedDict is actually ordered consistently.
2017-09-05 07:52:42 -04:00
Ryan Roden-Corrent
fc02216754
Avoid flakiness in test_models.
...
Ensure config values are ordered consistently by using an OrderedDict.
2017-09-04 16:30:54 -04:00
Ryan Roden-Corrent
0d78c72018
Remove config dependency from get_cmd_completions.
...
In order to really resolve the python3.4 circular import, this should
take the completion info as an argument and not depend on the config
module.
2017-09-04 15:00:35 -04:00
Ryan Roden-Corrent
3bfa01f0d0
Pass CompletionInfo to completion functions.
...
In python3.4, there is a circular dependency between the config module
and configmodel.bind. This is resolved by dependency injection. The
config/keyconfig instances are embedded in a struct passed to every
completion function, so the functions no longer depend on the modules.
This will also enable completion functions to access other previously
inaccessible info, such as the window id.
See #2814 .
2017-09-04 14:01:48 -04:00
Ryan Roden-Corrent
6a292f9d56
Merge quteurls.feature into qutescheme.feature.
2017-08-28 07:18:14 -04:00
Florian Bruhin
79d3c49f26
Merge pull request #2909 from jgkamat/jay/fix-2900
...
Fix saving a session with --only-active-window
2017-08-28 07:58:25 +02:00
Ryan Roden-Corrent
61a03a7808
Add quteurls.feature
...
Move Scenario: Open qute://version from misc.feature to quteurls.feature
See #2779 .
2017-08-27 22:37:04 -04:00
Ryan Roden-Corrent
b89caf0458
Use REPLACE when rebuilding completion table.
...
When upgrading from an old table that used different url formatting, two
entries might map to the same key, so we'll need to replace the previous
entry to avoid a primary key conflict.
2017-08-23 21:26:27 -04:00
Ryan Roden-Corrent
d35b47c9d8
Regenerate history completion on version change.
...
Incrementing _USER_VERSION in the source will cause the
HistoryCompletion table to regenerate when users update.
This is currently necessary to support some recent formatting fixes, but
could be incremented again in the future for other changes.
2017-08-21 08:45:40 -04:00
Ryan Roden-Corrent
111846a909
Merge remote-tracking branch 'upstream/master' into configmerge
2017-08-20 21:18:47 -04:00
Ryan Roden-Corrent
722137ab29
Fix 2 end2end tests for config/completion merge.
2017-08-20 21:15:25 -04:00
Ryan Roden-Corrent
b5a6583559
Fix pylint/flake8/vulture errors.
2017-08-20 21:12:38 -04:00
Ryan Roden-Corrent
90c49b3fe7
Move bind completion to configmodels.
...
When in miscmodels, the config module was unable to find the function.
It appears to be some sort of circular import issue:
```
File "/home/rcorre/projects/contrib/qutebrowser/qutebrowser/app.py", line 44, in <module>
from qutebrowser.completion.models import miscmodels
File "/home/rcorre/projects/contrib/qutebrowser/qutebrowser/completion/models/miscmodels.py", line 24, in <module>
from qutebrowser.completion.models import completionmodel, listcategory, util
File "/home/rcorre/projects/contrib/qutebrowser/qutebrowser/completion/models/util.py", line 24, in <module>
from qutebrowser.config import config
File "/home/rcorre/projects/contrib/qutebrowser/qutebrowser/config/config.py", line 223, in <module>
class ConfigCommands:
File "/home/rcorre/projects/contrib/qutebrowser/qutebrowser/config/config.py", line 314, in ConfigCommands
@cmdutils.argument('command', completion=miscmodels.bind)
AttributeError: module 'qutebrowser.completion.models.miscmodels' has no attribute 'bind'
```
As configmodel imports util (and thereby config as well) it is unclear
to me why moving bind() to configmodel actually fixes this, but it does.
2017-08-20 21:12:38 -04:00