@@ -181,30 +181,45 @@ def create_identifier(handler: Callable):
181181]
182182
183183AUTO_SUGGEST_BINDINGS = [
184+ # there are two reasons for re-defining bindings defined upstream:
185+ # 1) prompt-toolkit does not execute autosuggestion bindings in vi mode,
186+ # 2) prompt-toolkit checks if we are at the end of text, not end of line
187+ # hence it does not work in multi-line mode of navigable provider
184188 Binding (
185- auto_suggest .accept_in_vi_insert_mode ,
189+ auto_suggest .accept_or_jump_to_end ,
186190 ["end" ],
187- "default_buffer_focused & (ebivim | ~vi_insert_mode) " ,
191+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
188192 ),
189193 Binding (
190- auto_suggest .accept_in_vi_insert_mode ,
194+ auto_suggest .accept_or_jump_to_end ,
191195 ["c-e" ],
192- "vi_insert_mode & default_buffer_focused & ebivim" ,
196+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode" ,
197+ ),
198+ Binding (
199+ auto_suggest .accept ,
200+ ["c-f" ],
201+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode" ,
202+ ),
203+ Binding (
204+ auto_suggest .accept ,
205+ ["right" ],
206+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode" ,
193207 ),
194- Binding (auto_suggest .accept , ["c-f" ], "vi_insert_mode & default_buffer_focused" ),
195208 Binding (
196209 auto_suggest .accept_word ,
197210 ["escape" , "f" ],
198- "vi_insert_mode & default_buffer_focused & ebivim " ,
211+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
199212 ),
200213 Binding (
201214 auto_suggest .accept_token ,
202215 ["c-right" ],
203- "has_suggestion & default_buffer_focused" ,
216+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
204217 ),
205218 Binding (
206219 auto_suggest .discard ,
207220 ["escape" ],
221+ # note this one is using `emacs_insert_mode`, not `emacs_like_insert_mode`
222+ # as in `vi_insert_mode` we do not want `escape` to be shadowed (ever).
208223 "has_suggestion & default_buffer_focused & emacs_insert_mode" ,
209224 ),
210225 Binding (
@@ -241,22 +256,23 @@ def create_identifier(handler: Callable):
241256 Binding (
242257 auto_suggest .accept_character ,
243258 ["escape" , "right" ],
244- "has_suggestion & default_buffer_focused" ,
259+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
245260 ),
246261 Binding (
247262 auto_suggest .accept_and_move_cursor_left ,
248263 ["c-left" ],
249- "has_suggestion & default_buffer_focused" ,
264+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
250265 ),
251266 Binding (
252267 auto_suggest .accept_and_keep_cursor ,
253268 ["c-down" ],
254- "has_suggestion & default_buffer_focused" ,
269+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
255270 ),
256271 Binding (
257272 auto_suggest .backspace_and_resume_hint ,
258273 ["backspace" ],
259- "has_suggestion & default_buffer_focused" ,
274+ # no `has_suggestion` here to allow resuming if no suggestion
275+ "default_buffer_focused & emacs_like_insert_mode" ,
260276 ),
261277]
262278
0 commit comments