1
0

completions.fish 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. set -l base_dir "$HOME/nix-dots/data"
  2. complete -c fme -f
  3. set -l no_mode_set "not __fish_contains_opt -s f flake -s l license"
  4. complete -c fme -n "$no_mode_set" -s f -l flake -d "Target dev flakes (flake)"
  5. complete -c fme -n "$no_mode_set" -s l -l license -d "Target licenses (license)"
  6. complete -c fme -l list -d "List available items for selected mode"
  7. set -l get_mode_dir "
  8. set -l cmd (commandline -opc)
  9. if contains -- -l \$cmd; or contains -- --license \$cmd
  10. echo $base_dir/license
  11. else if contains -- -f \$cmd; or contains -- --flake \$cmd
  12. echo $base_dir/flake
  13. end
  14. "
  15. set -l get_ext "
  16. set -l cmd (commandline -opc)
  17. if contains -- -l \$cmd; or contains -- --license \$cmd
  18. echo txt
  19. else if contains -- -f \$cmd; or contains -- --flake \$cmd
  20. echo nix
  21. end
  22. "
  23. complete -c fme -n '__fish_is_nth_token 1' -a "(
  24. set -l dir ($get_mode_dir)
  25. if test -n \"\$dir\" -a -d \"\$dir\"
  26. for d in \$dir/*/
  27. basename \$d
  28. end
  29. end
  30. )" -d "Category"
  31. complete -c fme -n '__fish_is_nth_token 2' -a "(
  32. set -l cmd (commandline -opc)
  33. set -l dir ($get_mode_dir)
  34. set -l ext ($get_ext)
  35. set -l cat \$cmd[-1]
  36. if test -n \"\$cat\" -a -n \"\$dir\" -a -d \"\$dir/\$cat\"
  37. for file in \$dir/\$cat/*.\$ext
  38. if test -f \$file
  39. basename \$file .\$ext
  40. end
  41. end
  42. end
  43. )" -d "Template"