aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src
diff options
context:
space:
mode:
authorNathan Vegdahl2021-06-14 01:09:22 +0000
committerNathan Vegdahl2021-06-15 01:32:23 +0000
commit358ea6a37ccc3ee98f3680c9b4ee0dd0aa0781d2 (patch)
tree4278424ca919d4caf0a6e57eb877c8055467f94a /helix-term/src
parent8648e483f772b4791e5618c4c8b3db8926ae356d (diff)
Implement command to change the indent-style setting of a document.
Diffstat (limited to 'helix-term/src')
-rw-r--r--helix-term/src/commands.rs31
-rw-r--r--helix-term/src/ui/editor.rs2
2 files changed, 31 insertions, 2 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index b5f37563..94003c2e 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -9,7 +9,7 @@ use helix_core::{
};
use helix_view::{
- document::Mode,
+ document::{IndentStyle, Mode},
view::{View, PADDING},
Document, DocumentId, Editor, ViewId,
};
@@ -979,6 +979,28 @@ mod cmd {
doc.format(view.id)
}
+ fn set_indent_style(editor: &mut Editor, args: &[&str], event: PromptEvent) {
+ use IndentStyle::*;
+
+ let style = match args.get(0) {
+ Some(arg) if "tabs".starts_with(&arg.to_lowercase()) => Some(Tabs),
+ Some(arg) if arg.len() == 1 => {
+ let ch = arg.chars().next().unwrap();
+ if ('1'..='8').contains(&ch) {
+ Some(Spaces(ch.to_digit(10).unwrap() as u8))
+ } else {
+ None
+ }
+ }
+ _ => None,
+ };
+
+ if let Some(s) = style {
+ let (_, doc) = editor.current();
+ doc.indent_style = s;
+ }
+ }
+
fn earlier(editor: &mut Editor, args: &[&str], event: PromptEvent) {
let uk = match args.join(" ").parse::<helix_core::history::UndoKind>() {
Ok(uk) => uk,
@@ -1144,6 +1166,13 @@ mod cmd {
completer: None,
},
Command {
+ name: "indent_style",
+ alias: None,
+ doc: "Set the indentation style for editing. ('t' for tabs or 1-8 for number of spaces.)",
+ fun: set_indent_style,
+ completer: None,
+ },
+ Command {
name: "earlier",
alias: Some("ear"),
doc: "Jump back to an earlier point in edit history. Accepts a number of steps or a time span.",
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs
index 65b114a6..5db68751 100644
--- a/helix-term/src/ui/editor.rs
+++ b/helix-term/src/ui/editor.rs
@@ -501,7 +501,7 @@ impl EditorView {
// Compute the individual info strings.
let diag_count = format!("{}", doc.diagnostics().len());
let indent_info = match doc.indent_style {
- IndentStyle::Tabs => "tab",
+ IndentStyle::Tabs => "tabs",
IndentStyle::Spaces(1) => "spaces:1",
IndentStyle::Spaces(2) => "spaces:2",
IndentStyle::Spaces(3) => "spaces:3",