From 3ecf200b3469f63016b27141c20286a36d5dd9eb Mon Sep 17 00:00:00 2001 From: Philipp Emanuel Weidmann Date: Wed, 1 May 2024 14:07:50 -0700 Subject: Make initial editing mode configurable ref: https://github.com/helix-editor/helix/pull/3366 Co-authored-by: JJ --- book/src/configuration.md | 1 + helix-view/src/editor.rs | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/book/src/configuration.md b/book/src/configuration.md index e3dbce95..147e4eba 100644 --- a/book/src/configuration.md +++ b/book/src/configuration.md @@ -69,6 +69,7 @@ Its settings will be merged with the configuration directory `config.toml` and t | `popup-border` | Draw border around `popup`, `menu`, `all`, or `none` | `none` | | `indent-heuristic` | How the indentation for a newly inserted line is computed: `simple` just copies the indentation level from the previous line, `tree-sitter` computes the indentation based on the syntax tree and `hybrid` combines both approaches. If the chosen heuristic is not available, a different one will be used as a fallback (the fallback order being `hybrid` -> `tree-sitter` -> `simple`). | `hybrid` | `jump-label-alphabet` | The characters that are used to generate two character jump labels. Characters at the start of the alphabet are used first. | `"abcdefghijklmnopqrstuvwxyz"` +| `initial-mode` | The initial mode for newly opened editors. | `"normal"` | ### `[editor.statusline]` Section diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs index 44dd1041..1cf3eb1c 100644 --- a/helix-view/src/editor.rs +++ b/helix-view/src/editor.rs @@ -351,6 +351,8 @@ pub struct Config { pub jump_label_alphabet: Vec, /// Explorer configuration. pub explorer: ExplorerConfig, + /// The initial mode for newly opened editors. Defaults to `"normal"`. + pub initial_mode: Mode, } #[derive(Debug, Clone, PartialEq, Deserialize, Serialize, Eq, PartialOrd, Ord)] @@ -929,6 +931,7 @@ impl Default for Config { indent_heuristic: IndentationHeuristic::default(), jump_label_alphabet: ('a'..='z').collect(), explorer: ExplorerConfig::default(), + initial_mode: Mode::Normal, } } } @@ -1504,7 +1507,8 @@ impl Editor { return; } - self.enter_normal_mode(); + // this causes tree.rs to panic upon launch. todo: debug + // self.enter_normal_mode(); match action { Action::Replace => { @@ -1593,6 +1597,7 @@ impl Editor { /// Generate an id for a new document and register it. fn new_document(&mut self, mut doc: Document) -> DocumentId { + self.mode = self.config().initial_mode; let id = self.next_document_id; // Safety: adding 1 from 1 is fine, probably impossible to reach usize max self.next_document_id = -- cgit v1.2.3-70-g09d2