Add config option to support tealdeer

This commit is contained in:
Dylan Premo 2024-01-18 15:28:12 -08:00
parent 80e30b508b
commit c3d75383f8
No known key found for this signature in database
4 changed files with 32 additions and 6 deletions

View file

@ -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

View file

@ -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<String> {
}
pub fn call(query: &str) -> Result<Vec<String>> {
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(" "),

View file

@ -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()
}

View file

@ -78,6 +78,12 @@ pub struct Shell {
pub finder_command: Option<String>,
}
#[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,
}
}
}