Carry less.
Litecode is a code editor that stays out of your way. Open a folder. Press ⌘P. Write.
Open a folder. Write. Run. That's the whole idea.
Find anything in four keystrokes.
A working copy of ⌘P. Type part of a name, or part of a path, or both. The name wins.
Drop a file. See its neighbors.
Grab the file below and drop it on the editor. It doesn't have to live in your project. Wherever it came from, the files around it are right there.
Review a commit in a glance.
Every file is a closed row. Open the ones you care about, or all of them.
@@ -18,4 +18,6 @@ func parse(_ text: String) -> Document { - let first = text.first! + guard let first = text.first else { + return Document() + } var reader = Reader(first) return reader.document()
@@ -0,0 +1,5 @@ +final class EmptyInputTests: XCTestCase { + func testEmptyTextIsAnEmptyDocument() { + XCTAssertEqual(parse(""), Document()) + } +}
@@ -12,3 +12,4 @@ - Reads plain text +- Accepts empty input - Reports an error with its line - Never writes a file
Everything you reach for.
And not one thing you don't.
A real file tree
Open a folder and it's the root. Folders open and close as you click. A single click previews a file in an italic tab the next one replaces.
Go to file
One key, a field over your project, and the file you meant. Match the name, the path, or letters of both.
Neighbors on arrival
Drop a file from anywhere and the folder around it appears. Drop a folder and it becomes your workspace.
Its own past
Step back through any file's git history without leaving it, and come back to exactly where you were. Litecode only ever reads history.
A panel for output
Run a command under your editor and watch it print. Stop it with one key. The commands you ran are one arrow away.
Color, no waiting
Swift, TypeScript, JavaScript, C++, Python, JSON, shell (dotfiles too) and nginx. Colors come in the background, so typing never waits on them.
Yours until you say
Nothing is written until you press ⌘S. Close a tab or quit with changes and it asks, in the window, never behind your back.
Big files, calmly
Open files into the tens of megabytes. A line too long to lay out safely turns off wrapping and color, and says so.
Who wrote this line
The age and author of the line you're on, in the status bar and right after the line. Rest the pointer on it for the whole commit message. Read from git, never written to it.
Come back to it
Mark a line with one key. Step to the next or the previous, in this file or the next one. Marks follow their lines as you edit, and wait for you between launches.
Numbers, quietly
A gutter of line numbers that works out only what's on screen, so a very large file scrolls as easily as a small one.
The log, a click away
The git log lists in the left pane where the Explorer was. Pick a commit and it opens in the main pane, with its message, its author and what it changed.
Review at a glance
Every changed file is a closed row with its counts. Open one for a change in red and green, or open them all with a click.
One strip, more to come
A narrow strip along the left edge holds a view per icon: your files, the git log, search, and your remote machines. The pointer is a hand over them, as it should be.
Search, here or there
Type, press Return, and the matches fill in grouped by file. Case and regular expressions are a click each. On a machine, only the matches travel.
Over ssh
Save a machine and its folders open in a pane. Click a file, edit it, save it back. Your keys, your ssh config, nothing installed on the other end. Go to file, search, the log and blame work there too.
Options, inside the window
One key opens a page of settings over the editor, not a window of its own. Turn the note after the line off, and it stays off.
Quiet
No account. No analytics. No update ping. No network code of its own: a machine you connect to is reached by your Mac's own ssh, because you asked.
Two keys we're not
telling you about yet.
You'll know the moment you press them.
An editor that stays out of the way.
A look at the field in general, one box at a time.
| The field | Litecode | |
|---|---|---|
| A real Mac app, not a web wrapper | Some | |
| Makes no network connections of its own | Rarely | |
| No account, no sign-in | Some | |
| Never saves a file you didn't tell it to save | Some | |
| Drop a file from anywhere and see its neighbors | Rarely | |
| Go to a file by name or by path | Often | |
| Step through a file's git history in place | Rarely | |
| Who last changed the line you're on, at a glance | Rarely | |
| Bookmarks you can step through, across files | Rarely | |
| Review a commit's files as closed rows that open to a colored change | Some | |
| Edit files over ssh with nothing installed on the machine | Some | |
| An output panel for running commands | Often | |
| Syntax colors without a language server | Some |
Compared with code editors in general, not any one app. Many of them do some of this, and extensions or plugins fill in more; "Some", "Often" and "Rarely" describe how common each is out of the box. Features vary by app and version. Litecode doesn't have a language server, a debugger or a plugin system yet; see the questions below.
Fair questions.
Is Litecode free?
Yes. No subscription, no account, no trial that runs out.
Is it light?
Yes, on purpose. It's a native Mac app built on the frameworks already on every Mac, so it doesn't carry a web browser or a runtime around with it: nothing to wait for at launch, and nothing running when you aren't.
Does it phone home?
No. There are no analytics, no crash reporter, no update check and no network code of its own. Commands you run in the output panel can use the network, because they're yours. If you connect to a machine over ssh, your Mac's own ssh makes that connection, because you asked, and nothing connects at launch.
Does it save my files for me?
Never. A file is written when you press ⌘S. Closing a tab or quitting with unsaved changes asks first, inside the window. If a file changes on disk while you're editing it, Litecode asks before overwriting.
Which languages get colors?
Swift, TypeScript, JavaScript, C and C++ (and Objective-C), Python, JSON, shell scripts (including .bashrc, .zshrc and any script whose first line names its interpreter) and nginx configuration. Everything else opens as plain text.
Does it work over ssh?
Yes. Save a machine, click one of its files to open it, and save to send it back. It uses your Mac's own ssh, so your keys, your agent and your ssh config work as they do in Terminal, and nothing is installed on the machine. Go to File, search, the git log and blame work there too, and the output panel runs commands on that machine.
What doesn't Litecode do?
It isn't a plugin platform, a debugger or a language server client yet, so there's no completion popup or go-to-definition. There are excellent tools for those, and nothing stops you using them on the same folder. Litecode is the part you open a hundred times a day.
Do I need git?
Only for file history, blame, the git log and the commit view. Git comes with Apple's Command Line Developer Tools, and on a machine you connect to, its own git is used. Litecode only reads from it; it never commits on its own.
How big a file can it open?
Up to 64 MB. A file with a line so long it would stall the window opens with wrapping and colors turned off, and says so.
Can I use my own folder, my own repo, my own tools?
That's the point. A folder is just a folder, and a file is just a file. Nothing is kept in a project database or a hidden settings folder of its own.
What Mac do I need?
A Mac running macOS 13 Ventura or later.
What's coming next?
Soon.