Title Safarà: an Extensible Code Editor for Squeak
Student Luigi Panzeri
Mentor Lukas Renggli
Abstract
Squeak provides a modern open-source development environment for the
Smalltalk programming language. Squeak promote the vision of Smalltalk
of a live environment where everything is an object, and anything can
change at run-time by letting the user poke in any part of the system
and at any time. Furthermore several extensions are provided for a
better and innovative approach to development, like refactoring
browsers, code linters, smart method finders, version control system
at source level, and so on. Despite that new users often complaint
about the lack of some features for traditional edit-build-debug
development, they found in common IDE for other programming languages.
Thus, the need of a new code text editor.

Safarà is an add-on component for Squeak whose mission is to create an
editor at the level of the great Squeak IDE and the traditional ones.
It aims to provide the following features:

* Highly configurable and customizable using Smalltalk code or a
  graphical customization interface.

* Highly extensible in term of features and syntaxes supported.

* Easily embeddable as a widget in other applications (e.g. mail
  reader, applications using DSLs, etc.).

* Well integrated with the tools present on a traditional Squeak
  development image.

* Support for collaborative editing.

My project proposal concerns mainly the design and the implementation
of the model representing the informations the editor operates on,
like raw data, syntax definitions, clipboards and so on. An
implementation of a Morphic view is planned and necessary in order to
test the performance and the flexibility of the model. The whole
design will be made using the MVC design pattern such that the model
will be independent from the particular implementation and libraries
used for the user interface.

The objective of the proposal is to have a working editor for plain
text writing and Smalltalk coding, with a minimal set of features
showing the effectiveness of the model.

Having a good initial design with clear specifications will help
building extensions on top of that.

Several other editors, written in other languages have similar
features like Eclipse, TextMate, and Emacs, but either they usually
don't suit well in a Smalltalk environment, either don't fit well into
the Smalltalk development cycle, or they can't be easily extended.