内部ツール用のいくつかの完成版を作成しようとしています。それが私たちが呼ぶものですthetool
。
多くのコマンドはthetool
「ファイル」を引数として使用しません。私アイデアそれは--no-files
そして/または--exclusive
私のためにそれをしますが、私はそれがうまくいくことができないようです。
つまり、次のコマンドがタブの完成にファイルを表示するように完成をどのように作成しますか?
$ thetool file-command *hit-tab*
次のコマンドは、タブの完了時にファイルを表示しません。
$ thetool non-file-command *hit-tab*
おもちゃの例を試してみましょう。
$ function thetool
echo $argv
end
$ complete --command thetool --no-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "file-command" --description "file-command"
$ complete --command thetool --no-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "non-file-command" --description "non-file-command"
$ complete --command thetool
complete --no-files thetool -d non-file-command -a non-file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
complete --no-files thetool -d file-command -a file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
それでは、以下を完了してみてください。
$ thetool *hit-tab*
file-command (file-command) non-file-command (non-file-command)
これまでは大丈夫に見えますが…
$ thetool non-file-command *hit-tab*
bin/ dev.yml Judgment.lock README.md TODO.md
completion_test.fish exe/ lib/ shipit.production.yml vendor/
completion_test.zsh Gemfile linters/ sorbet/ zsh_completions.sh
coverage/ Gemfile.lock Rakefile test/
望むより!これらの文書はそこで何を提案しますか?
もう一度やりましょう:
$ complete --command thetool --force-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "file-command" --erase
$ complete --command thetool --force-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "file-command"
$ complete --command thetool --no-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "non-file-command"
$ complete --command thetool
complete --no-files thetool -a non-file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
complete --force-files thetool -a file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
$ thetool *hit-tab*
bin/ dev.yml Gemfile.lock non-file-command sorbet/ zsh_completions.sh
completion_test.fish exe/ Judgment.lock Rakefile test/
completion_test.zsh file-command lib/ README.md TODO.md
coverage/ Gemfile linters/ shipit.production.yml vendor/
arrg現在の状況と私が間違っていることを理解するのに役立つ人がいますか?
答え1
魚がそれを見るならnon-file-command
。
それらを見てみましょう:
complete --command thetool --no-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "file-command" --description "file-command"
魚持つnon-file-command
条件が偽であることがわかります。
complete --command thetool --no-files --condition "not __fish_seen_subcommand_from file-command non-file-command" --arguments "non-file-command" --description "non-file-command"
魚持つnon-file-command
条件が偽であることがわかります。
complete --command thetool
これはうまくいきません。
complete --no-files thetool -d non-file-command -a non-file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
魚持つnon-file-command
条件が偽であることがわかります。
complete --no-files thetool -d file-command -a file-command -n 'not __fish_seen_subcommand_from file-command non-file-command'
魚持つnon-file-command
条件が偽であることがわかります。
ファイルの無効化条件は維持されないため、デフォルトで有効にします。指定した場合、non-file-command
ファイルを無効にするように求められません。
次へ追加
complete --command thetool --no-files --condition " __fish_seen_subcommand_from non-file-command"
動作します。
それとも物事が多い場合いいえ追加できるファイルといくつかのファイルをインポートする
complete --command thetool --no-files
これによりファイルが無効になります。いつも(無条件なので完了する限り常に正確ですthetool
。) その後、条件付きの場合は強制的に保管してください。
complete --command thetool --condition "__fish_seen_subcommand_from file-command" --force-files