Read config.toml, keys.toml and themes, and open them with :config (stage 8b)
The config folder now sets everything: config.toml the settings (now also `theme` and `editor`), keys.toml the keys, and themes/<name>.toml the theme, laid over the built-in one, so a theme only needs what it changes. Each file is applied again a second after it's saved; a mistake only drops its own line, and the status bar says what's wrong, naming the file. :config lists the three files with their folder; Enter hands the terminal to your editor (the editor setting, $VISUAL, $EDITOR, else notepad or vi), writing the file first if it's missing, with every option at its default behind a #, explained (keys.toml lists every command by name). :theme switches themes until cumulus quits, like :set. The built-in theme gets the named styles the user picked, each also put on by its tag: question (yellow, dashed), important (red, thick) and done (gray, its title faded); and link styles blocks and supports, whose label shows on a link without its own. Themes can also set [modes], [node], [root], [branch] and [link]. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
f6dc4564aa
commit
abe3dc1d84
26 files changed
+1683
-129
No files matched your search
+6
-6
@@ -8,9 +8,8 @@ use std::process::ExitCode;
|
||||
|
||||
use cumulus::app::startup::{self, Startup};
|
||||
use cumulus::app::{App, run};
|
||||
use cumulus::config::Config;
|
||||
use cumulus::config::paths::Paths;
|
||||
use cumulus::config::settings::Settings;
|
||||
use cumulus::input::keymap::{DEFAULT_LEADER, Keymap};
|
||||
|
||||
const USAGE: &str = "\
|
||||
cumulus: brainstorm in the terminal
|
||||
@@ -61,10 +60,11 @@ fn start(args: Vec<String>) -> Result<(), String> {
|
||||
Some(_) => Startup::Open(args.iter().map(PathBuf::from).collect()),
|
||||
};
|
||||
let paths = Paths::locate().map_err(|error| error.to_string())?;
|
||||
// config.toml and keys.toml come in part 8b of the build.
|
||||
let settings = Settings::default();
|
||||
// The config folder first: it names the document `cumulus` looks for.
|
||||
let config = Config::load(&paths);
|
||||
let here =
|
||||
std::env::current_dir().map_err(|error| format!("can't tell which folder this is: {error}"))?;
|
||||
let opening = startup::open(&startup, &paths, &here, &settings).map_err(|error| error.to_string())?;
|
||||
run(App::new(paths, settings, Keymap::new(DEFAULT_LEADER), opening)).map_err(|error| error.to_string())
|
||||
let opening =
|
||||
startup::open(&startup, &paths, &here, &config.settings).map_err(|error| error.to_string())?;
|
||||
run(App::new(paths, config, opening)).map_err(|error| error.to_string())
|
||||
}
|
||||
Reference in new issue
Block a user