Merge remote-tracking branch 'origin/pr/3796'

This commit is contained in:
Florian Bruhin 2018-05-03 13:58:26 +02:00
commit 49bdcd5a97
3 changed files with 36 additions and 14 deletions

View File

@ -19,6 +19,8 @@
"""The commandline in the statusbar.""" """The commandline in the statusbar."""
import functools
from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QSize from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QSize
from PyQt5.QtWidgets import QSizePolicy from PyQt5.QtWidgets import QSizePolicy
@ -69,6 +71,14 @@ class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
self.textChanged.connect(self.updateGeometry) self.textChanged.connect(self.updateGeometry)
self.textChanged.connect(self._incremental_search) self.textChanged.connect(self._incremental_search)
dispatcher = objreg.get('command-dispatcher',
scope='window', window=self._win_id)
search_fn = dispatcher.search
self.search_prefixes = {
'/': search_fn,
'?': functools.partial(search_fn, reverse=True)
}
def prefix(self): def prefix(self):
"""Get the currently entered command prefix.""" """Get the currently entered command prefix."""
text = self.text() text = self.text()
@ -162,17 +172,17 @@ class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
Args: Args:
rapid: Run the command without closing or clearing the command bar. rapid: Run the command without closing or clearing the command bar.
""" """
prefixes = {
':': '',
'/': 'search -- ',
'?': 'search -r -- ',
}
text = self.text() text = self.text()
self.history.append(text) self.history.append(text)
if not rapid: if not rapid:
modeman.leave(self._win_id, usertypes.KeyMode.command, modeman.leave(self._win_id, usertypes.KeyMode.command,
'cmd accept') 'cmd accept')
self.got_cmd[str].emit(prefixes[text[0]] + text[1:])
prefix = text[0]
if prefix in self.search_prefixes:
self.search_prefixes[prefix](text[1:])
else:
self.got_cmd[str].emit(text[1:])
@cmdutils.register(instance='status-command', scope='window') @cmdutils.register(instance='status-command', scope='window')
def edit_command(self, run=False): def edit_command(self, run=False):
@ -258,10 +268,5 @@ class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
if not config.val.search.incremental: if not config.val.search.incremental:
return return
search_prefixes = { if self.prefix() in self.search_prefixes:
'/': 'search -- ', self.search_prefixes[self.prefix()](text[1:])
'?': 'search -r -- ',
}
if self.prefix() in ['/', '?']:
self.got_cmd[str].emit(search_prefixes[text[0]] + text[1:])

View File

@ -16,6 +16,8 @@
BAZ<br/> BAZ<br/>
space travel<br/> space travel<br/>
/slash<br/> /slash<br/>
-r reversed<br/>
;; semicolons<br/>
<a class="toselect" href="hello.txt">follow me!</a><br/> <a class="toselect" href="hello.txt">follow me!</a><br/>
</p> </p>
</body> </body>

View File

@ -40,11 +40,26 @@ Feature: Searching on a page
Then "space " should be found Then "space " should be found
Scenario: Searching with / and slash in search term (issue 507) Scenario: Searching with / and slash in search term (issue 507)
When I run :set-cmd-text -s //slash When I run :set-cmd-text //slash
And I run :command-accept And I run :command-accept
And I wait for "search found /slash" in the log And I wait for "search found /slash" in the log
Then "/slash" should be found Then "/slash" should be found
Scenario: Searching with arguments at start of search term
When I run :set-cmd-text /-r reversed
And I run :command-accept
And I wait for "search found -r reversed" in the log
Then "-r reversed" should be found
Scenario: Searching with semicolons in search term
When I run :set-cmd-text /;
And I run :fake-key -g ;
And I run :fake-key -g <space>
And I run :fake-key -g semi
And I run :command-accept
And I wait for "search found ;; semi" in the log
Then ";; semi" should be found
# This doesn't work because this is QtWebKit behavior. # This doesn't work because this is QtWebKit behavior.
@xfail_norun @xfail_norun
Scenario: Searching text with umlauts Scenario: Searching text with umlauts