Hi Folks,
Cuis 4.0 is available at http://www.jvuletich.org/Cuis/Index.html .
This is a very important release. It's been over 10 months since Cuis
3.3, but all this time means that there are a lot of big news now.
The biggest one is the public release of the Styled Text Editor, by
Bernhard Pieber. Bernhard will do the announcement of this project
himself, all I want to say is that Styled Text Editor is the driving
force behind most of the new stuff in this release. I also want to add
that I'm delighted to be able to work with Bernhard on his project,
and that I'm more than happy with the wonderful effect this is having
on Cuis itself.
Check http://www.jvuletich.org/Cuis/CuisReleaseNotes.html .
So, the main new features of this release of Cuis are the required
support for External Packages. This is a very lightweight
implementation of Packages, based on PackageInfo, but not on
Monticello. Versioning is done with GitHub. Take a look at
http://www.jvuletich.org/Cuis/CodeManagementInCuis4.html and
http://www.jvuletich.org/Cuis/CuisAndGitHub.html .
- Package Support. Cuis 4.0 has a package implementation based on
PackageInfo. Can be used with a Git repository (like GitHub) for
package versioning. More info at "CodeManagementInCuis4" and
"CuisAndGitHub". This infrastructure and process is used for the
StyledTextEditor project, developed by Bernhard Pieber and Software
Generation.
- New handling of ChangeSets. The idea is to have only one "live"
change set that automatically captures all changes done to the Cuis
Core image. Changes to Packages go to separate ChangeSets.
- UCompletion. A new implementation of Autocompletion for
Smalltalk code. Activates with ctrl-space. Usually gives the selector
desired as the first option. Some features are:
= Sorts by last definition of selector (Methods recently
saved go first),
= Sorts appropriately all selectors matching entered prefix
(no hardcoded limits, like 40 selectors matching 2 letters).
= Restricts suggestions if receiver is Global, a Constant or
a pseudo-variable.
= Doesn't have an "expanded mode". Always shows relevant suggestions.
= Not restricted to a set of previously selected packages.
All the methods in the system are accounted for.
= Very fast, thanks to an optimized Trie implementation.
= Compact code. Relies on services by Trie (for storing and
querying selectors) and Shout (for parsing incomplete methods).
= Helps make Shout faster, by providing super fast queries of
selector prefixes.
= Can be used for other applications besides Smalltalk code.
Currently used for an English glossary for StyledTextEditor.
- Trie. Cuis 4.- includes a very optimized implementation of a
Trie. Tries are dictionaries where keys are Strings. Lookups are
extremely fast. Search for entries matching a prefix are extremely
fast (O(1) regardless of the size of the collection). Addition and
removals are quite fast too. Used for UCompletion, holding 11,000
selectors. Also used for an English spell checker (in the
StyledTextEditor project) holding 166,000 words. In both cases use of
memory is quite reasonable (3 and 5.4 bytes per character in average)
and query speed is extremely fast.
- Multiple level undo / redo in all text and code editors.
- ClickNHalf+Drag to select words. TripleClick or
DoubleClickNHalf+Drag to select paragraphs. Like most modern text
editors and wordprocessors do.
- Multiple text selection (with control+mouse). Like most modern
text editors and wordprocessors do.
- Lf. The newline character is no longer Character cr (ASCII code
13), but Character lf (ASCII code 10). This is the standard in Mac and
Unix platforms, and the required convention for GitHub. All the code
in the image has been converted.
- cmd-w closes window below mouse pointer. cmd-< y cmd-> cycle
through windows.
- New "PostIt" like HoverHelp morphs.
- Simplification / Redesign: Scrolling in Morphic (TransformMorph
gone, etc).
- Deep cleanup in Paragraph and paragraph display services in
Canvas and DisplayScanner (now MorphicScanner).
- MouseClickState refactor, to ease new gestures
(ClickNHalf+Drag, DoubleClickNHalf+Drag, TripleClick).
- Killed AbstractEvent hierarchy. Unified event subscribing,
triggering and handling everywhere in Cuis.
- More TextMorph cleanup.
- Numeric enhancements done by nice and jmv, both on Squeak and Cuis.
- Many minor enhancements, cleanups and bugfixes.
- Updates to Squeak: Numerics, Network, and many others.
I hope you enjoy this release of Cuis as much as Bernhard and I
enjoyed working on it. As usual, comments, discussion, bug reports,
kudos and donations are all
welcome!
Cheers,
Juan Vuletich