Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/pr/4129'
Browse files Browse the repository at this point in the history
  • Loading branch information
The-Compiler committed Aug 13, 2018
2 parents 92a8563 + 0e3e41a commit 748d80c
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 3 deletions.
3 changes: 3 additions & 0 deletions doc/help/commands.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -1200,6 +1200,9 @@ Spawn a command in a shell.
* +*-o*+, +*--output*+: Whether the output should be shown in a new tab.
* +*-d*+, +*--detach*+: Whether the command should be detached from qutebrowser.

==== count
Given to userscripts as $QUTE_COUNT.

==== note
* This command does not split arguments after the last argument and handles quotes literally.

Expand Down
1 change: 1 addition & 0 deletions doc/userscripts.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ In `command` mode:
- `QUTE_URL`: The current URL.
- `QUTE_TITLE`: The title of the current page.
- `QUTE_SELECTED_TEXT`: The text currently selected on the page.
- `QUTE_COUNT`: The `count` from the spawn command running the userscript.
In `hints` mode:

Expand Down
12 changes: 9 additions & 3 deletions qutebrowser/browser/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -1173,8 +1173,9 @@ def tab_move(self, index: typing.Union[str, int] = None, count=None):

@cmdutils.register(instance='command-dispatcher', scope='window',
maxsplit=0, no_replace_variables=True)
@cmdutils.argument('count', count=True)
def spawn(self, cmdline, userscript=False, verbose=False,
output=False, detach=False):
output=False, detach=False, count=None):
"""Spawn a command in a shell.
Args:
Expand All @@ -1188,6 +1189,7 @@ def spawn(self, cmdline, userscript=False, verbose=False,
output: Whether the output should be shown in a new tab.
detach: Whether the command should be detached from qutebrowser.
cmdline: The commandline to execute.
count: Given to userscripts as $QUTE_COUNT.
"""
cmdutils.check_exclusive((userscript, detach), 'ud')
try:
Expand All @@ -1211,7 +1213,7 @@ def _on_proc_finished():
if userscript:
def _selection_callback(s):
try:
runner = self._run_userscript(s, cmd, args, verbose)
runner = self._run_userscript(s, cmd, args, verbose, count)
runner.finished.connect(_on_proc_finished)
except cmdexc.CommandError as e:
message.error(str(e))
Expand All @@ -1238,19 +1240,23 @@ def home(self):
"""Open main startpage in current tab."""
self.openurl(config.val.url.start_pages[0])

def _run_userscript(self, selection, cmd, args, verbose):
def _run_userscript(self, selection, cmd, args, verbose, count):
"""Run a userscript given as argument.
Args:
cmd: The userscript to run.
args: Arguments to pass to the userscript.
verbose: Show notifications when the command started/exited.
count: Exposed to the userscript.
"""
env = {
'QUTE_MODE': 'command',
'QUTE_SELECTED_TEXT': selection,
}

if count is not None:
env['QUTE_COUNT'] = str(count)

idx = self._current_index()
if idx != -1:
env['QUTE_TITLE'] = self._tabbed_browser.widget.page_title(idx)
Expand Down
11 changes: 11 additions & 0 deletions tests/end2end/data/userscripts/hello_if_count
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash

if [ "$QUTE_COUNT" -eq 5 ]; then

echo "message-info 'Count is five!'" >> "$QUTE_FIFO"

elif [ -z "$QUTE_COUNT" ]; then

echo "message-info 'No count!'" >> "$QUTE_FIFO"

fi
11 changes: 11 additions & 0 deletions tests/end2end/features/spawn.feature
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,17 @@ Feature: :spawn
- data/hello.txt
- data/hello.txt (active)

@posix
Scenario: Running :spawn with userscript and count
When I run :spawn -u (testdata)/userscripts/hello_if_count with count 5
Then the message "Count is five!" should be shown

@posix
Scenario: Running :spawn with userscript and no count
When I run :spawn -u (testdata)/userscripts/hello_if_count
Then the message "No count!" should be shown


@windows
Scenario: Running :spawn with userscript on Windows
When I open data/hello.txt
Expand Down

0 comments on commit 748d80c

Please sign in to comment.