Merge branch 'forkbong-set-cmd-text-variables'

This commit is contained in:
Florian Bruhin 2016-05-15 11:09:37 +02:00
commit 8193644a04
5 changed files with 32 additions and 30 deletions

View File

@ -157,9 +157,9 @@ Contributors, sorted by the number of commits in descending order:
* Artur Shaik
* Nathan Isom
* Thorsten Wißmann
* Panagiotis Ktistakis
* Kevin Velghe
* Austin Anderson
* Panagiotis Ktistakis
* Jimmy
* Alexey "Averrin" Nabrodov
* avk

View File

@ -650,6 +650,8 @@ Syntax: +:set-cmd-text [*--space*] [*--append*] 'text'+
Preset the statusbar to some text.
You can use the `{url}` and `{url:pretty}` variables here which will get replaced by the encoded/decoded URL.
==== positional arguments
* +'text'+: The commandline to set.

View File

@ -1386,13 +1386,13 @@ KEY_DATA = collections.OrderedDict([
('normal', collections.OrderedDict([
('clear-keychain ;; search', ['<Escape>']),
('set-cmd-text -s :open', ['o']),
('set-cmd-text :open {url}', ['go']),
('set-cmd-text :open {url:pretty}', ['go']),
('set-cmd-text -s :open -t', ['O']),
('set-cmd-text :open -t {url}', ['gO']),
('set-cmd-text :open -t {url:pretty}', ['gO']),
('set-cmd-text -s :open -b', ['xo']),
('set-cmd-text :open -b {url}', ['xO']),
('set-cmd-text :open -b {url:pretty}', ['xO']),
('set-cmd-text -s :open -w', ['wo']),
('set-cmd-text :open -w {url}', ['wO']),
('set-cmd-text :open -w {url:pretty}', ['wO']),
('open -t', ['ga', '<Ctrl-T>']),
('open -w', ['<Ctrl-N>']),
('tab-close', ['d', '<Ctrl-W>']),

View File

@ -19,14 +19,14 @@
"""The commandline in the statusbar."""
from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QSize
from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QSize
from PyQt5.QtWidgets import QSizePolicy
from qutebrowser.keyinput import modeman, modeparsers
from qutebrowser.commands import cmdexc, cmdutils
from qutebrowser.misc import cmdhistory
from qutebrowser.commands import cmdexc, cmdutils, runners
from qutebrowser.misc import cmdhistory, split
from qutebrowser.misc import miscwidgets as misc
from qutebrowser.utils import usertypes, log, objreg, qtutils
from qutebrowser.utils import usertypes, log, objreg
class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
@ -95,6 +95,9 @@ class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
def set_cmd_text_command(self, text, space=False, append=False):
"""Preset the statusbar to some text.
You can use the `{url}` and `{url:pretty}` variables here which will get
replaced by the encoded/decoded URL.
//
Wrapper for set_cmd_text to check the arguments and allow multiple
@ -105,24 +108,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 = split.simple_split(text)
args = runners.replace_variables(self._win_id, args)
text = ' '.join(args)
if space:
text += ' '

View File

@ -15,9 +15,21 @@ 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}<
And 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 URL replacement with encoded spaces
When I open data/title with spaces.html
And I run :set-cmd-text :message-info {url}
And I run :command-accept
Then the message "http://localhost:*/title%20with%20spaces.html" should be shown
Scenario: :set-cmd-text with URL replacement with decoded spaces
When I open data/title with spaces.html
And I run :set-cmd-text :message-info "> {url:pretty} <"
And I run :command-accept
Then the message "> http://localhost:*/title with spaces.html <" should be shown
Scenario: :set-cmd-text with -s and -a
When I run :set-cmd-text -s :message-info "foo
@ -342,7 +354,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