We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Make C-w behave like in readline
Hi, I'm used to `C-w` deleting up to the next whitespace.

For example, if your command is : `:open -t http://google.com`, Hitting `C-w` should remove the whole http://google.com part, however it only removes up to the first `.`.

Usually the readline binding to remove up to the next word is bound to `C-Backspace`


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `qutebrowser/misc/readline.py`
Content:
```
1 # vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
2 
3 # Copyright 2014-2016 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
4 #
5 # This file is part of qutebrowser.
6 #
7 # qutebrowser is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # qutebrowser is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with qutebrowser.  If not, see <http://www.gnu.org/licenses/>.
19 
20 """Bridge to provide readline-like shortcuts for QLineEdits."""
21 
22 from PyQt5.QtWidgets import QApplication, QLineEdit
23 
24 from qutebrowser.commands import cmdutils
25 from qutebrowser.utils import usertypes as typ
26 from qutebrowser.utils import utils
27 
28 
29 class ReadlineBridge:
30 
31     """Bridge which provides readline-like commands for the current QLineEdit.
32 
33     Attributes:
34         _deleted: Mapping from widgets to their last deleted text.
35     """
36 
37     def __init__(self):
38         self._deleted = {}
39 
40     def __repr__(self):
41         return utils.get_repr(self)
42 
43     def _widget(self):
44         """Get the currently active QLineEdit."""
45         w = QApplication.instance().focusWidget()
46         if isinstance(w, QLineEdit):
47             return w
48         else:
49             return None
50 
51     @cmdutils.register(instance='readline-bridge', hide=True,
52                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
53     def rl_backward_char(self):
54         """Move back a character.
55 
56         This acts like readline's backward-char.
57         """
58         widget = self._widget()
59         if widget is None:
60             return
61         widget.cursorBackward(False)
62 
63     @cmdutils.register(instance='readline-bridge', hide=True,
64                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
65     def rl_forward_char(self):
66         """Move forward a character.
67 
68         This acts like readline's forward-char.
69         """
70         widget = self._widget()
71         if widget is None:
72             return
73         widget.cursorForward(False)
74 
75     @cmdutils.register(instance='readline-bridge', hide=True,
76                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
77     def rl_backward_word(self):
78         """Move back to the start of the current or previous word.
79 
80         This acts like readline's backward-word.
81         """
82         widget = self._widget()
83         if widget is None:
84             return
85         widget.cursorWordBackward(False)
86 
87     @cmdutils.register(instance='readline-bridge', hide=True,
88                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
89     def rl_forward_word(self):
90         """Move forward to the end of the next word.
91 
92         This acts like readline's forward-word.
93         """
94         widget = self._widget()
95         if widget is None:
96             return
97         widget.cursorWordForward(False)
98 
99     @cmdutils.register(instance='readline-bridge', hide=True,
100                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
101     def rl_beginning_of_line(self):
102         """Move to the start of the line.
103 
104         This acts like readline's beginning-of-line.
105         """
106         widget = self._widget()
107         if widget is None:
108             return
109         widget.home(False)
110 
111     @cmdutils.register(instance='readline-bridge', hide=True,
112                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
113     def rl_end_of_line(self):
114         """Move to the end of the line.
115 
116         This acts like readline's end-of-line.
117         """
118         widget = self._widget()
119         if widget is None:
120             return
121         widget.end(False)
122 
123     @cmdutils.register(instance='readline-bridge', hide=True,
124                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
125     def rl_unix_line_discard(self):
126         """Remove chars backward from the cursor to the beginning of the line.
127 
128         This acts like readline's unix-line-discard.
129         """
130         widget = self._widget()
131         if widget is None:
132             return
133         widget.home(True)
134         self._deleted[widget] = widget.selectedText()
135         widget.del_()
136 
137     @cmdutils.register(instance='readline-bridge', hide=True,
138                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
139     def rl_kill_line(self):
140         """Remove chars from the cursor to the end of the line.
141 
142         This acts like readline's kill-line.
143         """
144         widget = self._widget()
145         if widget is None:
146             return
147         widget.end(True)
148         self._deleted[widget] = widget.selectedText()
149         widget.del_()
150 
151     @cmdutils.register(instance='readline-bridge', hide=True,
152                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
153     def rl_unix_word_rubout(self):
154         """Remove chars from the cursor to the beginning of the word.
155 
156         This acts like readline's unix-word-rubout.
157         """
158         widget = self._widget()
159         if widget is None:
160             return
161         widget.cursorWordBackward(True)
162         self._deleted[widget] = widget.selectedText()
163         widget.del_()
164 
165     @cmdutils.register(instance='readline-bridge', hide=True,
166                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
167     def rl_kill_word(self):
168         """Remove chars from the cursor to the end of the current word.
169 
170         This acts like readline's kill-word.
171         """
172         widget = self._widget()
173         if widget is None:
174             return
175         widget.cursorWordForward(True)
176         self._deleted[widget] = widget.selectedText()
177         widget.del_()
178 
179     @cmdutils.register(instance='readline-bridge', hide=True,
180                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
181     def rl_yank(self):
182         """Paste the most recently deleted text.
183 
184         This acts like readline's yank.
185         """
186         widget = self._widget()
187         if widget is None or widget not in self._deleted:
188             return
189         widget.insert(self._deleted[widget])
190 
191     @cmdutils.register(instance='readline-bridge', hide=True,
192                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
193     def rl_delete_char(self):
194         """Delete the character after the cursor.
195 
196         This acts like readline's delete-char.
197         """
198         widget = self._widget()
199         if widget is None:
200             return
201         widget.del_()
202 
203     @cmdutils.register(instance='readline-bridge', hide=True,
204                        modes=[typ.KeyMode.command, typ.KeyMode.prompt])
205     def rl_backward_delete_char(self):
206         """Delete the character before the cursor.
207 
208         This acts like readline's backward-delete-char.
209         """
210         widget = self._widget()
211         if widget is None:
212             return
213         widget.backspace()
214
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/qutebrowser/misc/readline.py b/qutebrowser/misc/readline.py
--- a/qutebrowser/misc/readline.py
+++ b/qutebrowser/misc/readline.py
@@ -158,7 +158,23 @@
         widget = self._widget()
         if widget is None:
             return
-        widget.cursorWordBackward(True)
+        cursor_position = widget.cursorPosition()
+        text = widget.text()
+
+        target_position = cursor_position
+
+        is_word_boundary = True
+        while is_word_boundary and target_position > 0:
+            is_word_boundary = text[target_position - 1] == " "
+            target_position -= 1
+
+        is_word_boundary = False
+        while not is_word_boundary and target_position > 0:
+            is_word_boundary = text[target_position - 1] == " "
+            target_position -= 1
+
+        moveby = cursor_position - target_position - 1
+        widget.cursorBackward(True, moveby)
         self._deleted[widget] = widget.selectedText()
         widget.del_()

{"golden_diff": "diff --git a/qutebrowser/misc/readline.py b/qutebrowser/misc/readline.py\n--- a/qutebrowser/misc/readline.py\n+++ b/qutebrowser/misc/readline.py\n@@ -158,7 +158,23 @@\n         widget = self._widget()\n         if widget is None:\n             return\n-        widget.cursorWordBackward(True)\n+        cursor_position = widget.cursorPosition()\n+        text = widget.text()\n+\n+        target_position = cursor_position\n+\n+        is_word_boundary = True\n+        while is_word_boundary and target_position > 0:\n+            is_word_boundary = text[target_position - 1] == \" \"\n+            target_position -= 1\n+\n+        is_word_boundary = False\n+        while not is_word_boundary and target_position > 0:\n+            is_word_boundary = text[target_position - 1] == \" \"\n+            target_position -= 1\n+\n+        moveby = cursor_position - target_position - 1\n+        widget.cursorBackward(True, moveby)\n         self._deleted[widget] = widget.selectedText()\n         widget.del_()\n", "issue": "Make C-w behave like in readline\nHi, I'm used to `C-w` deleting up to the next whitespace.\n\nFor example, if your command is : `:open -t http://google.com`, Hitting `C-w` should remove the whole http://google.com part, however it only removes up to the first `.`.\n\nUsually the readline binding to remove up to the next word is bound to `C-Backspace`\n\n", "before_files": [{"content": "# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:\n\n# Copyright 2014-2016 Florian Bruhin (The Compiler) <mail@qutebrowser.org>\n#\n# This file is part of qutebrowser.\n#\n# qutebrowser is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# qutebrowser is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with qutebrowser.  If not, see <http://www.gnu.org/licenses/>.\n\n\"\"\"Bridge to provide readline-like shortcuts for QLineEdits.\"\"\"\n\nfrom PyQt5.QtWidgets import QApplication, QLineEdit\n\nfrom qutebrowser.commands import cmdutils\nfrom qutebrowser.utils import usertypes as typ\nfrom qutebrowser.utils import utils\n\n\nclass ReadlineBridge:\n\n    \"\"\"Bridge which provides readline-like commands for the current QLineEdit.\n\n    Attributes:\n        _deleted: Mapping from widgets to their last deleted text.\n    \"\"\"\n\n    def __init__(self):\n        self._deleted = {}\n\n    def __repr__(self):\n        return utils.get_repr(self)\n\n    def _widget(self):\n        \"\"\"Get the currently active QLineEdit.\"\"\"\n        w = QApplication.instance().focusWidget()\n        if isinstance(w, QLineEdit):\n            return w\n        else:\n            return None\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_backward_char(self):\n        \"\"\"Move back a character.\n\n        This acts like readline's backward-char.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorBackward(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_forward_char(self):\n        \"\"\"Move forward a character.\n\n        This acts like readline's forward-char.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorForward(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_backward_word(self):\n        \"\"\"Move back to the start of the current or previous word.\n\n        This acts like readline's backward-word.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorWordBackward(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_forward_word(self):\n        \"\"\"Move forward to the end of the next word.\n\n        This acts like readline's forward-word.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorWordForward(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_beginning_of_line(self):\n        \"\"\"Move to the start of the line.\n\n        This acts like readline's beginning-of-line.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.home(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_end_of_line(self):\n        \"\"\"Move to the end of the line.\n\n        This acts like readline's end-of-line.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.end(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_unix_line_discard(self):\n        \"\"\"Remove chars backward from the cursor to the beginning of the line.\n\n        This acts like readline's unix-line-discard.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.home(True)\n        self._deleted[widget] = widget.selectedText()\n        widget.del_()\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_kill_line(self):\n        \"\"\"Remove chars from the cursor to the end of the line.\n\n        This acts like readline's kill-line.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.end(True)\n        self._deleted[widget] = widget.selectedText()\n        widget.del_()\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_unix_word_rubout(self):\n        \"\"\"Remove chars from the cursor to the beginning of the word.\n\n        This acts like readline's unix-word-rubout.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorWordBackward(True)\n        self._deleted[widget] = widget.selectedText()\n        widget.del_()\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_kill_word(self):\n        \"\"\"Remove chars from the cursor to the end of the current word.\n\n        This acts like readline's kill-word.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorWordForward(True)\n        self._deleted[widget] = widget.selectedText()\n        widget.del_()\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_yank(self):\n        \"\"\"Paste the most recently deleted text.\n\n        This acts like readline's yank.\n        \"\"\"\n        widget = self._widget()\n        if widget is None or widget not in self._deleted:\n            return\n        widget.insert(self._deleted[widget])\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_delete_char(self):\n        \"\"\"Delete the character after the cursor.\n\n        This acts like readline's delete-char.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.del_()\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_backward_delete_char(self):\n        \"\"\"Delete the character before the cursor.\n\n        This acts like readline's backward-delete-char.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.backspace()\n", "path": "qutebrowser/misc/readline.py"}], "after_files": [{"content": "# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:\n\n# Copyright 2014-2016 Florian Bruhin (The Compiler) <mail@qutebrowser.org>\n#\n# This file is part of qutebrowser.\n#\n# qutebrowser is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# qutebrowser is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with qutebrowser.  If not, see <http://www.gnu.org/licenses/>.\n\n\"\"\"Bridge to provide readline-like shortcuts for QLineEdits.\"\"\"\n\nfrom PyQt5.QtWidgets import QApplication, QLineEdit\n\nfrom qutebrowser.commands import cmdutils\nfrom qutebrowser.utils import usertypes as typ\nfrom qutebrowser.utils import utils\n\n\nclass ReadlineBridge:\n\n    \"\"\"Bridge which provides readline-like commands for the current QLineEdit.\n\n    Attributes:\n        _deleted: Mapping from widgets to their last deleted text.\n    \"\"\"\n\n    def __init__(self):\n        self._deleted = {}\n\n    def __repr__(self):\n        return utils.get_repr(self)\n\n    def _widget(self):\n        \"\"\"Get the currently active QLineEdit.\"\"\"\n        w = QApplication.instance().focusWidget()\n        if isinstance(w, QLineEdit):\n            return w\n        else:\n            return None\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_backward_char(self):\n        \"\"\"Move back a character.\n\n        This acts like readline's backward-char.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorBackward(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_forward_char(self):\n        \"\"\"Move forward a character.\n\n        This acts like readline's forward-char.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorForward(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_backward_word(self):\n        \"\"\"Move back to the start of the current or previous word.\n\n        This acts like readline's backward-word.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorWordBackward(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_forward_word(self):\n        \"\"\"Move forward to the end of the next word.\n\n        This acts like readline's forward-word.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorWordForward(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_beginning_of_line(self):\n        \"\"\"Move to the start of the line.\n\n        This acts like readline's beginning-of-line.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.home(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_end_of_line(self):\n        \"\"\"Move to the end of the line.\n\n        This acts like readline's end-of-line.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.end(False)\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_unix_line_discard(self):\n        \"\"\"Remove chars backward from the cursor to the beginning of the line.\n\n        This acts like readline's unix-line-discard.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.home(True)\n        self._deleted[widget] = widget.selectedText()\n        widget.del_()\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_kill_line(self):\n        \"\"\"Remove chars from the cursor to the end of the line.\n\n        This acts like readline's kill-line.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.end(True)\n        self._deleted[widget] = widget.selectedText()\n        widget.del_()\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_unix_word_rubout(self):\n        \"\"\"Remove chars from the cursor to the beginning of the word.\n\n        This acts like readline's unix-word-rubout.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        cursor_position = widget.cursorPosition()\n        text = widget.text()\n\n        target_position = cursor_position\n\n        is_word_boundary = True\n        while is_word_boundary and target_position > 0:\n            is_word_boundary = text[target_position - 1] == \" \"\n            target_position -= 1\n\n        is_word_boundary = False\n        while not is_word_boundary and target_position > 0:\n            is_word_boundary = text[target_position - 1] == \" \"\n            target_position -= 1\n\n        moveby = cursor_position - target_position - 1\n        widget.cursorBackward(True, moveby)\n        self._deleted[widget] = widget.selectedText()\n        widget.del_()\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_kill_word(self):\n        \"\"\"Remove chars from the cursor to the end of the current word.\n\n        This acts like readline's kill-word.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.cursorWordForward(True)\n        self._deleted[widget] = widget.selectedText()\n        widget.del_()\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_yank(self):\n        \"\"\"Paste the most recently deleted text.\n\n        This acts like readline's yank.\n        \"\"\"\n        widget = self._widget()\n        if widget is None or widget not in self._deleted:\n            return\n        widget.insert(self._deleted[widget])\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_delete_char(self):\n        \"\"\"Delete the character after the cursor.\n\n        This acts like readline's delete-char.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.del_()\n\n    @cmdutils.register(instance='readline-bridge', hide=True,\n                       modes=[typ.KeyMode.command, typ.KeyMode.prompt])\n    def rl_backward_delete_char(self):\n        \"\"\"Delete the character before the cursor.\n\n        This acts like readline's backward-delete-char.\n        \"\"\"\n        widget = self._widget()\n        if widget is None:\n            return\n        widget.backspace()\n", "path": "qutebrowser/misc/readline.py"}]}