summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2014-12-26 16:57:08 +0100
committerFlorian Bruhin <git@the-compiler.org>2014-12-26 16:57:08 +0100
commitb1501a691db43b99bf10c78bf1c85507904d4caa (patch)
tree41411cf2ec5c364fcb085b50a884e00d44626cd3
parentd1e0de236d4fbde7470224f8a133eac3f4f1861d (diff)
downloadqutebrowser-b1501a691db43b99bf10c78bf1c85507904d4caa.tar.gz
qutebrowser-b1501a691db43b99bf10c78bf1c85507904d4caa.zip
Ignore empty parts when calculating cursor part.
Fixes #389.
-rw-r--r--qutebrowser/completion/completer.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/qutebrowser/completion/completer.py b/qutebrowser/completion/completer.py
index 452eafef5..ebc8fd0b0 100644
--- a/qutebrowser/completion/completer.py
+++ b/qutebrowser/completion/completer.py
@@ -177,7 +177,11 @@ class Completer(QObject):
return
except IndexError:
pass
+ log.completion.debug("Before filtering flags: parts {}, cursor_part "
+ "{}".format(parts, cursor_part))
parts, cursor_part = self._filter_cmdline_parts(parts, cursor_part)
+ log.completion.debug("After filtering flags: parts {}, cursor_part "
+ "{}".format(parts, cursor_part))
if cursor_part == 0:
# '|' or 'set|'
return self._models[usertypes.Completion.command]
@@ -359,28 +363,33 @@ class Completer(QObject):
"text: {}, parts: {}, cursor_pos after removing prefix '{}': "
"{}".format(self._cmd.text(), parts, self._cmd.prefix(),
cursor_pos))
+ skip = 0
for i, part in enumerate(parts):
log.completion.vdebug("Checking part {}: {}".format(i, parts[i]))
+ if not part:
+ skip += 1
+ continue
if cursor_pos <= len(part):
# foo| bar
- self._cursor_part = i
+ self._cursor_part = i - skip
if spaces:
- self._empty_item_idx = i
+ self._empty_item_idx = i - skip
else:
self._empty_item_idx = None
log.completion.vdebug("cursor_pos {} <= len(part) {}, "
- "setting cursor_part {}, empty_item_idx "
- "{}".format(cursor_pos, len(part), i,
- self._empty_item_idx))
+ "setting cursor_part {} - {} (skip), "
+ "empty_item_idx {}".format(
+ cursor_pos, len(part), i, skip,
+ self._empty_item_idx))
break
cursor_pos -= len(part)
log.completion.vdebug(
"Removing len({!r}) -> {} from cursor_pos -> {}".format(
part, len(part), cursor_pos))
else:
- self._cursor_part = i
+ self._cursor_part = i - skip
if spaces:
- self._empty_item_idx = i
+ self._empty_item_idx = i - skip
else:
self._empty_item_idx = None
log.completion.debug("cursor_part {}, spaces {}".format(