diff options
author | Dongxu Wang <dongxu@apache.org> | 2024-01-29 18:58:20 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-29 10:58:20 +0000 |
commit | e1c2b9c783587547cbf740ee76206507fbbde330 (patch) | |
tree | 78cf0f2cd9df29b432d077f3173fbe64bd599bb8 | |
parent | 2ef516935747eaacacbe9e075fbc5a23ea9c2a15 (diff) |
feat: make history list format configurable (#1638)
* feat: make history list format configurable
* Update atuin-client/config.toml
* review: run format
---------
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
-rw-r--r-- | atuin-client/config.toml | 3 | ||||
-rw-r--r-- | atuin-client/src/settings.rs | 2 | ||||
-rw-r--r-- | atuin/src/command/client/history.rs | 16 | ||||
-rw-r--r-- | atuin/src/command/client/search.rs | 10 |
4 files changed, 25 insertions, 6 deletions
diff --git a/atuin-client/config.toml b/atuin-client/config.toml index d18d9783..9a094f88 100644 --- a/atuin-client/config.toml +++ b/atuin-client/config.toml @@ -84,6 +84,9 @@ ## alt-0 .. alt-9 # ctrl_n_shortcuts = false +## default history list format - can also be specified with the --format arg +# history_format = "{time}\t{command}\t{duration}" + ## prevent commands matching any of these regexes from being written to history. ## Note that these regular expressions are unanchored, i.e. if they don't start ## with ^ or end with $, they'll match anywhere in the command. diff --git a/atuin-client/src/settings.rs b/atuin-client/src/settings.rs index 122b8d57..de6b10a4 100644 --- a/atuin-client/src/settings.rs +++ b/atuin-client/src/settings.rs @@ -277,6 +277,7 @@ pub struct Settings { pub word_jump_mode: WordJumpMode, pub word_chars: String, pub scroll_context_lines: usize, + pub history_format: String, #[serde(with = "serde_regex", default = "RegexSet::empty")] pub history_filter: RegexSet, @@ -480,6 +481,7 @@ impl Settings { let session_path = data_dir.join("session"); Ok(Config::builder() + .set_default("history_format", "{time}\t{command}\t{duration}")? .set_default("db_path", db_path.to_str())? .set_default("record_store_path", record_store_path.to_str())? .set_default("key_path", key_path.to_str())? diff --git a/atuin/src/command/client/history.rs b/atuin/src/command/client/history.rs index b91fc57a..e983cc7b 100644 --- a/atuin/src/command/client/history.rs +++ b/atuin/src/command/client/history.rs @@ -366,7 +366,16 @@ impl Cmd { .list(&filters, &context, None, false, include_deleted) .await?; - print_list(&history, mode, format.as_deref(), print0, reverse); + print_list( + &history, + mode, + match format { + None => Some(settings.history_format.as_str()), + _ => format.as_deref(), + }, + print0, + reverse, + ); Ok(()) } @@ -449,7 +458,10 @@ impl Cmd { print_list( last, ListMode::from_flags(human, cmd_only), - format.as_deref(), + match format { + None => Some(settings.history_format.as_str()), + _ => format.as_deref(), + }, false, true, ); diff --git a/atuin/src/command/client/search.rs b/atuin/src/command/client/search.rs index 6a70ed62..f724ef7f 100644 --- a/atuin/src/command/client/search.rs +++ b/atuin/src/command/client/search.rs @@ -176,8 +176,6 @@ impl Cmd { eprintln!("{item}"); } } else { - let list_mode = ListMode::from_flags(self.human, self.cmd_only); - let opt_filter = OptFilters { exit: self.exit, exclude_exit: self.exclude_exit, @@ -218,10 +216,14 @@ impl Cmd { run_non_interactive(settings, opt_filter.clone(), &self.query, &db).await?; } } else { + let format = match self.format { + None => Some(settings.history_format.as_str()), + _ => self.format.as_deref(), + }; super::history::print_list( &entries, - list_mode, - self.format.as_deref(), + ListMode::from_flags(self.human, self.cmd_only), + format, false, true, ); |