mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Fish
- Updated task.fish (thanks to Roman Inflianskas).
This commit is contained in:
parent
11c013d88c
commit
02b2b9b212
1 changed files with 90 additions and 90 deletions
|
@ -49,9 +49,14 @@ end
|
||||||
function __fish.task.partial
|
function __fish.task.partial
|
||||||
set wrapped $argv[1]
|
set wrapped $argv[1]
|
||||||
set what $argv[2]
|
set what $argv[2]
|
||||||
set -q argv[3]; and set argv $argv[3..-1]
|
set -q argv[3]; and set f_argv $argv[3..-1]
|
||||||
set f __fish.task.$wrapped.$what
|
set f __fish.task.$wrapped.$what
|
||||||
functions -q $f; and eval $f $argv
|
functions -q $f; and eval $f $f_argv
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish.task.zsh
|
||||||
|
set -q argv[2]; and set task_argv $argv[2..-1]
|
||||||
|
task _zsh$argv[1] $task_argv | sed 's/:/\t/'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,7 +68,7 @@ end
|
||||||
|
|
||||||
function __fish.task.current.command
|
function __fish.task.current.command
|
||||||
# find command in commandline by list intersection
|
# find command in commandline by list intersection
|
||||||
begin; commandline -pco; and __fish.task.list._command all | cut -d ':' -f 1; end | sort | uniq -d | xargs
|
begin; commandline -pco; and __fish.task.list._command all | cut -d ' ' -f 1; end | sort | uniq -d | xargs
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.before_command
|
function __fish.task.before_command
|
||||||
|
@ -78,7 +83,7 @@ function __fish.task.need_to_complete.attr_name
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.need_to_complete.attr_value
|
function __fish.task.need_to_complete.attr_value
|
||||||
__fish.task.need_to_complete.filter
|
__fish.task.need_to_complete.attr_name
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.need_to_complete.command
|
function __fish.task.need_to_complete.command
|
||||||
|
@ -98,6 +103,10 @@ function __fish.task.need_to_complete.id
|
||||||
__fish.task.need_to_complete.filter
|
__fish.task.need_to_complete.filter
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function __fish.task.need_to_complete.task
|
||||||
|
__fish.task.need_to_complete.filter
|
||||||
|
end
|
||||||
|
|
||||||
function __fish.task.need_to_complete
|
function __fish.task.need_to_complete
|
||||||
__fish.task.partial need_to_complete $argv
|
__fish.task.partial need_to_complete $argv
|
||||||
end
|
end
|
||||||
|
@ -105,13 +114,49 @@ end
|
||||||
|
|
||||||
# list printers
|
# list printers
|
||||||
|
|
||||||
|
function __fish.task.token_clean
|
||||||
|
sed 's/[^a-z_.]//g; s/^\.$//g'
|
||||||
|
end
|
||||||
|
|
||||||
function __fish.task.list.attr_name
|
function __fish.task.list.attr_name
|
||||||
task _columns | sed 's/$/:/g'
|
task _columns | sed 's/$/:\tattribute/g'
|
||||||
|
# BUG: doesn't support file completion
|
||||||
echo rc
|
echo rc
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function __fish.task.list.attr_value
|
||||||
|
set token (commandline -ct | cut -d ':' -f 1 | cut -d '.' -f 1 | __fish.task.token_clean)
|
||||||
|
if test -n $token
|
||||||
|
set attr_names (__fish.task.list.attr_name | sed 's/:\t/\t/g' | grep '^'$token | cut -d ' ' -f 1)
|
||||||
|
for attr_name in $attr_names
|
||||||
|
if test -n $attr_name
|
||||||
|
__fish.task.list.attr_value_by_name $attr_name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
__fish.task.list.tag
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish.task.list.attr_value_by_name
|
||||||
|
set attr $argv[1]
|
||||||
|
switch $attr
|
||||||
|
case 'rc'
|
||||||
|
__fish.task.list.rc
|
||||||
|
case 'depends' 'limit' 'priority' 'status'
|
||||||
|
__fish.task.combos_simple $attr (__fish.task.list $attr)
|
||||||
|
# case 'description' 'due' 'entry' 'end' 'start' 'project' 'recur' 'until' 'wait'
|
||||||
|
case '*'
|
||||||
|
# BUG: remove in 2.4.0
|
||||||
|
if echo (commandline -ct) | grep -q '\.'
|
||||||
|
__fish.task.combos_with_mods $attr (__fish.task.list $attr)
|
||||||
|
else
|
||||||
|
__fish.task.combos_simple $attr (__fish.task.list $attr)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function __fish.task.list._command
|
function __fish.task.list._command
|
||||||
task _zshcommands $argv
|
__fish.task.zsh commands $argv
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.command
|
function __fish.task.list.command
|
||||||
|
@ -120,45 +165,39 @@ function __fish.task.list.command
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.command_mods
|
function __fish.task.list.command_mods
|
||||||
# BUG: fill issue to have _zshcommand mods
|
|
||||||
for command in 'add' 'annotate' 'append' 'delete' 'done' 'duplicate' 'log' 'modify' 'prepend' 'start' 'stop'
|
for command in 'add' 'annotate' 'append' 'delete' 'done' 'duplicate' 'log' 'modify' 'prepend' 'start' 'stop'
|
||||||
echo $command
|
echo $command
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.depends
|
function __fish.task.list.depends
|
||||||
task _ids
|
__fish.task.list.id with_description
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.description
|
function __fish.task.list.description
|
||||||
task _zshids | cut -d ':' -f 2
|
__fish.task.zsh ids $argv | cut -d ' ' -f 2-
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.id
|
function __fish.task.list.id
|
||||||
task _zshids
|
set show_type $argv[1]
|
||||||
|
if test -z $show_type
|
||||||
|
task _ids
|
||||||
|
else if [ $show_type = 'with_description' ]
|
||||||
|
__fish.task.zsh ids
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.mod
|
|
||||||
# BUG: remove in 2.4.0
|
# BUG: remove in 2.4.0
|
||||||
echo before
|
function __fish.task.list.mod
|
||||||
echo after
|
for mod in 'before' 'after' 'over' 'under' 'none' 'is' 'isnt' 'has' 'hasnt' 'startswith' 'endswith' 'word' 'noword'
|
||||||
echo over
|
echo $mod
|
||||||
echo under
|
end
|
||||||
echo none
|
|
||||||
echo is
|
|
||||||
echo isnt
|
|
||||||
echo has
|
|
||||||
echo hasnt
|
|
||||||
echo startswith
|
|
||||||
echo endswith
|
|
||||||
echo word
|
|
||||||
echo noword
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.priority
|
function __fish.task.list.priority
|
||||||
echo H
|
for priority in 'H' 'M' 'L'
|
||||||
echo M
|
echo $priority
|
||||||
echo L
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.project
|
function __fish.task.list.project
|
||||||
|
@ -166,7 +205,6 @@ function __fish.task.list.project
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.rc
|
function __fish.task.list.rc
|
||||||
echo rc:
|
|
||||||
for value in (task _config)
|
for value in (task _config)
|
||||||
echo rc.$value:
|
echo rc.$value:
|
||||||
end
|
end
|
||||||
|
@ -187,13 +225,24 @@ function __fish.task.list.tag
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.task
|
function __fish.task.list.task
|
||||||
task _zshids | sed -E 's/^(.*):(.*)$/"\2":\1/g'
|
__fish.task.zsh ids | sed -E 's/^(.*)\t(.*)$/\2\ttask [id = \1]/g'
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list
|
function __fish.task.list
|
||||||
__fish.task.partial list $argv
|
__fish.task.partial list $argv
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function __fish.task.results_var_name
|
||||||
|
echo $argv | sed 's/^/__fish.task.list /g; s/$/ results/g; s/[ .]/_/g;'
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish.task.list_results
|
||||||
|
set var_name (__fish.task.results_var_name $name)
|
||||||
|
for line in $$var_name
|
||||||
|
echo $line
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
# working with attributes
|
# working with attributes
|
||||||
|
|
||||||
|
@ -205,80 +254,31 @@ function __fish.task.combos_simple
|
||||||
echo "$attr_name:$attr_value"
|
echo "$attr_name:$attr_value"
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
echo $attr_name:
|
echo "$attr_name:"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.combos_with_mods
|
|
||||||
# BUG: remove in 2.4.0
|
# BUG: remove in 2.4.0
|
||||||
|
function __fish.task.combos_with_mods
|
||||||
__fish.task.combos_simple $argv
|
__fish.task.combos_simple $argv
|
||||||
for mod in (__fish.task.list.mod)
|
for mod in (__fish.task.list.mod)
|
||||||
__fish.task.combos_simple $argv[1].$mod $argv[2..-1]
|
__fish.task.combos_simple $argv[1].$mod $argv[2..-1]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.list.attr_value
|
|
||||||
set attr $argv[1]
|
|
||||||
switch $attr
|
|
||||||
case 'depends' 'limit' 'priority' 'rc' 'status'
|
|
||||||
__fish.task.combos_simple $attr (__fish.task.list $attr)
|
|
||||||
# case 'description' 'due' 'entry' 'end' 'start' 'project' 'recur' 'until' 'wait'
|
|
||||||
case '*'
|
|
||||||
# BUG: remove in 2.4.0
|
|
||||||
if echo (commandline -ct) | grep -q '\.'
|
|
||||||
__fish.task.combos_with_mods $attr (__fish.task.list $attr)
|
|
||||||
else
|
|
||||||
__fish.task.combos_simple $attr (__fish.task.list $attr)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish.task.body
|
|
||||||
set token (commandline -ct)
|
|
||||||
|
|
||||||
if test -n $token
|
|
||||||
__fish.task.attr $token
|
|
||||||
end
|
|
||||||
|
|
||||||
__fish.task.list.tag
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
# actual completion
|
# actual completion
|
||||||
|
|
||||||
function __fish.task.complete
|
function __fish.task.complete
|
||||||
complete -c task -A -f $argv
|
set what $argv
|
||||||
|
set list_command "__fish.task.list $what"
|
||||||
|
set check_function "__fish.task.need_to_complete $what"
|
||||||
|
complete -c task -u -f -n $check_function -a "(eval $list_command)"
|
||||||
end
|
end
|
||||||
|
|
||||||
function __fish.task.complete.with_description_2
|
__fish.task.complete command all
|
||||||
# argv: list_command check_function
|
__fish.task.complete command filter
|
||||||
for arg_description in (eval $argv[1])
|
__fish.task.complete attr_value
|
||||||
set arg (echo $arg_description | cut -d ':' -f 1)
|
__fish.task.complete attr_name
|
||||||
set description (echo $arg_description | cut -d ':' -f 2)
|
__fish.task.complete task
|
||||||
__fish.task.complete -n $argv[2] -a $arg -d $description
|
__fish.task.complete id with_description
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish.task.complete.with_description
|
|
||||||
__fish.task.complete.with_description_2 "__fish.task.list $argv" "__fish.task.need_to_complete $argv"
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish.task.list.current_attr_value
|
|
||||||
set token (commandline -ct | cut -d ':' -f 1 | cut -d '.' -f 1 | sed 's/[^a-z_.]//g; s/^\.$//g')
|
|
||||||
if test -n $token
|
|
||||||
set attr_names (__fish.task.list.attr_name | grep '^'$token | cut -d ':' -f 1)
|
|
||||||
for attr_name in $attr_names
|
|
||||||
if test -n $attr_name
|
|
||||||
__fish.task.list.attr_value $attr_name
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
__fish.task.list.tag
|
|
||||||
end
|
|
||||||
|
|
||||||
__fish.task.complete.with_description command all
|
|
||||||
__fish.task.complete.with_description command filter
|
|
||||||
__fish.task.complete.with_description id
|
|
||||||
__fish.task.complete.with_description attr_name
|
|
||||||
__fish.task.complete -n '__fish.task.need_to_complete.attr_name' -a '(__fish.task.list.current_attr_value)'
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue