tcl 函数参数自动补全和 help 信息显示

在EDA tool 中使用命令时,命令的参数可以通过 tab 键自动补全,而且可以使用 -help 显示帮助信息,使用起来很方便;

那么我们自己编写的 TCL 过程函数能否也实现 参数自动补全和 help 显示帮助信息呢?

参数自动补全可以用 define_proc_attribute 实现,而 -help 显示帮助可以用 parse_proc_arguments 实现

举个栗子:

proc  test_proc {args} {       ## 关键字 args 表示可变个数的参数
parse_proc_arguments -args $args results ## 将参数保存到数组中,数组名为 results,数组元素名字是参数名,元素值是参数值 if { [array names results {-add}] != ""} { ## 匹配数组results 中符合正则表达式“{-add}”的元素名字,用于检测是否给出了 -add 参数
echo "add num $results(-add) !" ## $results{-add} 是数组元素值,即 -add 参数的值
} if { [array names results {-reomve}] != "" } {
echo "remove all !"
} } define_proc_attributes test_proc \ ## 这段程式定义 help 信息和参数自动补全
-info "proc test code example " \
-define_args { ## 定义参数名字,输入时可以自动补全
{-add "add more " "num" int optional } ## 参数名字-add,帮助信息 add more ,参数值 num ,参数值数据类型 int ,参数是否是必须的 optional
{-remove "reomve all " "" boolean optional }
}

这样定义之后,在EDA tool 中 敲命令 test_proc -rem[tab]  可以用 tab 键自动补全,用 test_proc -help 可以显示帮助信息

注意几点:

参数列表中的 args 是一个关键字,表示可变个数的参数

如果没有写 parse_proc_arguments ,则无法显示 -help 信息

array names  results  {-add} ,其中 results 是数组名, {-add} 是正则表达式,返回array 中 符合这个表达式的元素的名字

$results(-add) 返回数组元素值

TCL函数“参数自动补全” 与 “help 信息显示”的更多相关文章

  1. 给 zsh 自定义命令添加参数自动补全

    有时我会自定义一些 zsh 命令,以便提升某些高频操作的效率.本文记录我给一个自定义命令添加参数自动补全的方法. 场景 我自定义了一个 zsh 命令 gmt,执行 gmt <b2>,可以将 ...

  2. [ovs] openvswitch ovs ovs-vsctl ovs-appctl 命令行参数自动补全 bash bash-completion

    1, 安装bash_completion: [root@vrouter1 ~]# yum install bash-completio 2,  找到你的ovs的补全脚本装在了哪里 [root@vrou ...

  3. pycharm中调用函数方法自动补全p,m,c,v,f分别是什么意思

    p:parameter 参数m:method 方法c:class 类v:variable 变量f:function 函数

  4. python代码自动补全

    牛逼了!Python代码补全利器,提高效率告别996! Python之禅 Python之禅 微信号 VTtalk 功能介绍 人生苦短,我用Python,这里是一名老程序员分享Python技术的地方,欢 ...

  5. Python3设置在shell脚本中自动补全功能的方法

    本篇博客将会简短的介绍,如何在ubuntu中设置python自动补全功能. 需求:由于python中的内建函数较多,我们在百纳乘时,可能记不清函数的名字,同时自动补全功能,加快了我们开发的效率. 方法 ...

  6. ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数

    一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数. 若用的是fish s ...

  7. Visual Studio Code 中实现 C++ 函数定义跳转和代码自动补全功能(25)

    方法1: 1.1 安装插件 C++ Intellisense 名称: C++ Intellisense id: austin.code-gnu-global 说明: C/C++ Intellisens ...

  8. 使用Bootstrap typeahead插件实现搜索框自动补全的配置参数。

    示例代码: <input type="text" id="addr"/> <input type="text" hidde ...

  9. Vim自动补全神器–YouCompleteMe

    YouCompleteMe的特别之处 基于语义补全 总所周知,Vim是一款文本编辑器.也就是说,其最基础的工作就是编辑文本,而不管该文本的内容是什么.在Vim被程序员所使用后,其慢慢的被肩负了与IDE ...

随机推荐

  1. 后台管理UI+功能

    kingRoad功能强大,丰富各种功能和插件,自定义开发功能组件及样式,使用webpack方式集成和纯html两种,UI(自定义开发和AdminLTE的集成优化),弹窗功能使用(Layer弹窗,并与框 ...

  2. BZOJ4977: [[Lydsy1708月赛]跳伞求生

    传送门 直接贪心 考虑到 \(n\) 个人的贡献都是 \(a_i\),另外 \(m\) 个人的贡献都是 \(c_i-b_i\) 首先 \(a_i>b_j\) 的限制不好做,所以将 \(a,b\) ...

  3. python学习笔记之——文件I/O

    1.print打印到屏幕 print "打印到屏幕" 2.读取读取键盘输入 (1)raw_input函数 raw_input([prompt]) 函数从标准输入读取一个行,并返回一 ...

  4. 一起来学习android自定义控件—边缘凹凸的View

    1前言 最近做项目的时候遇到一个卡劵的效果,由于自己觉得用图片来做的话可以会出现适配效果不好,再加上自己自定义view方面的知识比较薄弱,所以想试试用自定义View来实现.但是由于自己知识点薄弱,一开 ...

  5. Android如何使用WebView访问https的网站

    Android中可以用WebView来访问http和https的网站,但是默认访问https网站时,假如证书不被Android承认,会出现空白页面,且不会有任何提示信息,这时我们必须加多一些配置. 此 ...

  6. linux上设置mysql编码

    linux下设置mysql编码 linux下设置mysql编码 首先查找MySql的cnf文件的位置: [root@flyHome gaoxiang]# find / -iname '*.cnf' - ...

  7. C#对DataTable里数据排序的方法

    protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Ad ...

  8. [翻译] popping

    https://github.com/schneiderandre/popping Popping is a collection of animation examples for iOS apps ...

  9. [翻译] GiFHUD

    GiFHUD progress hud for displaying only animated gif images. no labels (for now) 状态指示器,仅仅用来显示gif图片,不 ...

  10. Linux which/whereis/locate命令详解

    which 查看可执行文件的位置,从全局环境变量PATH里面查找对应的路径,默认是找 bash内所规范的目录 whereis 查看文件的位置,配合参数-b,用于程序名的搜索,从linux数据库查找. ...