NONMEM控制文件编写辅助插件
付永超 / 2021-02-18
最近我自己写了一个NONMEM的控制文件编写的辅助插件“nonmem_cn”,这个插件是基于VSCode实现的,可以在VSCode的应用扩展插件市场中,搜索nonmem轻松下载到:
初衷:
1.最近在学习Pirana,并且脑海中在构思另一个作品——PML的代码编写辅助工具,因为NONMEM的语法与内容较为简单所以拉出来练手,训练下自己。
2.在查看和编辑NONMEM配置文件的时候确实感到一系列的不便,比如不能折叠代码,代码的高亮很奇怪,没有中文的提示,等等,进行了大量的搜索后,发现市面上有一些NONMEM语法高亮的工具,比如Pirana的内置编辑器、VSCode中已有的一个插件、Notepad++中他人贡献的自定义语法高亮配置等等,这些功能都十分孱弱与简陋,都不趁手。既然没有,那就自己写一个吧!
如此就诞生了现在的作品。
基本信息:
扩展插件名称:nonmem_cn
发布日期:2021年2月18日
支持的后缀名:.ctl .mod .clt .lst
核心功能:代码块折叠、语法高亮、自动补全
GitHub仓库地址:https://github.com/s0521/nonmem_cn
nonmem_cn包介绍页面:https://s0521.github.io/nonmem_cn/about/
扩展插件的宿主:Visual Studio Code https://code.visualstudio.com/
主要实现功能:
-
代码块折叠
此项功能是目前市面上所有其他NONMEM控制文件编写辅助工具中都没有的功能,目前是我开发的“nonmem_cn”扩展插件所独有的~!
-
自动补全
代码自动补全功能,此功能实现不能,但想实现的足够好很难,无论是代码层面还是对关键字的注释能力层面,我实现了一些基础的代码补全功能,给与了中英文双语直观简洁的非官方的注释,看起来格外清晰。
另外,当前的代码补全功能中包含的中文注释信息也是目前“nonmem_cn”扩展插件所独有的~!
-
语法高亮
语法高亮没啥说的,如果硬要说亮点,就是一下这些:
当前的亮点是我特别突出的等号、运算法、数字这三者,
高亮的颜色会随者你使用的VSCode主题不同而发生变化。
读者你可以做的贡献
当前的自动补全的注释信息和补全的内容其实还不够多,只有105个关键词,所以如果想变得更好还需要额外的在补充与添加。
我已经将补充额外新的内容的工作做了极大的简化,在该插件所对应的github仓库https://github.com/s0521/nonmem_cn中,其主页下可以看到两个csv文件(“Highlight.csv”、“snippets.csv”),和一个excel文件(“语法高亮.xlsx”)。
两个CSV文件来自于Excel另存为获得。
读者你可下载其中的某个CSV文件,来通过增加行的方式仿照已有的行来增加内容,进而丰富语法高亮规则,或者代码补全关键词。
Hightlight.csv
该表格是语法高亮规则,内容如下图:
该表格中,第一行是列名,其余行是具体的规则,唯一重要的部分是C列和F列,其余列是用来辅助说明的,便于读者的你理解用,
所以如果你有能力可以在新增的行中完成所有列的及内容撰写,
如果能力不强,也可以完成B列和E列的内容,然后我有空时额外进行补全。
snippets.csv
该表格是代码补全的候选关键字列表,内容如下图:
该表格中,第1行至第6行都是对列的介绍性文字,便于读者理解列的用于与含义,从第7行开始到最后是具体的候选词及注释列表。
从列来看,第1列没有用主要是添加了对第一行至第六行内容的说明,第2列也没啥用仅仅用来表示下序号,
C列:自动补全时匹配的内容;
D列:选择候选列表中某一项后,实际在代码中写入的内容;
E列:候选列表中右侧的那些提示性文字,这些文字必须相对其他行的内容来说独一无二,位置如下图所示;
F列:英文注释,选填,注释内容是出现在选则候选列表中的某一项时,额外出现在右侧或下侧等位置的一个方框中的上半部分区域的内容,我将英文注释与中问注释通过分号“;”和在一起同时显示;
E列:中文注释,选填,注释内容是出现在选则候选列表中的某一项时,额外出现在右侧或下侧等位置的一个方框中的上半部分区域的内容,我将英文注释与中问注释通过分号“;”和在一起同时显示。
该表格是代码补全的核心内容,也是最需要耗费时间、精力、知识来添加的地方。
所以如果你愿意,可以贡献下你的知识帮助我来进一步丰富“nonmem_cn”的功能,未来我也会考虑将此列表的内容加入到悬停提示中去。
结语
好了,就到这里告一段落吧!
愿此插件能够帮助到你,帮助到NONMEM社区中的更多的人。