Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/seandenigris/living-code

How do we make the IDE more like real life - live, direct, and fun!
https://github.com/seandenigris/living-code

dynabook ide pharo smalltalk

Last synced: about 2 months ago
JSON representation

How do we make the IDE more like real life - live, direct, and fun!

Awesome Lists containing this project

README

        

LivingCode
==========

How do we make the IDE more like real life - live, direct, and fun!

Installation
------------------

[GToolkit](https://gtoolkit.com) is the reference platform, but the goal is for it to also work in the latest Pharo release

```smalltalk
[
EpMonitor current disable.
[ Metacello new
baseline: 'LivingCode';
repository: 'github://seandenigris/Living-Code/repository';
"onConflict: [ :ex | ex allow ];"
load ] ensure: [ EpMonitor current enable ].
] fork.
```

Quick Start Tutorial
------------------

#### Opening a New World
From the World Menu, click "Open Self World"
Things to note:
- The world is infinite (see below for how to scroll)
- Currently, due to Morphic limitations, zooming is not available; but this is very much desired!

#### Populating the World
1. In the Self window, in the editor bar near the top, type an expression
2. Accept with either Cmd+s or [Enter]
An object, very much like an Outliner in the Self Language, will appear in your hand. Place it in the world wherever you want

#### Scrolling in the World
Just use the mouse wheel, or click and drag anywhere on the World's background

#### Navigating a Complex World
Since grokking a complex world can be difficult, there is a RadarMorph, inspired by Self's RadarView.
Try the following:

1. Accept in the window's evaluating editor: ``RadarMorph new extent: ([email protected]); openInHand``
2. Place the RadarMorph in one of the corners of the world
3. You now have a warp speed option for scrolling - click and drag in the RadarMorph. Compare the regular scrolling described above and you'll see that it is at a much finer level

Feature Map
------------------

#### Creating new types
In self, the equivalent of creating a new instance is to copy a prototype e.g. "morph copy" ~ "Morph new". One key difference is that in most of the examples, you continue to customize the behavior, which is not a built-in way to deal with Smalltalk instances. So, we start with an equivalent of "Morph subclass: #MyMorphSubclass". In the future, we may make a real prototyping facility, but this will get the ball rolling.

#### Classifying globals
In self, one would add a slot to globals under an appropriate category and then connect the slot to the new prototype. As a Smalltalk equivalent, we include a "package" slot in all outliners. So one can drag and drop the package slot handle onto an RPackage.