Fig自定义补全规范
·
2 min read
fig最有价值的就是补全规范定义,这里mark下如何自定义规范及投入生产使用
fig规范例子
- cd命令:https://github.com/withfig/autocomplete/blob/master/src/cd.ts
- echo命令:https://github.com/withfig/autocomplete/blob/master/src/echo.ts
- git命令:https://github.com/withfig/autocomplete/blob/master/src/git.ts#L4024
Spec定义戳这里
官方Fig补全仓库方式贡献
官方仓库提交将作为公共补全。具体使用官方readme已经说明很清晰。
这里简单赘述下。
# fork https://github.com/withfig/autocomplete
# Replace `YOUR_GITHUB_USERNAME` with your own GitHub username
git clone https://github.com/YOUR_GITHUB_USERNAME/autocomplete.git fig-autocomplete
cd fig-autocomplete
# Add withfig/autocomplete as a remote
git remote add upstream https://github.com/withfig/autocomplete.git
# Install packages
pnpm install
# Create an example spec (call it "abc")
pnpm create-spec abc
# Turn on "dev mode",本地fig会加载该目录下规范
pnpm dev
总结就是fork repo后按照要求生成补全规范=>测试=>提PR。
不走官方repo方式
不走官方repo方式即私有规范。
这里描述下方法,步骤如下。
# 创建规范
npx @withfig/autocomplete-tools create-spec
# 生成补全文件,测试,同时CodeWhisperer中自定义规范文件夹会被写入该规范路径
npx @withfig/autocomplete-tools dev
当执行上述dev时已经进行TS编译和注册到index.js,只是因为是单独的repo,因此index.js中只注册了自定义创建的单个规范。实际使用的话,可以在确定规范可用后,放在官方的规范文件夹下一块走下打包。
const completionSpec: Fig.Spec = {
name: "ak",
summary: "",
subcommands: [{
name: "say",
summary: "Example subcommand",
subcommands: [{
name: "haha",
summary: "Nested subcommand, example usage: 'abc my_subcommand my_nested_subcommand'"
}],
}],
options: [{
name: ["--help", "-h"],
summary: "Show help for abc",
}],
// Only uncomment if abc takes an argument
// args: {}
};
export default completionSpec;
index.js中注册方式如下
var e=["ak"],diffVersionedCompletions=[];export{e as default,diffVersionedCompletions};
开发模式开关
CodeWhisperer下直接GUI操作即可。
Fig App可以走如下命令开关
fig settings autocomplete.developerModeNPM false