Mon 5 - Sat 10 December 2022 Auckland, New Zealand

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 Dec

Displayed 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
Forest: Structural Code Editing with Multiple Cursors
Onward! Papers
Philippe Voinov ETH Zurich, Manuel Rigger National University of Singapore, Zhendong Su ETH Zurich
Bridging the Syntax-Semantics Gap of ProgrammingIncludes Demo
Onward! Papers
Theo B. Weidmann ETH Zurich, Sverrir Thorgeirsson ETH Zurich, Zhendong Su ETH Zurich
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