Editora 0.22.0 docs. You are reading an archived version, kept so links from that release keep working. Read the 0.23.0 docs →

Configuration

Editora keeps preferences and session state in a config folder. Most settings have a UI in the Settings window; everything underneath is plain text you can edit by hand.

Config directory

The folder is chosen by this precedence:

SourceLocation
--config-dir <path> (CLI)that path
EDITORA_CONFIG_DIR (env var)that path
--dev flag~/.editora-dev/
default~/.editora/

~ is your home directory; on Windows that is %USERPROFILE%, so the default folder is %USERPROFILE%\.editora.

Use --dev to run a development instance that never touches your everyday settings or session. The live path is shown in About Editora. See the command-line reference for all the flags.

Two editors on one config folder

A second launch normally goes to the editor that is already running on the same config folder, so one folder has one process. Starting another with --new-instance gives two processes that share the folder. That is safe: each one writes only what it changed, so settings, sessions, projects, notes, bookmarks, breakpoints, macros, the dictionary, and Local History from both are kept.

The second process shows a one-time notice in its status bar. A change made in one process appears in the other only after that one restarts, and when both change the same setting or entry, the one saved last wins. Settings sync runs only in the first process.

Files

FileHolds
settings.jsonPreferences: font, theme, keymap, tab size, view options, auto-save, keybinding overrides
workspace-state.jsonSession of the no-project window: open files, folds, tool-window layout, window geometry
windows/<id>.jsonSession of each extra no-project window
recent-files.jsonRecent files list
projects.json + projects/<id>.jsonProject index and each project’s session
bookmarks.jsonBookmarks (per project)
notes.jsonPersonal notes (per project)
breakpoints.jsonDebugger breakpoints (per project)
connections.jsonSaved SFTP connections (no secrets), with whether each host may run commands and its tool commands, and which containers and WSL distributions may run a project’s tools
plugins.json + plugins/<id>/Enabled plugins and their folders
dictionary.txtYour added spell-check words
macros.jsonSaved keyboard macros (format version 2; an older file is converted when it is read, and its key bindings are kept)
abbreviations.jsonYour abbreviations
trusted-folders.jsonFolders you have trusted to run their build wrappers
snippets/<lang>.json, templates/*.jsonYour snippets and file templates
history/Local History
http-history/The HTTP client’s last responses and chosen environment for each .http file

Preferences, sessions, and list files are JSON. If settings.json is absent, Editora converts an existing settings.toml automatically. Once the JSON replacement has been written safely, the old file is renamed to settings.toml.migrated and kept, because the JSON file does not carry over its comments.

Safety copies

These folders and files hold copies Editora makes before it replaces something. They are created only when needed.

PathHolds
recovery/The text of tabs with unsaved changes, for crash recovery. Removed as you save or close
save-backups/The previous contents of a file that is being overwritten in place, until that save finishes. One left by an interrupted save is offered at the next launch
line-ending-originals/The original bytes of the last 30 files whose mixed line endings a save rewrote
sync/The Settings sync working copy (sync/repo/) and copies of files a sync replaced (sync/backups/)
settings.json.before-reset-<date>.bakThe preferences as they were before Reset to Defaults
<name>.v<n>.bakA file written by a newer Editora, set aside by an older one (see Schema versioning)
<name>.corrupt.bakA config file that was empty, damaged, or not valid UTF-8 when it was read

A config file that cannot be read is never silently replaced by defaults: the original is copied to <name>.corrupt.bak and the problem is reported in the status bar at startup.

Inside a project

Two files live in the project itself rather than in your config directory, so they can be committed and shared:

FileHolds
.editora/settings.jsonToolchain overrides for this project: which language server to run for a language, whether to run it, and the Bash server’s options
.editora/run-configurations.jsonRun configurations exported for the team

Only toolchain settings can be overridden this way; appearance, keymap and fonts stay personal, because checking out a repository should not rearrange somebody else’s editor. Project: Edit Project Settings… creates the first file with an example. An existing project TOML file remains readable and is converted when you open Edit Project Settings. See projects.

Preferences (settings.json)

Edit in the Settings window, or directly:

{
  "fontFamily": "JetBrains Mono",
  "fontSize": 14,
  "theme": "Editora Dark",
  "tabSize": 4,
  "autoSave": "afterDelay"
}

autoSave accepts off, afterDelay, or onFocusChange. Text zoom is stored separately as fontZoom (adjusted with C-= / C-- / C-0 or Ctrl+wheel) and isn’t shown in the Settings window.

Containers

containerEngine is the command Editora runs for a project whose tools run in a container: blank (the default) means docker; podman works too, and so does a command line such as flatpak-spawn --host docker. It is the Container engine field in Settings → Remote. containerBindings remembers the container you picked for each project folder with Containers: Run This Project’s Tools in a Container…, from folder path to container name; Containers: Run This Project’s Tools Here removes the folder’s entry. Whether a container or WSL distribution may run a project’s tools is kept in connections.json, with the hosts’ answers.

Rulers and indent guides

These are the rows under Settings → Editor → Display:

KeySettings rowDefault
showColumnRulerShow rulerstrue
rulersRulers, such as 80, 120 (blank for none)[80]
languageRulersRulers by language, such as java: 100; python: 79, 88none
showIndentGuidesShow indent guidestrue

languageRulers maps a language to its own columns, used instead of rulers for files in that language; an empty list means that language has no rulers. Columns run from 1 to 1000. An .editorconfig max_line_length replaces the first ruler (see EditorConfig).

The palette sets the same values: Editor: Set Rulers… (editor.setRulers), Editor: Set Rulers for This Language… (editor.setLanguageRulers, for the current file’s language; leave it blank to go back to the global rulers), View: Toggle Rulers (view.toggleColumnRuler) and View: Toggle Indent Guides (view.toggleIndentGuides). Indent guides are faint vertical lines at each indentation level, carried through blank lines and coloured by the theme; they are hidden in Zen and Simple UI modes and in large-file mode.

{
  "rulers": [80, 120],
  "languageRulers": { "java": [100], "python": [79, 88], "markdown": [] },
  "showIndentGuides": true
}

Word wrap

Two rows under Settings → Editor → Display, one for code and one for prose (see Word wrap):

KeySettings rowDefault
wordWrapWrap long lines in codefalse
wordWrapProseWrap long lines in Markdown and plain texttrue

View: Toggle Word Wrap (view.toggleWordWrap) flips whichever of the two governs the file in front.

Schema versioning

Each structured config file carries a schemaVersion; in Editora 0.22.0 settings.json is at version 126. Editora migrates older files forward automatically on read. A file written by a newer Editora than you’re running is backed up to <name>.v<n>.bak and defaults are loaded, so an older build never clobbers a newer config. When you return to the newer build, it puts that copy back, provided the file left in its place still holds only defaults.

Export and reset

  • Export Configuration… (Settings → Advanced, or config.export) zips the active config folder into a timestamped archive in your home directory. .bak backups and installed plugins are included. Local History is left out, because it holds the text of your files rather than configuration. The HTTP client’s response history is left out too, unless you tick Include HTTP response history in the dialog that asks before exporting: saved responses hold response bodies and full request URLs, which can contain tokens or keys. Runtime files are never included: downloaded language servers and debug adapters, the installed ShellCheck and shfmt, the Typst CLI, jdtls workspaces, the sync/ folder, the lock files, the MCP endpoint file with its live token, and the session log.
  • Reset to Defaults (Settings → Advanced) resets every preference, including the keymap choice, which goes back to Emacs. Text zoom is kept, and your key rebinds stay stored with the keymap you made them in, so they apply again when you switch back to it. Before anything is reset, the current preferences are saved beside settings.json as settings.json.before-reset-<date>.bak, and the status bar names that file; if the copy cannot be written, nothing is reset. A Local History limit that is higher than the default is kept, so a reset never deletes revisions.

More

Full internals live in the README.