SlideShare a Scribd company logo
Copyright © 2013 Instantiations, Inc.
Scintillating! A Modernized Text
Editor for VA Smalltalk
Seth Berman
Software Engineer
Instantiations, Inc.
Scintillating! A Modernized Text
Editor for VA Smalltalk
Seth Berman
Software Engineer
Instantiations, Inc.
Scintillating! A Modernized Text
Editor for VA Smalltalk
Seth Berman
Software Engineer
Instantiations, Inc.
Copyright © 2013 Instantiations, Inc.
Requirements
• Provide a modern text editor
• Additional visual cues and styling
• Take advantage of the latest technologies
• Minimize change to our existing system
• Maintain full API compatibility with existing editor
• Structural compatibility with our widget frameworks
• Must be inline with our cross-platform roadmap
• GTK
• New capability must be made accessible to our
customers
Copyright © 2013 Instantiations, Inc.
Scintilla
• Free library providing functionality to help build
text editors
• Provides numerous features specific to source
code editing
• Initial release in 1999
• Active community
• Used by Code::Blocks, Notepad++, TortoiseSVN
• Cross-Platform support
Copyright © 2013 Instantiations, Inc.
Scintilla Integration in VAST
• Integrated into our Common Widgets Framework
• New CwScintillaEditor widget integrated
• Offers full API support for Scintilla 3.3.3 (the
latest)
• Compatibility methods implemented to provide
100% API capability with our existing legacy
editor components
Copyright © 2013 Instantiations, Inc.
Direct2D/DirectWrite
• Microsoft’s technology to provide higher quality
font rendering
• Hardware-Accelerated Rendering
• Offloads many aspects of rendering to the GPUs
• Windows 7 and above
• How noticeable a difference? Depends on
• Font type and style
• Monitor type and size
• Your eyes and/or attention to detail
Copyright © 2013 Instantiations, Inc.
Text Editor Basics
• Auto-Indent
• Keyboard Shortcuts
• <Tab> to indent, <Shift+Tab> to unindent
• <Alt+Up/Down> to move blocks of selected text one
line at a time
• DragNDrop to relocate blocks of selected text
• Margin Area
Copyright © 2013 Instantiations, Inc.
Multiple Undo/Redo
• Finally!
• No hard limit (only memory)
• Supports coalescing
• Combine contiguous insertions and deletions into single
undo operations
• APIs for user-defined coalescing
Copyright © 2013 Instantiations, Inc.
Code Completion
• Scintilla offers a code completion popup and API
• We hooked it up to our code completion engine
• Users have the option to select which popup they
prefer
• Basic (Minimal styling capability)
• Extended (Maximum styling capability)
• Scintilla (Somewhere in the middle)
Copyright © 2013 Instantiations, Inc.
Syntax Color Highlighting
• Scintilla Lexer defines how a specified range of
text is to be colored
• Has lexer support for 80+ languages
• Smalltalk is one of them, but it was too simplistic
• Provides hooks to allow us to write our own custom
lexer in Smalltalk (Container-Defined Styling)
• Container-Defined Styling
• Scintilla specifies what needs to be styled via events
• VAST’s custom styler defines how the character range is
to be styled
Copyright © 2013 Instantiations, Inc.
VAST Custom Styler
• Comes in 2 flavors
• Method styler to style text in browsers and debuggers
• Optimized to style methods
• Snippet styler to style text in inspectors and workspaces
• Optimized to style snippets of code
• Adds some fuzzy logic rules
• Now we can offer color in our inspectors and workspaces
• Styler uses a custom token scanner instead of
parse trees
• Enables real-time coloring
• Much more flexible then our previous parse-tree
implementation
Copyright © 2013 Instantiations, Inc.
Bracket Highlighting
• Stylization used to indicate matching characters
for ()[]{}
• Separate style used to highlight unmatched
characters
Copyright © 2013 Instantiations, Inc.
Bracket Highlighting Cont…
• Bracket Highlighting is configurable
Copyright © 2013 Instantiations, Inc.
Smart Highlighting
• Adding stylization to a selected word and any
matching word in the source
• Useful for seeing local variable usage
• Adds extra decoration to highlighting browsers
• Added logic to handle block argument
highlighting
• Stylization applied behind text so syntax color
highlighting shows through
Copyright © 2013 Instantiations, Inc.
Smart Highlighting Cont…
• Where is the argument, anInteger, used?
Copyright © 2013 Instantiations, Inc.
Smart Highlighting Cont…
• Identify where variables are declared with a
glance
Copyright © 2013 Instantiations, Inc.
Smart Highlighting Cont…
• Block-args included…
Copyright © 2013 Instantiations, Inc.
Smart Highlighting Cont…
• Smart Highlighting is configurable
Copyright © 2013 Instantiations, Inc.
Line Numbers
• Available in
Browser/Debuggers/Workspaces/Inspectors
• Line Number margins are dynamically sized
• Configurable across different window types
Copyright © 2013 Instantiations, Inc.
Breakpoint Management
• Persistent Breakpoint margin
• New Breakpoint icons
• Multiple Breakpoints / Line support
• Stylizes Breakpoint regions
Copyright © 2013 Instantiations, Inc.
Debugger Call Tips
• Hover mouse over variables and globals displays
a calltip showing it’s value
• Clicking a calltip will bring up an inspector
• Long calltips are formatted to single-line
Copyright © 2013 Instantiations, Inc.
Debugger Call Tips Cont…
• Call Tips are configurable
Copyright © 2013 Instantiations, Inc.
Error/Warning/Info Indicators
• Stylized Squiggle lines underneath text to
indicate
• Fatal Errors
• Errors
• Warnings
• Info
• Calltips provide information about the indicator
• Incremental compiler runs in the background to
identify issues in real-time
• Collects information from parse trees and the styler
Copyright © 2013 Instantiations, Inc.
Error/Warning/Info Indicators
Cont…
• Instantly identify misspelled variables
Copyright © 2013 Instantiations, Inc.
Error/Warning/Info Indicators
Cont…
• Identify methods not implemented
Copyright © 2013 Instantiations, Inc.
Error/Warning/Info Indicators
Cont…
• Some more examples…
Copyright © 2013 Instantiations, Inc.
Error/Warning/Info Indicators
Cont…
• Indicators are configurable
Copyright © 2013 Instantiations, Inc.
Questions?

More Related Content

PPTX
Domain Driven Design Through Onion Architecture
PPTX
Funky serverless features at aws
PDF
Building the Eventbrite API Ecosystem
PPT
Adapter Poxy Pattern
PPTX
Starting Mobile Development
PPTX
Building custom skills with Amazon Alexa
PPTX
Multi-Factor Auth in Alexa Skills - Faisal Valli
PPTX
Onion Architecture
Domain Driven Design Through Onion Architecture
Funky serverless features at aws
Building the Eventbrite API Ecosystem
Adapter Poxy Pattern
Starting Mobile Development
Building custom skills with Amazon Alexa
Multi-Factor Auth in Alexa Skills - Faisal Valli
Onion Architecture

Similar to Scintillating (20)

PDF
VA Smalltalk Update ESUG2014
PDF
VA Smalltalk Update
PPTX
Continuous Integration
PPTX
Top 10 VS Code Extensions for Web Developers.pptx
PDF
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
PDF
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
PDF
VA Smalltalk Update
PDF
InfluxDB 2.0 Client Libraries by Noah Crowley
PPTX
Babel.pptx
PDF
NetWork - 15.10.2011 - Applied code generation in .NET
PPTX
APPWorld Conference 2011 - Arbortext and APP for Developers
PPTX
Innovations in Sencha Tooling and Framework
PDF
Microservices in Go with Go kit
PDF
Shindig Apachecon Asia 09
PPTX
Accelerate your Sitecore development with GenAI
PDF
UCSY CS Club Week2
PDF
Code Inspection
PPTX
Adminstering biztalkusingchatbot
PPTX
Benchmark Maturity of your SaaS Solution
PPTX
Presentation Azure Chat Bot Project.pptx
VA Smalltalk Update ESUG2014
VA Smalltalk Update
Continuous Integration
Top 10 VS Code Extensions for Web Developers.pptx
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
VA Smalltalk Update
InfluxDB 2.0 Client Libraries by Noah Crowley
Babel.pptx
NetWork - 15.10.2011 - Applied code generation in .NET
APPWorld Conference 2011 - Arbortext and APP for Developers
Innovations in Sencha Tooling and Framework
Microservices in Go with Go kit
Shindig Apachecon Asia 09
Accelerate your Sitecore development with GenAI
UCSY CS Club Week2
Code Inspection
Adminstering biztalkusingchatbot
Benchmark Maturity of your SaaS Solution
Presentation Azure Chat Bot Project.pptx
Ad

More from ESUG (20)

PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
PDF
Directing Generative AI for Pharo Documentation
PDF
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
PDF
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
PDF
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
PDF
Analysing Python Machine Learning Notebooks with Moose
PDF
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
PDF
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
PDF
Package-Aware Approach for Repository-Level Code Completion in Pharo
PDF
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
PDF
An Analysis of Inline Method Refactoring
PDF
Identification of unnecessary object allocations using static escape analysis
PDF
Control flow-sensitive optimizations In the Druid Meta-Compiler
PDF
Clean Blocks (IWST 2025, Gdansk, Poland)
PDF
Encoding for Objects Matters (IWST 2025)
PDF
Challenges of Transpiling Smalltalk to JavaScript
PDF
Immersive experiences: what Pharo users do!
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
PDF
Cavrois - an Organic Window Management (ESUG 2025)
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
Micromaid: A simple Mermaid-like chart generator for Pharo
Directing Generative AI for Pharo Documentation
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
Analysing Python Machine Learning Notebooks with Moose
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
Package-Aware Approach for Repository-Level Code Completion in Pharo
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
An Analysis of Inline Method Refactoring
Identification of unnecessary object allocations using static escape analysis
Control flow-sensitive optimizations In the Druid Meta-Compiler
Clean Blocks (IWST 2025, Gdansk, Poland)
Encoding for Objects Matters (IWST 2025)
Challenges of Transpiling Smalltalk to JavaScript
Immersive experiences: what Pharo users do!
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
Cavrois - an Organic Window Management (ESUG 2025)
Ad

Recently uploaded (20)

PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
August Patch Tuesday
PPTX
The various Industrial Revolutions .pptx
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PPTX
Tartificialntelligence_presentation.pptx
PPTX
Modernising the Digital Integration Hub
PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
STKI Israel Market Study 2025 version august
PDF
Enhancing emotion recognition model for a student engagement use case through...
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
A novel scalable deep ensemble learning framework for big data classification...
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Assigned Numbers - 2025 - Bluetooth® Document
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Group 1 Presentation -Planning and Decision Making .pptx
August Patch Tuesday
The various Industrial Revolutions .pptx
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Tartificialntelligence_presentation.pptx
Modernising the Digital Integration Hub
observCloud-Native Containerability and monitoring.pptx
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Final SEM Unit 1 for mit wpu at pune .pptx
STKI Israel Market Study 2025 version august
Enhancing emotion recognition model for a student engagement use case through...
Module 1.ppt Iot fundamentals and Architecture
WOOl fibre morphology and structure.pdf for textiles
A novel scalable deep ensemble learning framework for big data classification...
NewMind AI Weekly Chronicles – August ’25 Week III
Assigned Numbers - 2025 - Bluetooth® Document

Scintillating

  • 1. Copyright © 2013 Instantiations, Inc. Scintillating! A Modernized Text Editor for VA Smalltalk Seth Berman Software Engineer Instantiations, Inc. Scintillating! A Modernized Text Editor for VA Smalltalk Seth Berman Software Engineer Instantiations, Inc. Scintillating! A Modernized Text Editor for VA Smalltalk Seth Berman Software Engineer Instantiations, Inc.
  • 2. Copyright © 2013 Instantiations, Inc. Requirements • Provide a modern text editor • Additional visual cues and styling • Take advantage of the latest technologies • Minimize change to our existing system • Maintain full API compatibility with existing editor • Structural compatibility with our widget frameworks • Must be inline with our cross-platform roadmap • GTK • New capability must be made accessible to our customers
  • 3. Copyright © 2013 Instantiations, Inc. Scintilla • Free library providing functionality to help build text editors • Provides numerous features specific to source code editing • Initial release in 1999 • Active community • Used by Code::Blocks, Notepad++, TortoiseSVN • Cross-Platform support
  • 4. Copyright © 2013 Instantiations, Inc. Scintilla Integration in VAST • Integrated into our Common Widgets Framework • New CwScintillaEditor widget integrated • Offers full API support for Scintilla 3.3.3 (the latest) • Compatibility methods implemented to provide 100% API capability with our existing legacy editor components
  • 5. Copyright © 2013 Instantiations, Inc. Direct2D/DirectWrite • Microsoft’s technology to provide higher quality font rendering • Hardware-Accelerated Rendering • Offloads many aspects of rendering to the GPUs • Windows 7 and above • How noticeable a difference? Depends on • Font type and style • Monitor type and size • Your eyes and/or attention to detail
  • 6. Copyright © 2013 Instantiations, Inc. Text Editor Basics • Auto-Indent • Keyboard Shortcuts • <Tab> to indent, <Shift+Tab> to unindent • <Alt+Up/Down> to move blocks of selected text one line at a time • DragNDrop to relocate blocks of selected text • Margin Area
  • 7. Copyright © 2013 Instantiations, Inc. Multiple Undo/Redo • Finally! • No hard limit (only memory) • Supports coalescing • Combine contiguous insertions and deletions into single undo operations • APIs for user-defined coalescing
  • 8. Copyright © 2013 Instantiations, Inc. Code Completion • Scintilla offers a code completion popup and API • We hooked it up to our code completion engine • Users have the option to select which popup they prefer • Basic (Minimal styling capability) • Extended (Maximum styling capability) • Scintilla (Somewhere in the middle)
  • 9. Copyright © 2013 Instantiations, Inc. Syntax Color Highlighting • Scintilla Lexer defines how a specified range of text is to be colored • Has lexer support for 80+ languages • Smalltalk is one of them, but it was too simplistic • Provides hooks to allow us to write our own custom lexer in Smalltalk (Container-Defined Styling) • Container-Defined Styling • Scintilla specifies what needs to be styled via events • VAST’s custom styler defines how the character range is to be styled
  • 10. Copyright © 2013 Instantiations, Inc. VAST Custom Styler • Comes in 2 flavors • Method styler to style text in browsers and debuggers • Optimized to style methods • Snippet styler to style text in inspectors and workspaces • Optimized to style snippets of code • Adds some fuzzy logic rules • Now we can offer color in our inspectors and workspaces • Styler uses a custom token scanner instead of parse trees • Enables real-time coloring • Much more flexible then our previous parse-tree implementation
  • 11. Copyright © 2013 Instantiations, Inc. Bracket Highlighting • Stylization used to indicate matching characters for ()[]{} • Separate style used to highlight unmatched characters
  • 12. Copyright © 2013 Instantiations, Inc. Bracket Highlighting Cont… • Bracket Highlighting is configurable
  • 13. Copyright © 2013 Instantiations, Inc. Smart Highlighting • Adding stylization to a selected word and any matching word in the source • Useful for seeing local variable usage • Adds extra decoration to highlighting browsers • Added logic to handle block argument highlighting • Stylization applied behind text so syntax color highlighting shows through
  • 14. Copyright © 2013 Instantiations, Inc. Smart Highlighting Cont… • Where is the argument, anInteger, used?
  • 15. Copyright © 2013 Instantiations, Inc. Smart Highlighting Cont… • Identify where variables are declared with a glance
  • 16. Copyright © 2013 Instantiations, Inc. Smart Highlighting Cont… • Block-args included…
  • 17. Copyright © 2013 Instantiations, Inc. Smart Highlighting Cont… • Smart Highlighting is configurable
  • 18. Copyright © 2013 Instantiations, Inc. Line Numbers • Available in Browser/Debuggers/Workspaces/Inspectors • Line Number margins are dynamically sized • Configurable across different window types
  • 19. Copyright © 2013 Instantiations, Inc. Breakpoint Management • Persistent Breakpoint margin • New Breakpoint icons • Multiple Breakpoints / Line support • Stylizes Breakpoint regions
  • 20. Copyright © 2013 Instantiations, Inc. Debugger Call Tips • Hover mouse over variables and globals displays a calltip showing it’s value • Clicking a calltip will bring up an inspector • Long calltips are formatted to single-line
  • 21. Copyright © 2013 Instantiations, Inc. Debugger Call Tips Cont… • Call Tips are configurable
  • 22. Copyright © 2013 Instantiations, Inc. Error/Warning/Info Indicators • Stylized Squiggle lines underneath text to indicate • Fatal Errors • Errors • Warnings • Info • Calltips provide information about the indicator • Incremental compiler runs in the background to identify issues in real-time • Collects information from parse trees and the styler
  • 23. Copyright © 2013 Instantiations, Inc. Error/Warning/Info Indicators Cont… • Instantly identify misspelled variables
  • 24. Copyright © 2013 Instantiations, Inc. Error/Warning/Info Indicators Cont… • Identify methods not implemented
  • 25. Copyright © 2013 Instantiations, Inc. Error/Warning/Info Indicators Cont… • Some more examples…
  • 26. Copyright © 2013 Instantiations, Inc. Error/Warning/Info Indicators Cont… • Indicators are configurable
  • 27. Copyright © 2013 Instantiations, Inc. Questions?