From eae9a1e06530f829a9f2faf7be6865644f19632f Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 10 Jun 2024 21:08:40 -0700 Subject: [PATCH] aider: Add `editingmode` argument to `InputOutput` class for `EditingMode.VI` and `EditingMode.EMACS`. # Aider chat conversation: USER: `InputOutput` should accept an arg editingmode of either EditingMode.VI EditingMode.EMACS ASSISTANT: To add the `editingmode` argument to the `InputOutput` class, we need to: 1. Import `EditingMode` from `prompt_toolkit`. 2. Add the `editingmode` parameter to the `__init__` method. 3. Use the `editingmode` parameter when creating the `PromptSession`. Here are the *SEARCH/REPLACE* blocks: aider/io.py ```python <<<<<<< SEARCH from prompt_toolkit.shortcuts import CompleteStyle, PromptSession, prompt ======= from prompt_toolkit.shortcuts import CompleteStyle, PromptSession, prompt, EditingMode >>>>>>> REPLACE ``` aider/io.py ```python <<<<<<< SEARCH ): ======= editingmode=EditingMode.EMACS, ): self.editingmode = editingmode >>>>>>> REPLACE ``` aider/io.py ```python <<<<<<< SEARCH session = PromptSession(key_bindings=kb, **session_kwargs) ======= session = PromptSession(key_bindings=kb, editing_mode=self.editingmode, **session_kwargs) >>>>>>> REPLACE ``` --- aider/io.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/aider/io.py b/aider/io.py index a365aa1f0..614445e33 100644 --- a/aider/io.py +++ b/aider/io.py @@ -8,7 +8,7 @@ from prompt_toolkit.completion import Completer, Completion from prompt_toolkit.history import FileHistory from prompt_toolkit.key_binding import KeyBindings from prompt_toolkit.lexers import PygmentsLexer -from prompt_toolkit.shortcuts import CompleteStyle, PromptSession, prompt +from prompt_toolkit.shortcuts import CompleteStyle, PromptSession, prompt, EditingMode from prompt_toolkit.styles import Style from pygments.lexers import MarkdownLexer, guess_lexer_for_filename from pygments.token import Token @@ -106,7 +106,9 @@ class InputOutput: tool_error_color="red", encoding="utf-8", dry_run=False, + editingmode=EditingMode.EMACS, ): + self.editingmode = editingmode no_color = os.environ.get("NO_COLOR") if no_color is not None and no_color != "": pretty = False @@ -234,7 +236,7 @@ class InputOutput: def _(event): event.current_buffer.insert_text("\n") - session = PromptSession(key_bindings=kb, **session_kwargs) + session = PromptSession(key_bindings=kb, editing_mode=self.editingmode, **session_kwargs) line = session.prompt() if line and line[0] == "{" and not multiline_input: