From 8a3aca63b063bbefc2fc46abecdec31222cf8bd4 Mon Sep 17 00:00:00 2001 From: Peter Vilim Date: Thu, 1 Jan 2015 22:32:39 -0600 Subject: [PATCH 01/14] Confirm quit if downloads running --- qutebrowser/config/configtypes.py | 55 +++++++++++++++++++++++++++- qutebrowser/mainwindow/mainwindow.py | 44 +++++++++++++++------- 2 files changed, 84 insertions(+), 15 deletions(-) diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index 0cc7592b4..4b445cd00 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -25,6 +25,7 @@ import base64 import codecs import os.path import sre_constants +import itertools from PyQt5.QtCore import QUrl from PyQt5.QtGui import QColor, QFont @@ -1223,14 +1224,66 @@ class AcceptCookies(BaseType): ('never', "Don't accept cookies at all.")) -class ConfirmQuit(BaseType): +class ConfirmQuit(List): """Whether to display a confirmation when the window is closed.""" + typestr = 'string-list' + valid_values = ValidValues(('always', "Always show a confirmation."), ('multiple-tabs', "Show a confirmation if " "multiple tabs are opened."), + ('downloads', "show a confirmation if downloads" + "are running"), ('never', "Never show a confirmation.")) + # Values that can be combined with commas + combinable_values = ('multiple-tabs', 'downloads') + + def transform(self, value): + # Backward compatible + if value == 'never': + return value + # Split configuration string into list + else: + return super().transform(value) + + def validate(self, value): + values = self.transform(value) + # Backward compatibility + if values == 'never': + return + # Never can't be set with other options + elif 'never' in values and isinstance(values, list): + raise configexc.ValidationError(value, "List cannot contain never!") + # Always can't be set with other options + elif 'always' in values and isinstance(values, list): + raise configexc.ValidationError(value, + "List cannot contain always!") + # Values have to be valid + elif not set(values).issubset(set(self.valid_values.values)): + raise configexc.ValidationError(value, "List contains invalid" + " values!") + # List can't have duplicates + elif len(set(values)) != len(values): + raise configexc.ValidationError(value, "List contains duplicate" + " values!") + + def complete(self): + combinations = [] + # Generate combinations of the options that can be combined + for size in range(2, len(self.combinable_values) + 1): + combinations = combinations + list( + itertools.combinations(self.combinable_values, size)) + out = [] + # Add valid single values + for val in self.valid_values: + out.append((val, self.valid_values.descriptions[val])) + # Add combinations to list of options + for val in combinations: + desc = '' + val = ','.join(val) + out.append((val, desc)) + return out class ForwardUnboundKeys(BaseType): diff --git a/qutebrowser/mainwindow/mainwindow.py b/qutebrowser/mainwindow/mainwindow.py index 2b2311dd2..801ded657 100644 --- a/qutebrowser/mainwindow/mainwindow.py +++ b/qutebrowser/mainwindow/mainwindow.py @@ -327,21 +327,37 @@ class MainWindow(QWidget): def closeEvent(self, e): """Override closeEvent to display a confirmation if needed.""" confirm_quit = config.get('ui', 'confirm-quit') - count = self._tabbed_browser.count() - if confirm_quit == 'never': + tab_count = self._tabbed_browser.count() + download_manager = objreg.get('download-manager', scope='window', + window=self.win_id) + download_count = download_manager.rowCount() + quit_text = [] + # Close if set to never ask for confirmation (backward compatible) + if confirm_quit == 'never' or 'never' in confirm_quit: pass - elif confirm_quit == 'multiple-tabs' and count <= 1: - pass - else: - text = "Close {} {}?".format( - count, "tab" if count == 1 else "tabs") - confirmed = message.ask(self.win_id, text, - usertypes.PromptMode.yesno, default=True) - if not confirmed: - log.destroy.debug("Cancelling losing of window {}".format( - self.win_id)) - e.ignore() - return + # Ask if set to always ask before closing + if 'always' in confirm_quit: + quit_text.append("Close?") + # Ask if multiple-tabs are open + if 'multiple-tabs' in confirm_quit and tab_count > 1: + quit_text.append("Close {} {}?".format( + tab_count, "tab" if tab_count == 1 else "tabs")) + # Ask if multiple downloads running + if 'downloads' in confirm_quit and download_count > 0: + quit_text.append("Close {} {}?".format( + tab_count, "download" if tab_count == 1 else "downloads")) + # Process all quit messages that user must confirm + if len(quit_text) > 0: + for text in quit_text: + confirmed = message.ask(self.win_id, text, + usertypes.PromptMode.yesno, + default=True) + # Stop asking if the user cancels + if not confirmed: + log.destroy.debug("Cancelling losing of window {}".format( + self.win_id)) + e.ignore() + return e.accept() objreg.get('app').geometry = bytes(self.saveGeometry()) log.destroy.debug("Closing window {}".format(self.win_id)) From ff0c845c501d864d71f5b3aef418b94e4f81c7d4 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Sun, 4 Jan 2015 20:41:35 +0100 Subject: [PATCH 02/14] Uncheck sending of debug log with private browsing. Fixes #436. --- qutebrowser/misc/crashdialog.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/qutebrowser/misc/crashdialog.py b/qutebrowser/misc/crashdialog.py index 56e4d7181..d812e8f12 100644 --- a/qutebrowser/misc/crashdialog.py +++ b/qutebrowser/misc/crashdialog.py @@ -34,6 +34,7 @@ from PyQt5.QtWidgets import (QDialog, QLabel, QTextEdit, QPushButton, from qutebrowser.utils import version, log, utils, objreg from qutebrowser.misc import miscwidgets from qutebrowser.browser.network import pastebin +from qutebrowser.config import config class _CrashDialog(QDialog): @@ -298,6 +299,11 @@ class ExceptionCrashDialog(_CrashDialog): if debug: self._chk_log.setChecked(False) self._chk_log.setEnabled(False) + try: + if config.get('general', 'private-browsing'): + self._chk_log.setChecked(False) + except Exception: + log.misc.exception("Error while checking private browsing mode") self._chk_log.toggled.connect(self._set_crash_info) self._vbox.addWidget(self._chk_log) info_label = QLabel("This makes it a lot easier to diagnose the " From 94ea35c9e88274fc37cc4ea5059397d79d2587f8 Mon Sep 17 00:00:00 2001 From: Thiago Barroso Perrotta Date: Mon, 5 Jan 2015 01:57:10 -0200 Subject: [PATCH 03/14] add g[tT] for cycling through tabs (LuaKit/vim like) --- qutebrowser/config/configdata.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qutebrowser/config/configdata.py b/qutebrowser/config/configdata.py index 17d812dab..2bd7c9e1d 100644 --- a/qutebrowser/config/configdata.py +++ b/qutebrowser/config/configdata.py @@ -940,8 +940,8 @@ KEY_DATA = collections.OrderedDict([ ('tab-move', ['gm']), ('tab-move -', ['gl']), ('tab-move +', ['gr']), - ('tab-next', ['J']), - ('tab-prev', ['K']), + ('tab-next', ['J','gt']), + ('tab-prev', ['K','gT']), ('tab-clone', ['gC']), ('reload', ['r']), ('reload -f', ['R']), From 0305dedbfbe8d76e1ffef560a9189ee63c774d4e Mon Sep 17 00:00:00 2001 From: Peter Vilim Date: Mon, 5 Jan 2015 01:01:22 -0600 Subject: [PATCH 04/14] Use multiple lines for quit messages --- qutebrowser/config/configtypes.py | 14 ++++++----- qutebrowser/mainwindow/mainwindow.py | 36 +++++++++++++--------------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index 4b445cd00..65d8f6e95 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -1253,10 +1253,12 @@ class ConfirmQuit(List): if values == 'never': return # Never can't be set with other options - elif 'never' in values and isinstance(values, list): + elif 'never' in values and isinstance(values, + list) and len(values) > 1: raise configexc.ValidationError(value, "List cannot contain never!") # Always can't be set with other options - elif 'always' in values and isinstance(values, list): + elif 'always' in values and isinstance(values, + list) and len(values) > 1: raise configexc.ValidationError(value, "List cannot contain always!") # Values have to be valid @@ -1269,17 +1271,17 @@ class ConfirmQuit(List): " values!") def complete(self): - combinations = [] + permutations = [] # Generate combinations of the options that can be combined for size in range(2, len(self.combinable_values) + 1): - combinations = combinations + list( - itertools.combinations(self.combinable_values, size)) + permutations = permutations + list( + itertools.permutations(self.combinable_values, size)) out = [] # Add valid single values for val in self.valid_values: out.append((val, self.valid_values.descriptions[val])) # Add combinations to list of options - for val in combinations: + for val in permutations: desc = '' val = ','.join(val) out.append((val, desc)) diff --git a/qutebrowser/mainwindow/mainwindow.py b/qutebrowser/mainwindow/mainwindow.py index 801ded657..6c482e34b 100644 --- a/qutebrowser/mainwindow/mainwindow.py +++ b/qutebrowser/mainwindow/mainwindow.py @@ -331,33 +331,31 @@ class MainWindow(QWidget): download_manager = objreg.get('download-manager', scope='window', window=self.win_id) download_count = download_manager.rowCount() - quit_text = [] + quit_texts = [] # Close if set to never ask for confirmation (backward compatible) if confirm_quit == 'never' or 'never' in confirm_quit: pass - # Ask if set to always ask before closing - if 'always' in confirm_quit: - quit_text.append("Close?") # Ask if multiple-tabs are open if 'multiple-tabs' in confirm_quit and tab_count > 1: - quit_text.append("Close {} {}?".format( - tab_count, "tab" if tab_count == 1 else "tabs")) + quit_texts.append("{} {} open.".format( + tab_count, "tab is" if tab_count == 1 else "tabs are")) # Ask if multiple downloads running if 'downloads' in confirm_quit and download_count > 0: - quit_text.append("Close {} {}?".format( - tab_count, "download" if tab_count == 1 else "downloads")) + quit_texts.append("{} {} running.".format( + tab_count, + "download is" if tab_count == 1 else "downloads are")) # Process all quit messages that user must confirm - if len(quit_text) > 0: - for text in quit_text: - confirmed = message.ask(self.win_id, text, - usertypes.PromptMode.yesno, - default=True) - # Stop asking if the user cancels - if not confirmed: - log.destroy.debug("Cancelling losing of window {}".format( - self.win_id)) - e.ignore() - return + if quit_texts or 'always' in confirm_quit: + text = '\n'.join(['Really quit?'] + quit_texts) + confirmed = message.ask(self.win_id, text, + usertypes.PromptMode.yesno, + default=True) + # Stop asking if the user cancels + if not confirmed: + log.destroy.debug("Cancelling losing of window {}".format( + self.win_id)) + e.ignore() + return e.accept() objreg.get('app').geometry = bytes(self.saveGeometry()) log.destroy.debug("Closing window {}".format(self.win_id)) From 6722780f8641fc419db7288c4a82205602b3a55f Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 5 Jan 2015 18:39:27 +0100 Subject: [PATCH 05/14] Regenerate authors --- README.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/README.asciidoc b/README.asciidoc index 66787a9fe..dd06b0540 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -139,6 +139,7 @@ Contributors, sorted by the number of commits in descending order: * Matthias Lisin * Helen Sherwood-Taylor * HalosGhost +* Error 800 // QUTE_AUTHORS_END The following people have contributed graphics: From 2d77381660f3a95797eda268a2754bd96146bfd8 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 5 Jan 2015 18:47:25 +0100 Subject: [PATCH 06/14] Regenerate authors --- README.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/README.asciidoc b/README.asciidoc index dd06b0540..005ca59e6 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -135,6 +135,7 @@ Contributors, sorted by the number of commits in descending order: * Regina Hug * Mathias Fussenegger * Larry Hynes +* Thiago Barroso Perrotta * Peter Vilim * Matthias Lisin * Helen Sherwood-Taylor From e339b0cef980ec29342230733554e44b283f516e Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 5 Jan 2015 18:56:09 +0100 Subject: [PATCH 07/14] Fix missing whitespace. --- qutebrowser/config/configdata.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qutebrowser/config/configdata.py b/qutebrowser/config/configdata.py index 2bd7c9e1d..83bcb2c9b 100644 --- a/qutebrowser/config/configdata.py +++ b/qutebrowser/config/configdata.py @@ -940,8 +940,8 @@ KEY_DATA = collections.OrderedDict([ ('tab-move', ['gm']), ('tab-move -', ['gl']), ('tab-move +', ['gr']), - ('tab-next', ['J','gt']), - ('tab-prev', ['K','gT']), + ('tab-next', ['J', 'gt']), + ('tab-prev', ['K', 'gT']), ('tab-clone', ['gC']), ('reload', ['r']), ('reload -f', ['R']), From dfa276a20c588753d81fdf645d48ec6ebbcf7c83 Mon Sep 17 00:00:00 2001 From: Peter Vilim Date: Mon, 5 Jan 2015 22:41:42 -0600 Subject: [PATCH 08/14] backward compatibility, space, combinations --- qutebrowser/config/configtypes.py | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index 65d8f6e95..3c85d7859 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -1233,32 +1233,19 @@ class ConfirmQuit(List): valid_values = ValidValues(('always', "Always show a confirmation."), ('multiple-tabs', "Show a confirmation if " "multiple tabs are opened."), - ('downloads', "show a confirmation if downloads" + ('downloads', "show a confirmation if downloads " "are running"), ('never', "Never show a confirmation.")) # Values that can be combined with commas combinable_values = ('multiple-tabs', 'downloads') - def transform(self, value): - # Backward compatible - if value == 'never': - return value - # Split configuration string into list - else: - return super().transform(value) - def validate(self, value): values = self.transform(value) - # Backward compatibility - if values == 'never': - return # Never can't be set with other options - elif 'never' in values and isinstance(values, - list) and len(values) > 1: + if 'never' in values and len(values) > 1: raise configexc.ValidationError(value, "List cannot contain never!") # Always can't be set with other options - elif 'always' in values and isinstance(values, - list) and len(values) > 1: + elif 'always' in values and len(values) > 1: raise configexc.ValidationError(value, "List cannot contain always!") # Values have to be valid @@ -1271,17 +1258,17 @@ class ConfirmQuit(List): " values!") def complete(self): - permutations = [] + combinations = [] # Generate combinations of the options that can be combined for size in range(2, len(self.combinable_values) + 1): - permutations = permutations + list( - itertools.permutations(self.combinable_values, size)) + combinations = combinations + list( + itertools.combinations(self.combinable_values, size)) out = [] # Add valid single values for val in self.valid_values: out.append((val, self.valid_values.descriptions[val])) # Add combinations to list of options - for val in permutations: + for val in combinations: desc = '' val = ','.join(val) out.append((val, desc)) From e07146be7ca2d4ca157466c7bdc1e052f114a8ce Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 6 Jan 2015 09:51:53 +0100 Subject: [PATCH 09/14] Add "$@" to example wrapper script in INSTALL. Thanks to mkonig for the suggestion! --- doc/INSTALL.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/INSTALL.asciidoc b/doc/INSTALL.asciidoc index 1c5864e30..c39714ddd 100644 --- a/doc/INSTALL.asciidoc +++ b/doc/INSTALL.asciidoc @@ -39,7 +39,7 @@ your `$PATH` (e.g. `/usr/local/bin/qutebrowser` or `~/bin/qutebrowser`): ---- #!/bin/bash -~/path/to/qutebrowser/.venv/bin/python3 -m qutebrowser +~/path/to/qutebrowser/.venv/bin/python3 -m qutebrowser "$@" ---- On Archlinux From 46396cce1e45001bfbb2aa81abafdcfed89af3f6 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 6 Jan 2015 10:00:28 +0100 Subject: [PATCH 10/14] Fix maxsplit-splitting with empty args (""/''). Fixes #453. --- qutebrowser/commands/runners.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/qutebrowser/commands/runners.py b/qutebrowser/commands/runners.py index dbfcb0303..5543f1455 100644 --- a/qutebrowser/commands/runners.py +++ b/qutebrowser/commands/runners.py @@ -270,8 +270,11 @@ class CommandRunner(QObject): maxsplit=maxsplit) for s in args: # remove quotes and replace \" by " - s = re.sub(r"""(^|[^\\])["']""", r'\1', s) - s = re.sub(r"""\\(["'])""", r'\1', s) + if s == '""' or s == "''": + s = '' + else: + s = re.sub(r"""(^|[^\\])["']""", r'\1', s) + s = re.sub(r"""\\(["'])""", r'\1', s) self._args.append(s) break else: From f828e554f70f02e2b4e2ffc504239d75db810658 Mon Sep 17 00:00:00 2001 From: Peter Vilim Date: Tue, 6 Jan 2015 04:03:21 -0600 Subject: [PATCH 11/14] misc fixes --- qutebrowser/config/configtypes.py | 17 ++++++++--------- qutebrowser/mainwindow/mainwindow.py | 6 +++--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index 3c85d7859..1e27b1082 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -1246,22 +1246,22 @@ class ConfirmQuit(List): raise configexc.ValidationError(value, "List cannot contain never!") # Always can't be set with other options elif 'always' in values and len(values) > 1: - raise configexc.ValidationError(value, - "List cannot contain always!") + raise configexc.ValidationError( + value, "List cannot contain always!") # Values have to be valid elif not set(values).issubset(set(self.valid_values.values)): - raise configexc.ValidationError(value, "List contains invalid" - " values!") + raise configexc.ValidationError( + value, "List contains invalid values!") # List can't have duplicates elif len(set(values)) != len(values): - raise configexc.ValidationError(value, "List contains duplicate" - " values!") + raise configexc.ValidationError( + value, "List contains duplicate values!") def complete(self): combinations = [] # Generate combinations of the options that can be combined for size in range(2, len(self.combinable_values) + 1): - combinations = combinations + list( + combinations += list( itertools.combinations(self.combinable_values, size)) out = [] # Add valid single values @@ -1270,8 +1270,7 @@ class ConfirmQuit(List): # Add combinations to list of options for val in combinations: desc = '' - val = ','.join(val) - out.append((val, desc)) + out.append((','.join(val), desc)) return out diff --git a/qutebrowser/mainwindow/mainwindow.py b/qutebrowser/mainwindow/mainwindow.py index 6c482e34b..c5a0b00a9 100644 --- a/qutebrowser/mainwindow/mainwindow.py +++ b/qutebrowser/mainwindow/mainwindow.py @@ -332,8 +332,8 @@ class MainWindow(QWidget): window=self.win_id) download_count = download_manager.rowCount() quit_texts = [] - # Close if set to never ask for confirmation (backward compatible) - if confirm_quit == 'never' or 'never' in confirm_quit: + # Close if set to never ask for confirmation + if 'never' in confirm_quit: pass # Ask if multiple-tabs are open if 'multiple-tabs' in confirm_quit and tab_count > 1: @@ -352,7 +352,7 @@ class MainWindow(QWidget): default=True) # Stop asking if the user cancels if not confirmed: - log.destroy.debug("Cancelling losing of window {}".format( + log.destroy.debug("Cancelling closing of window {}".format( self.win_id)) e.ignore() return From 5c37d4a19de9f4bd9e2db77c8b9fcdd4c4e9c5fd Mon Sep 17 00:00:00 2001 From: Peter Vilim Date: Tue, 6 Jan 2015 04:14:41 -0600 Subject: [PATCH 12/14] fix line lengths --- qutebrowser/config/configtypes.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index 1e27b1082..d74aa6a0a 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -1233,8 +1233,8 @@ class ConfirmQuit(List): valid_values = ValidValues(('always', "Always show a confirmation."), ('multiple-tabs', "Show a confirmation if " "multiple tabs are opened."), - ('downloads', "show a confirmation if downloads " - "are running"), + ('downloads', "Show a confirmation if " + "downloads are running"), ('never', "Never show a confirmation.")) # Values that can be combined with commas combinable_values = ('multiple-tabs', 'downloads') @@ -1243,7 +1243,8 @@ class ConfirmQuit(List): values = self.transform(value) # Never can't be set with other options if 'never' in values and len(values) > 1: - raise configexc.ValidationError(value, "List cannot contain never!") + raise configexc.ValidationError( + value, "List cannot contain never!") # Always can't be set with other options elif 'always' in values and len(values) > 1: raise configexc.ValidationError( From 3ff28027de9755159d1ecf557f6536de0183abf3 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 6 Jan 2015 11:26:40 +0100 Subject: [PATCH 13/14] Make init_venv.py work with multiple sip .so files. On my Debian jessie there's a sip.cpython-34m-x86_64-linux-gnu.so and a sip.cpython-34dm-x86_64-linux-gnu.so. --- scripts/init_venv.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/scripts/init_venv.py b/scripts/init_venv.py index 4b27bbcf8..ea0ef2861 100644 --- a/scripts/init_venv.py +++ b/scripts/init_venv.py @@ -125,14 +125,10 @@ def link_pyqt(): if not globbed_sip: print("Did not find sip in {}!".format(sys_path), file=sys.stderr) sys.exit(1) - elif len(globbed_sip) != 1: - print("Found multiple sip installations: {}!".format(globbed_sip), - file=sys.stderr) - sys.exit(1) - files = ( + files = [ 'PyQt5', - os.path.basename(globbed_sip[0]), - ) + ] + files += [os.path.basename(e) for e in globbed_sip] for fn in files: source = os.path.join(sys_path, fn) link_name = os.path.join(venv_path, fn) From c4bb9344a94a07e970ecd4cf77761698ce0f21dd Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 6 Jan 2015 11:29:13 +0100 Subject: [PATCH 14/14] Regenerate docs. --- README.asciidoc | 2 +- doc/help/settings.asciidoc | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.asciidoc b/README.asciidoc index 005ca59e6..dcab97005 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -127,6 +127,7 @@ Contributors, sorted by the number of commits in descending order: * Florian Bruhin * Claude * John ShaggyTwoDope Jenkins +* Peter Vilim * rikn00 * Martin Zimmermann * Joel Torstensson @@ -136,7 +137,6 @@ Contributors, sorted by the number of commits in descending order: * Mathias Fussenegger * Larry Hynes * Thiago Barroso Perrotta -* Peter Vilim * Matthias Lisin * Helen Sherwood-Taylor * HalosGhost diff --git a/doc/help/settings.asciidoc b/doc/help/settings.asciidoc index 8422d9b61..aea88a6e1 100644 --- a/doc/help/settings.asciidoc +++ b/doc/help/settings.asciidoc @@ -390,6 +390,7 @@ Valid values: * +always+: Always show a confirmation. * +multiple-tabs+: Show a confirmation if multiple tabs are opened. + * +downloads+: Show a confirmation if downloads are running * +never+: Never show a confirmation. Default: +pass:[never]+