Marco Codes - Building a Text Editor
How to build a terminal-based text editor with Java.

Introduction & ANSI Escape Codes
The role of ANSI escape codes.

Terminal Raw Mode & Terminal Attributes
Using RAW Mode and JNA.

Building The Text Viewer Skeleton
Using escape codes and placeholder icons.

Getting Terminal Rows & Columns With The IOCTL API
Counting rows and columns and using the IOCTL API.

Bugfixing Flickering & Cursor Positioning
Fixing bugs with flickering.

The Problem with Arrow Up & Down and Key Mappings
Arrow motion & How to map 3 or 4 keys to 1.

How to Move your Cursor
Drawing and cursor.

How to Load and Display Text Files
Using the PATH API.

Some Refactoring and Scrolling
Tidying up and tweaking.

Page Up and Page Down
Implementing arrow keys for page up and down.

Horizontal Scrolling
Implementing horizontal scrolling.

End Key
Getting the End key to the end.

Cursor Snapping
Autosnapping when you need it.

Cursor Line Wrapping
Wrap around on lines.

MacOS and Windows Support
Support for different OS.

Summary
Summary and acknowledgements.