Marco Codes - Building a Text Editor
How to build a terminal-based text editor with Java
![Introduction & ANSI Escape Codes](/guide/assets/thumbnail-7b204aa8.png)
Introduction & ANSI Escape Codes
The role of ANSI escape codes
![Terminal Raw Mode & Terminal Attributes](/guide/assets/thumbnail-4000de4f.png)
Terminal Raw Mode & Terminal Attributes
Using RAW Mode and JNA
![Building The Text Viewer Skeleton](/guide/assets/thumbnail-624466f9.png)
Building The Text Viewer Skeleton
Using escape codes and placeholder icons
![Getting Terminal Rows & Columns With The IOCTL API](/guide/assets/thumbnail-1c1f34b2.png)
Getting Terminal Rows & Columns With The IOCTL API
Counting rows and columns and using the IOCTL API
![Bugfixing Flickering & Cursor Positioning](/guide/assets/thumbnail-c74cadb7.png)
Bugfixing Flickering & Cursor Positioning
Fixing bugs with flickering
![The Problem with Arrow Up & Down and Key Mappings](/guide/assets/thumbnail-c9d50c0c.png)
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](/guide/assets/thumbnail-a8c8558c.png)
How to Move your Cursor
Drawing and cursor
![How to Load and Display Text Files](/guide/assets/thumbnail-009f6dfd.png)
How to Load and Display Text Files
Using the PATH API
![Some Refactoring and Scrolling](/guide/assets/thumbnail-de5bed79.png)
Some Refactoring and Scrolling
Tidying up and tweaking
![Page Up and Page Down](/guide/assets/thumbnail-2b0790dd.png)
Page Up and Page Down
Implementing arrow keys for page up and down
![Horizontal Scrolling](/guide/assets/thumbnail-6f4b3936.png)
Horizontal Scrolling
Implementing horizontal scrolling
![End Key](/guide/assets/thumbnail-a09ba5ac.png)
End Key
Getting the End key to the end
![Cursor Snapping](/guide/assets/thumbnail-b947eeda.png)
Cursor Snapping
Autosnapping when you need it
![Cursor Line Wrapping](/guide/assets/thumbnail-e8bf7f98.png)
Cursor Line Wrapping
Wrap around on lines
![MacOS and Windows Support](/guide/assets/thumbnail-8c2ed8c3.png)
MacOS and Windows Support
Support for different OS
![Summary](/guide/assets/thumbnail-409bb29d.png)
Summary
Summary and acknowledgements