跳至内容

关于 hooks.ps1

  • 每个补全都有一个 hooks.ps1 文件,用于动态添加补全项
  • 它需要提供一个 handleCompletions 函数
  • 该函数会接收一个参数 $completions,它是一个数组,包含从 json 中解析的所有补全项
  • 该函数需要返回一个新的数组,它将作为最终的补全数据被 PSCompletions 使用

  • 如果 config.json 中没有定义 hooks,它永远不会调用
  • 只有 config.json 中定义了 hooks ,且符合以下条件才会调用它
    • hooks 的值为 true,且没有通过 psc completion xxx enable_hooks 0 禁用它
    • hooks 的值为 false,但通过 psc completion xxx enable_hooks 1 启用了它
powershell
function handleCompletions($completions) {
    $list = @()

    # $input_arr = $PSCompletions.input_arr
    $filter_input_arr = $PSCompletions.filter_input_arr # Without -*

    # switch ($filter_input_arr[-1]) {
    #     'add' {
    #         $list += $PSCompletions.return_completion('aaa', "Add aaa")
    #     }
    # }

    $list += $PSCompletions.return_completion('example', "It's from hooks")

    return $list + $completions
}

TIP

函数中使用 $PSCompletions.return_completion 来添加新的补全项

  • 第一个参数是补全项的名称
  • 第二个参数是补全项的帮助信息(tip)
  • 第三个参数是可选的,用于指定补全项的特殊符号
    • SpaceTab: ~
    • OptionTab: ?
    • WriteSpaceTab: !