Configuration
Arcus supports global and per-project configuration.
See also: Configuration for the auto-generated list of settings keys.
Configuration Editor
You can edit settings directly in Arcus via the configuration editor.
open-config-viewopens the global settings editor.open-project-configopens project-scoped settings for a selected project.- Everything listed in Configuration is intended to be editable there.
- Mouse wheel scrolling in the editor uses smooth scrolling.
- Press
/to start filtering settings by namespace/key. - Press
Enterto keep the current filter and exit input mode. - Press
Escwhile filtering to clear the filter and return to the full list.
Arcus stores two kinds of config data:
- Settings: user-facing options with schema (documented in Configuration).
- State: internal workspace/editor data (recent files, package status, quick commands, etc).
All setting keys live in :settings and use domain-prefixed kebab-case
for discoverability (for example: md-export-font-size, lsp-c-command,
repl-open-as-overlay).
Precedence
If the same setting is configured in both the configuration editor and ~/.config/arcus/init.lisp,
the value from init.lisp wins for the running session.
Where config lives
- Global config files:
~/.config/arcus/ - User startup file:
~/.config/arcus/init.lisp - Project overrides: stored under
~/.config/arcus/projects/.../config.lisp
Scopes
:globalapplies everywhere.:projectapplies only to one project.:autouses project when available, otherwise global.
Defining a setting
Register schema once:
(define-setting :settings :auto-format-on-save
:type :boolean
:default t
:description "Automatically format buffers before saving.")
All settings can be overridden globally and per-project. Use :scope when
reading/writing values to select a layer (or use :auto for project-first
fallback).
Reading and writing values
Read a value:
(config-get :settings :auto-format-on-save
:scope :global
:type :boolean
:default t)
Write a value:
(config-set :settings :auto-format-on-save nil
:scope :global
:type :boolean
:default t)
Project-scoped read:
(config-get :settings :markdown-transclusion-max-lines
:buffer buffer
:scope :auto
:type :integer
:min 1
:default 30)
Populating defaults
Populate missing schema defaults:
(config-ensure-schema-defaults :settings :scope :global)
Project defaults:
(config-ensure-schema-defaults :settings
:scope :project
:project-path project-path)