Merge branch 'tex-autocompletion_enhancement'

This commit is contained in:
Florian Bruhin 2016-01-20 20:07:05 +01:00
commit 90ab2a7b38
4 changed files with 10 additions and 3 deletions

View File

@ -22,6 +22,7 @@ Added
- New `--quiet` argument for the `:debug-pyeval` command to not open a tab with
the results. Note `:debug-pyeval` is still only intended for debugging.
- The completion now matches each entered word separately.
Changed
~~~~~~~

View File

@ -158,6 +158,7 @@ Contributors, sorted by the number of commits in descending order:
* Thorsten Wißmann
* Alexey "Averrin" Nabrodov
* ZDarian
* Milan Svoboda
* John ShaggyTwoDope Jenkins
* Peter Vilim
* Tarcisio Fedrizzi

View File

@ -198,8 +198,8 @@ class CompletionItemDelegate(QStyledItemDelegate):
columns_to_filter = index.model().srcmodel.columns_to_filter
if index.column() in columns_to_filter and pattern:
repl = r'<span class="highlight">\g<0></span>'
text = re.sub(re.escape(pattern), repl, self._opt.text,
flags=re.IGNORECASE)
text = re.sub(re.escape(pattern).replace(r'\ ', r'.*'),
repl, self._opt.text, flags=re.IGNORECASE)
self._doc.setHtml(text)
else:
self._doc.setPlainText(self._opt.text)

View File

@ -27,6 +27,7 @@ from PyQt5.QtCore import QSortFilterProxyModel, QModelIndex, Qt
from qutebrowser.utils import log, qtutils, debug
from qutebrowser.completion.models import base as completion
import re
class CompletionFilterModel(QSortFilterProxyModel):
@ -46,6 +47,7 @@ class CompletionFilterModel(QSortFilterProxyModel):
super().setSourceModel(source)
self.srcmodel = source
self.pattern = ''
self.pattern_re = None
dumb_sort = self.srcmodel.DUMB_SORT
if dumb_sort is None:
@ -69,6 +71,9 @@ class CompletionFilterModel(QSortFilterProxyModel):
"""
with debug.log_time(log.completion, 'Setting filter pattern'):
self.pattern = val
val = re.escape(val)
val = val.replace(r'\ ', r'.*')
self.pattern_re = re.compile(val, re.IGNORECASE)
self.invalidateFilter()
sortcol = 0
try:
@ -146,7 +151,7 @@ class CompletionFilterModel(QSortFilterProxyModel):
data = self.srcmodel.data(idx)
if not data:
continue
elif self.pattern.casefold() in data.casefold():
elif self.pattern_re.search(data):
return True
return False