@@ -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 (
185189 auto_suggest .accept_in_vi_insert_mode ,
186190 ["end" ],
187- "default_buffer_focused & (ebivim | ~vi_insert_mode) " ,
191+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
188192 ),
189193 Binding (
190194 auto_suggest .accept_in_vi_insert_mode ,
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 (
@@ -236,22 +251,22 @@ def create_identifier(handler: Callable):
236251 Binding (
237252 auto_suggest .accept_character ,
238253 ["escape" , "right" ],
239- "has_suggestion & default_buffer_focused" ,
254+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
240255 ),
241256 Binding (
242257 auto_suggest .accept_and_move_cursor_left ,
243258 ["c-left" ],
244- "has_suggestion & default_buffer_focused" ,
259+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
245260 ),
246261 Binding (
247262 auto_suggest .accept_and_keep_cursor ,
248263 ["c-down" ],
249- "has_suggestion & default_buffer_focused" ,
264+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
250265 ),
251266 Binding (
252267 auto_suggest .backspace_and_resume_hint ,
253268 ["backspace" ],
254- "has_suggestion & default_buffer_focused" ,
269+ "has_suggestion & default_buffer_focused & emacs_like_insert_mode " ,
255270 ),
256271]
257272
0 commit comments