Где-то в 2010м году, во время очередного витка бурных всплесков интереса к Лиспу на ЛОРе, я решил ознакомиться-таки с этим зверем, установил SLIME, начал читать Practical Common Lisp. Хоть к тому времени я уже был знаком с т.н. инкрементальной разработкой, SLIME поразил моё сознание. Это было так чертовски удобно! И примерно в то же время я задумался, что неплохо было бы иметь нечто подобное для моего любимого Smalltalk.
Конечно, каждая современная реализация Smalltalk предоставляет свои собственные инструменты для разработки - браузеры классов, редакторы, инспекторы, рабочие пространства есть и у Pharo, и в GNU Smalltalk, и в VisualWorks. Хоть они и выполняют одни и те же задачи, они разные. И, да, самое главное - они не Emacs!
Так я и решил сделать своё некое подобие SLIME, учитывая классический подход к разработке на Smalltalk - браузер классов с пометодным редактированием. Естественно, для работы этой вещи нужен был сервер на стороне образа, который по запросам отдает браузеру нужную информацию/применяет присланные правки/выполняет команды/и т.д. Сейчас такой сервер доступен для GNU Smalltalk и Pharo.
На скриншоте можно увидеть, что в итоге получилось. Браузер классов занимает левую часть экрана, он подключен к образу GNU Smalltalk, запущенному на соседнем нетбуке. Списки в верхней половине браузера образуют иерархию: пространства имен, классы, категории методов и сами методы. В нижней половине браузера - область редактирования кода соответсвующего метода (или объявления класса).
В правой части экрана расположены Workspace (аналог REPL, для выполнения произвольного кода и просмотра результатов исполнения) и Transcript (заменяет стандартный вывод). В примере на скриншоте код в Workspace был выполнен однажды, потом в классы ClientConnection и ShampooServer были добавлены методы печати объектов (один из них открыт в браузере), и потом код был выполнен повторно. Разница в выводе и отображена в Transcript.
У проекта так же есть своя страничка, код на гитхабе, все желающие могут присоединиться.
В остальном - всё тот же FVWM, Emacs 23.4.1, NetBSD/amd64 (current).
>>> Просмотр
(1680x1050,
70 Kb)