From c3d75383f89a568b0ee0dc6f807f18f1c8bb9311 Mon Sep 17 00:00:00 2001 From: Dylan Premo Date: Thu, 18 Jan 2024 15:28:12 -0800 Subject: Add config option to support tealdeer --- docs/config_file_example.yaml | 7 +++++-- src/clients/tldr.rs | 12 ++++++++---- src/config/mod.rs | 4 ++++ src/config/yaml.rs | 15 +++++++++++++++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/docs/config_file_example.yaml b/docs/config_file_example.yaml index 1eb7ab7..8fa2f0c 100644 --- a/docs/config_file_example.yaml +++ b/docs/config_file_example.yaml @@ -25,11 +25,14 @@ finder: # path: /path/to/some/dir # (DEPRECATED) equivalent to the --path option # search: -# tags: git,!checkout # equivalent to the --tag-rules option +# tags: git,!checkout # equivalent to the --tag-rules option + +# client: +# tealdeer: true # enables tealdeer support for navi --tldr shell: # Shell used for shell out. Possible values: bash, zsh, dash, ... # For Windows, use `cmd.exe` instead. command: bash - + # finder_command: bash # similar, but for fzf's internals diff --git a/src/clients/tldr.rs b/src/clients/tldr.rs index cd040e4..01cec89 100644 --- a/src/clients/tldr.rs +++ b/src/clients/tldr.rs @@ -1,4 +1,5 @@ use crate::prelude::*; +use crate::config::CONFIG; use std::process::{Command, Stdio}; lazy_static! { @@ -51,7 +52,9 @@ fn markdown_lines(query: &str, markdown: &str) -> Vec { } pub fn call(query: &str) -> Result> { - let args = [query, "--markdown"]; + let tealdeer = CONFIG.tealdeer(); + let output_flag = if tealdeer { "--raw" } else { "--markdown" }; + let args = [query, output_flag]; let child = Command::new("tldr") .args(args) @@ -86,9 +89,9 @@ Note: Ok(lines) } else { let msg = format!( - "Failed to call: + "Failed to call: tldr {} - + Output: {} @@ -96,8 +99,9 @@ Error: {} Note: +The client.tealdeer config option can be set to enable tealdeer support. Please make sure you're using a version that supports the --markdown flag. -If you are already using a supported version you can ignore this message. +If you are already using a supported version you can ignore this message. {} ", args.join(" "), diff --git a/src/config/mod.rs b/src/config/mod.rs index b652608..a5b89c1 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -99,6 +99,10 @@ impl Config { .or_else(|| self.yaml.finder.overrides_var.clone()) } + pub fn tealdeer(&self) -> bool { + self.yaml.client.tealdeer.clone() + } + pub fn shell(&self) -> String { self.yaml.shell.command.clone() } diff --git a/src/config/yaml.rs b/src/config/yaml.rs index 70a5a17..e0c7e87 100644 --- a/src/config/yaml.rs +++ b/src/config/yaml.rs @@ -78,6 +78,12 @@ pub struct Shell { pub finder_command: Option, } +#[derive(Deserialize, Debug)] +#[serde(default)] +pub struct Client { + pub tealdeer: bool, +} + #[derive(Deserialize, Default, Debug)] #[serde(default)] pub struct YamlConfig { @@ -86,6 +92,7 @@ pub struct YamlConfig { pub cheats: Cheats, pub search: Search, pub shell: Shell, + pub client: Client, } impl YamlConfig { @@ -162,3 +169,11 @@ impl Default for Shell { } } } + +impl Default for Client { + fn default() -> Self { + Self { + tealdeer: false, + } + } +} -- cgit v1.2.3