Scintillating! A Modernized Text Editor for VA Smalltalk

Similar documents
VA Smalltalk Update. John O Keefe Chief Technical Officer Instantiations, Inc. Copyright 2014 Instantiations, Inc.

VA Smalltalk Update. John O Keefe Chief Technical Officer Instantiations, Inc. Copyright 2013 Instantiations, Inc.

Code::Blocks Student Manual

VA Smalltalk Update. John O Keefe Chief Technical Officer Instantiations, Inc. Copyright 2014 Instantiations, Inc.

Code::Blocks Student Manual

Object-Oriented Software Construction

Zend Studio 3.0. Quick Start Guide

Introduction to IntelliJ

gedit developer plugins Configuring and extending gedit for development

Managing Your Schoolwires Web Site

HOW TO USE CODE::BLOCKS IDE FOR COMPUTER PROGRAMMING LABORATORY SESSIONS

Coding Faster: Getting More Productive with Microsoft Visual

Introduction. Key features and lab exercises to familiarize new users to the Visual environment

Code Editor. The Code Editor is made up of the following areas: Toolbar. Editable Area Output Panel Status Bar Outline. Toolbar

Software Trajexia Studio USER MANUAL

STAR OFFICE WRITER. Lesson 2

Intro to MS Visual C++ Debugging

Beginners Guide to Snippet Master PRO

UIS Office of Web Services Documentation. WordPress User Guide. WordPress User Guide 8/31/17 Page 1 of 13

Notepad++ The COMPSCI 101 Text Editor for Windows. What is a text editor? Install Python 3. Installing Notepad++

Textadept Quick Reference

Your code must have been compiled with the -g compiler option. Example:

Using Eclipse Europa - A Tutorial

Microsoft Word 2007 on Windows

SKILLSCOMMONS ACCESSIBILITY CHECKPOINTS METHODS FOR EVALUATING THE ACCESSIBILITY OF WORD DOCUMENTS USING NON-ASSISTIVE TECHNOLOGIES

Productivity! Feature Matrix

Photoshop Fundamentals

ChemSense Studio Client Version 3.0.7

Compare and Merge Track Changes

010 Editor - Reference Manual V7.0. w w w. s w e e t s c a p e. c o m. Copyright SweetScape Software 1. C o p y r i g h t

Read Now In-Browser Reader Guide

USER GUIDE. MADCAP FLARE 2017 r3. QR Codes

31 Editing TTCN Documents

Getting Started Guide

Introduction to Microsoft Word 2010

CodeWarrior Development Studio for Power Architecture Processors FAQ Guide

1.00 Lecture 2. What s an IDE?

CHAPTER 3: MICROSOFT OFFICE: WORD 2010

Using Eclipse for Java. Using Eclipse for Java 1 / 1

Reference Services Division Presents. Microsoft Word 2

Table of contents. Sliding Billboard DMXzone.com

2 Getting Started. Getting Started (v1.8.6) 3/5/2007

Examples: To speed up routine editing and formatting Page X of Y. If you type teh plus a space, AutoCorrect replaces it with "the.

NoteWorthy Composer Version 2.75a

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018

Freedom of Choice: Using Object Code Completion in the IDE

Using Microsoft Word. Paragraph Formatting. Displaying Hidden Characters

Einführung in die Programmierung Introduction to Programming

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, January 2018

SDKs - Eclipse. SENG 403, Tutorial 2

MICROSOFT WORD 2010 BASICS

Eclipse Setup. Opening Eclipse. Setting Up Eclipse for CS15

Lesson 4 Page Styles

Lesson 2: First Java Programs

Zend Studio 5.5 for i5 /OS

Visual Studio.NET. Although it is possible to program.net using only the command OVERVIEW OF VISUAL STUDIO.NET

GETTING STARTED WITH ECLIPSE Caitrin Armstrong

VisualPST 2.4. Visual object report editor for PowerSchool. Copyright Park Bench Software, LLC All Rights Reserved

IAR Embedded Workbench

The PlainHTML Content Editor

Textadept Quick Reference

Reference Services Division Presents WORD Introductory Class

Chapter 3. HDL Editor. Introduction. Figure 3-1. HDL Editor Welcome Screen. Introduction 3-1

The major change in Word is the ribbon toolbar. The File menu has been replaced with a button.

Software Development 1 Advanced > Task X: NetBeans IDE

Integrated Software Environment. Part 2

UIS Office of Web Services Documentation. WordPress User Guide. WordPress User Guide 4/17/18 Page 1 of 12

Your code must have been compiled with the -g compiler option. Example:

Creating Buttons and Pop-up Menus

Chapter 13 Working with Styles

Getting Started Guide. Chapter 3 Using Styles and Templates

OMNeT++ User Guide. Version 5.2

Content App Guide. Blackboard Web Community Manager

MadLab JellyBean. version 1.0. Written by James Hutchby Copyright MadLab Ltd All Rights Reserved.

APPLICATION USER GUIDE. Application: EasySiteWizard PRO Version: 8.7

Bonus Lesson: Working with Code

Word - Basics. Course Description. Getting Started. Objectives. Editing a Document. Proofing a Document. Formatting Characters. Formatting Paragraphs

Chapter 6. Task-Related Organization. Single Menus. Menu Selection, Form Fill-in and Dialog Boxes. Binary Menus Radio Buttons Button Choice

Required Setup for 32-bit Applications

The NetBeans Debugger: A Brief Tutorial

PREZI. Transformation Zebra. How to Make a Prezi. Bubble Menu

At the shell prompt, enter idlde

Binghamton University. EngiNet. State University of New York

Semester 2, 2018: Lab 1

Enhance Salesforce with Code

Lexis for Microsoft Office User Guide

Indium Documentation. Release Nicolas Petton

"#$!%$&'!()*++$,! -&$,!./*0$!

plisp: A Friendly Lisp IDE for Beginners Rajesh Jayaprakash Tata Consultancy Services Chennai, India

Instructions for Formatting MLA Style Papers in Microsoft Word 2010

MIDDLE EAST TECHNICAL UNIVERSITY COMPUTER ENGINEERING DEPARTMENT CEYLAN AJAX SOFTWARE DEVELOPMENT STUDIO INITIAL DESIGN REPORT

Quark XML Author for FileNet 2.8 with BusDocs Guide

Understanding the Interface

Getting Started Guide. Chapter 3 Using Styles and Templates

A Guide to Quark Author Web Edition 2015

Section Editor Quick Start. Schoolwires Academic Portal Version 4.0

Using Eclipse Che IDE to develop your codebase. Red Hat Developers Documentation Team :54:11 UTC

Textadept Quick Reference

MS Word Basics. Groups within Tabs

Specification Manager

Transcription:

Scintillating! A Modernized Text Editor for VA Smalltalk Seth Berman Software Engineer 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

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

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

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

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

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

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)

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

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

Bracket Highlighting Stylization used to indicate matching characters for ()[]{} Separate style used to highlight unmatched characters

Bracket Highlighting Cont Bracket Highlighting is configurable

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

Smart Highlighting Cont Where is the argument, aninteger, used?

Smart Highlighting Cont Identify where variables are declared with a glance

Smart Highlighting Cont Block-args included

Smart Highlighting Cont Smart Highlighting is configurable

Line Numbers Available in Browser/Debuggers/Workspaces/Inspectors Line Number margins are dynamically sized Configurable across different window types

Breakpoint Management Persistent Breakpoint margin New Breakpoint icons Multiple Breakpoints / Line support Stylizes Breakpoint regions

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

Debugger Call Tips Cont Call Tips are configurable

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

Error/Warning/Info Indicators Cont Instantly identify misspelled variables

Error/Warning/Info Indicators Cont Identify methods not implemented

Error/Warning/Info Indicators Cont Some more examples

Error/Warning/Info Indicators Cont Indicators are configurable

Questions?