  Developers often dedicate significant time to maintaining and refactoring
existing code. However, most prior work on generative models for code focuses
solely on creating new code, overlooking the distinctive needs of editing
existing code. In this work, we explore a multi-round code auto-editing
setting, aiming to predict edits to a code region based on recent changes
within the same codebase. Our model, Coeditor, is a fine-tuned language model
specifically designed for code editing tasks. We represent code changes using a
line diff format and employ static analysis to form large customized model
contexts, ensuring the availability of appropriate information for prediction.
We collect a code editing dataset from the commit histories of 1650 open-source
Python projects for training and evaluation. In a simplified single-round,
single-edit task, Coeditor significantly outperforms GPT-3.5 and SOTA
open-source code completion models (bringing exact-match accuracy from 34.7 up
to 60.4), demonstrating the benefits of incorporating editing history for code
completion. In a multi-round, multi-edit setting, we observe substantial gains
by iteratively conditioning on additional user edits. We have open-sourced our
code, data, and model weights to encourage future research and have released a
VSCode extension powered by our model for interactive IDE usage.
