From 38edb1b16d25eaccd19aac12913f8a0b7d835b9b Mon Sep 17 00:00:00 2001 From: Panagiotis Ktistakis Date: Thu, 12 May 2016 18:46:46 +0300 Subject: [PATCH] Properly replace variables in set-cmd-text command This fixes #123 and allows variables like {url:pretty} to be used with set-cmd-text --- qutebrowser/mainwindow/statusbar/command.py | 23 ++++----------------- tests/integration/features/misc.feature | 6 +++--- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/qutebrowser/mainwindow/statusbar/command.py b/qutebrowser/mainwindow/statusbar/command.py index f44f35126..60287374a 100644 --- a/qutebrowser/mainwindow/statusbar/command.py +++ b/qutebrowser/mainwindow/statusbar/command.py @@ -23,7 +23,7 @@ from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QSize from PyQt5.QtWidgets import QSizePolicy from qutebrowser.keyinput import modeman, modeparsers -from qutebrowser.commands import cmdexc, cmdutils +from qutebrowser.commands import cmdexc, cmdutils, runners from qutebrowser.misc import cmdhistory from qutebrowser.misc import miscwidgets as misc from qutebrowser.utils import usertypes, log, objreg, qtutils @@ -105,24 +105,9 @@ class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit): space: If given, a space is added to the end. append: If given, the text is appended to the current text. """ - tabbed_browser = objreg.get('tabbed-browser', scope='window', - window=self._win_id) - if '{url}' in text: - try: - url = tabbed_browser.current_url().toString( - QUrl.FullyEncoded | QUrl.RemovePassword) - except qtutils.QtValueError as e: - msg = "Current URL is invalid" - if e.reason: - msg += " ({})".format(e.reason) - msg += "!" - raise cmdexc.CommandError(msg) - # FIXME we currently replace the URL in any place in the arguments, - # rather than just replacing it if it is a dedicated argument. We - # could split the args, but then trailing spaces would be lost, so - # I'm not sure what's the best thing to do here - # https://github.com/The-Compiler/qutebrowser/issues/123 - text = text.replace('{url}', url) + args = text.split() + args = runners.replace_variables(self._win_id, args) + text = ' '.join(args) if space: text += ' ' diff --git a/tests/integration/features/misc.feature b/tests/integration/features/misc.feature index 13a3c33c6..d2edfa4b3 100644 --- a/tests/integration/features/misc.feature +++ b/tests/integration/features/misc.feature @@ -15,9 +15,9 @@ Feature: Various utility commands. Scenario: :set-cmd-text with URL replacement When I open data/hello.txt - When I run :set-cmd-text :message-info >{url}< + When I run :set-cmd-text :message-info {url} And I run :command-accept - Then the message ">http://localhost:*/hello.txt<" should be shown + Then the message "http://localhost:*/hello.txt" should be shown Scenario: :set-cmd-text with -s and -a When I run :set-cmd-text -s :message-info "foo @@ -342,7 +342,7 @@ Feature: Various utility commands. Scenario: Running :pyeval with --quiet When I run :debug-pyeval --quiet 1+1 Then "pyeval output: 2" should be logged - + ## https://github.com/The-Compiler/qutebrowser/issues/504 Scenario: Focusing download widget via Tab