⚠️ This is alpha software and still lacks many features you may expect from a minimal text editor for software professionals.
Adam is a reimplementation of the Atom text editor. At its core, it aims to look and feel much like Atom. It aims to be extensible, but with a very different philosophy to Atom. Whereas Atom is designed to be extensible at runtime through a dynamic and proprietary plugin model, Adam aims to be extensible by its architecture and leveraging existing tools (npm and native ES modules), which have matured significantly since Atom's inception.
Atom has been officially abandoned and its codebase has been rotting for the past two years. Rather than attempt to repair it, I intend to learn from it and reimplement Atom's elegant design in such a way that what I have grown to love about it can still flourish and remain accessible to developers for years to come.
- Clone this repo.
- Run
npm install
to install dependencies. - Run
npm run start
to launch the editor.
- Download the appropriate Electron release package for our system and extract it to ~/Adam or the directory of your choice.
- Clone this repo into ~/Adam/resources/app.
- Navigate to where you cloned this repo and run
npm install
to install dependencies.
Now you can run ~/Adam/electron to launch the editor. For added convenience, you can create an adam
symlink or alias:
ln -s ~/Adam/electron ~/bin/adam
The following is a quick rundown of current known issues and work to be done:
- Ctrl+N to launch a new tab with an empty file buffer
- Ctrl+S on a file buffer without a corresponding file prompts for where to save the file
- Drag files in the file tree to move them
- Duplicate files in the file tree via right-click context menu
- Syntax highlighting system
- When cursor is at beginning of line, press tab to indent / shift+tab to unindent
- When a selection spans multiple lines, press tab to indent / shift+tab to unindent
- When a selection includes at least one character, press
{
,(
,[
,"
,'
, or ``` to surround the selection in the corresponding matched pair - Sync cursor position to status bar
- Ctrl+/ to comment or uncomment selected lines
- When cursor position is at a character with a matching pair according to the current grammar, highlight the matching character
- Color-coded file tree entries based on git status (new, added, ignored)
- Color-coded file tree entries based on
.
prefix (canonical "hidden" treatment) - Rearrange open tabs via drag-and-drop
- Highlight current line
- ...and more!
As this project matures beyond the initial prototype phase, so too will the project management and issue tracking.