refactor: Simplify editor discovery and command handling logic

This commit is contained in:
Paul Gauthier 2025-02-24 10:21:45 -08:00 committed by Paul Gauthier (aider)
parent 5b13105d58
commit d65e3f73df
2 changed files with 4 additions and 14 deletions

View file

@ -104,18 +104,13 @@ def discover_editor(editor_override=None):
default_editor = DEFAULT_EDITOR_OS_X
else:
default_editor = DEFAULT_EDITOR_NIX
if editor_override:
editor = editor_override
else:
editor = get_environment_editor(default_editor)
try:
if system == "Windows":
return shlex.split(editor, posix=False)
else:
return shlex.split(editor)
except ValueError as e:
raise RuntimeError(f"Invalid editor command format '{editor}': {e}")
return editor
def pipe_editor(input_data="", suffix=None, editor=None):
"""
@ -133,9 +128,8 @@ def pipe_editor(input_data="", suffix=None, editor=None):
:rtype: str
"""
filepath = write_temp_file(input_data, suffix)
command_parts = discover_editor(editor)
command_parts.append(filepath)
command_str = " ".join(shlex.quote(part) for part in command_parts)
command_str = discover_editor(editor)
command_str += " " + filepath
subprocess.call(command_str, shell=True)
with open(filepath, "r") as f:

View file

@ -84,10 +84,6 @@ def test_discover_editor_override():
assert discover_editor("code") == "code"
assert discover_editor('vim -c "set noswapfile"') == 'vim -c "set noswapfile"'
# Test invalid editor command
with pytest.raises(RuntimeError):
discover_editor('vim "unclosed quote')
def test_pipe_editor_with_fake_editor():
# Create a temporary Python script that logs its arguments