mirror of
https://github.com/denisidoro/navi
synced 2024-11-22 03:23:05 +00:00
Add elvish widget
This commit is contained in:
parent
86b5befa02
commit
715d3d59e4
6 changed files with 39 additions and 1 deletions
|
@ -85,6 +85,9 @@ eval "$(navi widget zsh)"
|
||||||
|
|
||||||
# fish
|
# fish
|
||||||
navi widget fish | source
|
navi widget fish | source
|
||||||
|
|
||||||
|
# elvish
|
||||||
|
eval (navi widget elvish | slurp)
|
||||||
```
|
```
|
||||||
|
|
||||||
By default, `Ctrl+G` is assigned to launching **navi**.
|
By default, `Ctrl+G` is assigned to launching **navi**.
|
||||||
|
|
31
shell/navi.plugin.elv
Normal file
31
shell/navi.plugin.elv
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
use str
|
||||||
|
|
||||||
|
fn call-navi []{
|
||||||
|
if (eq $edit:current-command '') {
|
||||||
|
answer = (navi --print)
|
||||||
|
edit:replace-input $answer
|
||||||
|
} elif (not (str:contains-any $edit:current-command '|')) {
|
||||||
|
answer = (navi --print --query $edit:current-command)
|
||||||
|
if (not-eq $answer '') {
|
||||||
|
edit:replace-input $answer
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cmds = [(str:split '|' $edit:current-command)]
|
||||||
|
qty = (- (count $cmds) 1)
|
||||||
|
query = (all $cmds | drop $qty)
|
||||||
|
cmds = [(all $cmds | take $qty)]
|
||||||
|
answer = ''
|
||||||
|
if (eq $query '') {
|
||||||
|
answer = (navi --print)
|
||||||
|
} else {
|
||||||
|
answer = (navi --print --query $query)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (not-eq $answer '') {
|
||||||
|
cmds = [$@cmds $answer]
|
||||||
|
edit:replace-input (str:join '| ' $cmds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
edit:insert:binding[Alt-h] = []{ call-navi >/dev/tty 2>&1 }
|
|
@ -9,7 +9,7 @@ use clap::{crate_version, AppSettings, Clap};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
const FINDER_POSSIBLE_VALUES: &[&str] = &["fzf", "skim"];
|
const FINDER_POSSIBLE_VALUES: &[&str] = &["fzf", "skim"];
|
||||||
const WIDGET_POSSIBLE_VALUES: &[&str] = &["bash", "zsh", "fish"];
|
const WIDGET_POSSIBLE_VALUES: &[&str] = &["bash", "zsh", "fish", "elvish"];
|
||||||
const FUNC_POSSIBLE_VALUES: &[&str] = &["url::open", "welcome", "widget::last_command", "map::expand"];
|
const FUNC_POSSIBLE_VALUES: &[&str] = &["url::open", "welcome", "widget::last_command", "map::expand"];
|
||||||
const INFO_POSSIBLE_VALUES: &[&str] = &["cheats-example", "cheats-path", "config-path", "config-example"];
|
const INFO_POSSIBLE_VALUES: &[&str] = &["cheats-example", "cheats-path", "config-path", "config-example"];
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ impl FromStr for Shell {
|
||||||
"bash" => Ok(Shell::Bash),
|
"bash" => Ok(Shell::Bash),
|
||||||
"zsh" => Ok(Shell::Zsh),
|
"zsh" => Ok(Shell::Zsh),
|
||||||
"fish" => Ok(Shell::Fish),
|
"fish" => Ok(Shell::Fish),
|
||||||
|
"elvish" => Ok(Shell::Elvish),
|
||||||
_ => Err("no match"),
|
_ => Err("no match"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ pub fn main(shell: &Shell) -> Result<()> {
|
||||||
Shell::Bash => include_str!("../../shell/navi.plugin.bash"),
|
Shell::Bash => include_str!("../../shell/navi.plugin.bash"),
|
||||||
Shell::Zsh => include_str!("../../shell/navi.plugin.zsh"),
|
Shell::Zsh => include_str!("../../shell/navi.plugin.zsh"),
|
||||||
Shell::Fish => include_str!("../../shell/navi.plugin.fish"),
|
Shell::Fish => include_str!("../../shell/navi.plugin.fish"),
|
||||||
|
Shell::Elvish => include_str!("../../shell/navi.plugin.elv"),
|
||||||
};
|
};
|
||||||
|
|
||||||
println!("{}", content);
|
println!("{}", content);
|
||||||
|
|
|
@ -12,6 +12,7 @@ pub enum Shell {
|
||||||
Bash,
|
Bash,
|
||||||
Zsh,
|
Zsh,
|
||||||
Fish,
|
Fish,
|
||||||
|
Elvish,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Error, Debug)]
|
#[derive(Error, Debug)]
|
||||||
|
|
|
@ -158,6 +158,7 @@ test::set_suite "widget"
|
||||||
test::run "bash" _navi_widget "bash"
|
test::run "bash" _navi_widget "bash"
|
||||||
test::run "zsh" _navi_widget "zsh"
|
test::run "zsh" _navi_widget "zsh"
|
||||||
test::run "zsh" _navi_widget "fish"
|
test::run "zsh" _navi_widget "fish"
|
||||||
|
test::run "elvish" _navi_widget "elvish"
|
||||||
|
|
||||||
test::set_suite "3rd party"
|
test::set_suite "3rd party"
|
||||||
test::run "tldr" _navi_tldr
|
test::run "tldr" _navi_tldr
|
||||||
|
|
Loading…
Reference in a new issue