Software developers frequently refactor code.
Often, a single logical refactoring change involves changing multiple related components in a source base such as renaming each occurrence of a variable or function.
While many code editors can perform such common and generic refactorings, they do not support more complex refactorings or those that are specific to a given code base.
For those, as a flexible—albeit less interactive—alternative, developers can write refactoring scripts that can implement arbitrarily complex logic by manipulating the program's tree representation.
In this work, we present Forest, a structural code editor that aims to bridge the gap between the interactiveness of code editors and the expressiveness of refactoring scripts.
While structural editors have occupied a niche as general code editors, the key insight of this work is that they enable a novel structural multi-cursor design that allows Forest to reach a similar expressiveness as refactoring scripts; Forest allows to perform a single action simultaneously in multiple program locations and thus support complex refactorings.
To support interactivity, Forest provides features typical for text code editors such as writing and displaying the program through its textual representation.
Our evaluation demonstrates that Forest allows performing edits similar to those from refactoring scripts, while still being interactive.
We attempted to perform edits from 48 real-world refactoring scripts using Forest and found that 11 were possible, while another 17 would be possible with added features.
We believe that a multi-cursor setting plays to the strengths of structural editing, since it benefits from reliable and expressive commands. Our results suggest that multi-cursor structural editors could be practical for performing small-scale specialized refactorings.
Fri 9 DecDisplayed time zone: Auckland, Wellington change
10:30 - 12:00 | Future Programming Languages and Tools (1)Onward! Papers at Seminar Room G100 Chair(s): Jeremy Singer University of Glasgow | ||
10:30 30mTalk | Forest: Structural Code Editing with Multiple Cursors Onward! Papers DOI | ||
11:00 30mTalk | Bridging the Syntax-Semantics Gap of ProgrammingIncludes Demo Onward! Papers DOI | ||
11:30 30mTalk | Digital Crochet: Toward a Visual Language for Pattern DescriptionVirtual Onward! Papers Klara Seitz University of Potsdam; Hasso Plattner Institute, Patrick Rein University of Potsdam; Hasso Plattner Institute, Jens Lincke University of Potsdam; Hasso Plattner Institute, Robert Hirschfeld University of Potsdam; Hasso Plattner Institute DOI Pre-print |