Cross-platform editor · Linux · macOS · Windows

    A persistent workspace, not a save-file workflow.

    Edithor never asks "save before closing?" Tabs are scratch pads. Close means gone. Open it tomorrow — everything is where you left it.

    Edithor
    main.go
    README.md
    untitled •
    // scratch.md
    type quietly.
    close to discard.
    ▍
    UTF-8 · LF · MarkdownLn 4, Col 1

    The Notepad++ way

    Three rules. Hold them and the rest follows.

    01

    Tabs are scratch pads

    Untitled tabs persist automatically across restarts. Type without naming, without saving. Content is just there when you reopen.

    02

    Close means gone

    Closing a tab is the only way to discard content. No "save before closing?" dialog. No recovery prompts on restart.

    03

    Ctrl+S is intentional

    Saving writes to disk and clears the dirty flag. It's an explicit act, not a required one. Edits to saved files survive restarts too. Or configure autosave, if that is more convenient.

    Features

    Built for code, comfortable for prose.

    28+ languages

    CodeMirror 6 with lazy-loaded language modes. Go, Rust, Python, TypeScript, Markdown — and the rest.

    Split view

    Side-by-side editing in the same window. No multi-window dance — diff or refer without losing context.

    Edit over SSH

    Open ssh:// URLs and edit remote files with local-speed typing. Atomic saves, divergence detection on restore.

    Command palette

    Ctrl+Shift+P. Every action one fuzzy-search away. Keybindings for what you reach for most.

    Sandboxed plugins

    Plugins run in Web Workers with capability-based access. A misbehaving plugin can't read ~/.ssh.

    Session that survives

    Tab order, cursor positions, dirty buffers — restored on launch. Single instance, second invocation forwards files in.

    Security

    Plugins you can trust by design.

    Every plugin runs in its own Web Worker with an explicit capability list. The host CSP and worker-level lockdown gate network egress so a plugin without the network capability simply can't reach out — declared in JS or not.

    • 01One Web Worker per plugin. No shared globals, no surprise mutations to the editor.
    • 02Filesystem access is path-confined to the plugin's own data directory. ~/.ssh, ~/.bashrc, the rest of your home — off-limits.
    • 03Network calls go through a mediated fetch with SSRF guards, redirect policy, and an audit log. Raw fetch is replaced with a throwing stub.

    Download

    Get Edithor.

    Freeware. Cross-platform. Builds for Linux (.deb), macOS (.dmg, universal), and Windows (.exe, NSIS) are produced from a single tag.

    Loading…