shell/zsh: add basic integration with fzf #30
2 changed files with 39 additions and 7 deletions
32
shell/zsh
Normal file
32
shell/zsh
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
function __tas_task_idx() {
|
||||||
|
echo "$@" | sed 's/^\([0-9]\+\)\..\+$/\1/'
|
||||||
|
}
|
||||||
|
|
||||||
|
function __tas_show() {
|
||||||
|
tas show $(__tas_task_idx "$@")
|
||||||
|
}
|
||||||
|
|
||||||
|
function __tas_start() {
|
||||||
|
tas start $(__tas_task_idx "$@")
|
||||||
|
}
|
||||||
|
|
||||||
|
function __tas_list() {
|
||||||
|
tas list | fzf --info=inline --height=50% --no-sort --keep-right --layout=reverse
|
||||||
|
}
|
||||||
|
|
||||||
|
function taz() {
|
||||||
|
case $1 in
|
||||||
|
"" | "show" | "sh")
|
||||||
|
__tas_show $(__tas_list)
|
||||||
|
;;
|
||||||
|
|
||||||
|
"list" | "ls")
|
||||||
|
__tas_list
|
||||||
|
;;
|
||||||
|
|
||||||
|
"start" | "st")
|
||||||
|
__tas_start $(__tas_list)
|
||||||
|
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
|
@ -58,10 +58,10 @@ pub fn execute(repo: impl Repository, args: Args) {
|
||||||
Err(idx_err) => match first.parse::<PrintPart>() {
|
Err(idx_err) => match first.parse::<PrintPart>() {
|
||||||
Ok(part) => (None, Some(part)),
|
Ok(part) => (None, Some(part)),
|
||||||
Err(part_err) => {
|
Err(part_err) => {
|
||||||
return eprint!(
|
eprintln!("error: Invalid value {first:?}:");
|
||||||
r#"error: Invalid value "{}": {}; {}"#,
|
eprintln!("- {idx_err}");
|
||||||
first, idx_err, part_err
|
eprintln!("- {part_err}");
|
||||||
)
|
return;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -73,16 +73,16 @@ pub fn execute(repo: impl Repository, args: Args) {
|
||||||
|
|
||||||
let idx = match first.parse::<usize>() {
|
let idx = match first.parse::<usize>() {
|
||||||
Ok(idx) => Some(idx),
|
Ok(idx) => Some(idx),
|
||||||
Err(err) => return eprint!(r#"error: Invalid value "{}": {}"#, first, err),
|
Err(err) => return eprintln!("error: Invalid value {first:?}: {err}"),
|
||||||
};
|
};
|
||||||
let part = match second.parse::<PrintPart>() {
|
let part = match second.parse::<PrintPart>() {
|
||||||
Ok(part) => Some(part),
|
Ok(part) => Some(part),
|
||||||
Err(err) => return eprint!(r#"error: Invalid value "{}": {}"#, second, err),
|
Err(err) => return eprintln!("error: Invalid value {second:?}: {err}"),
|
||||||
};
|
};
|
||||||
|
|
||||||
(idx, part)
|
(idx, part)
|
||||||
}
|
}
|
||||||
_ => return eprintln!("error: To much arguments: {}", args.rest.join(",")),
|
_ => return eprintln!("error: To much arguments: {:?}", args.rest),
|
||||||
};
|
};
|
||||||
|
|
||||||
let task = if let Some(idx) = idx {
|
let task = if let Some(idx) = idx {
|
||||||
|
|
Loading…
Reference in a new issue