自定义智能提示

在库文件中可以自定义智能提示,请参考 名字空间

在注释中定义智能提示


/*intellisense(名字空间.名字空间) a = 提示文字 b.c = 提示文字 b.? = 对任意字段名配置的代码提示 end intellisense*/


上面的智能提示是由一个或多个名值对组成的字符串列表,
以换行分隔多个名值对,并且以等号分隔名值对(等号前后必须有空格),等号前面的名字部分不能包含前后有空格的等号。
等号前面可以用圆点表示成员操作符或分隔名字空间,支持用问号匹配任意字段名称。

必须是每行一个名值对,等号后面为代码提示或模板,等号后面如果有换行请用 \n 替代。
如果值的第一个字符是'@'则表示定义一个自动完成的模板代码,如果"@"后面紧跟一个圆点,则表示模板自动连接在用户输入的名字空间最后一个圆点之后,例如:
!time.format = @.format="%Y年%m月%d日 %H时%M分%S秒";
名字部分中,可以使用小圆点表示aardio代码中的名字空间。
如果需要表示圆点的字面值,在名字空间的最后一部分,可以使用->替代.

例如:
!gdipgraphics.rotate(10, gdip->MatrixOrder->__ ) = 旋转画布 

这是gdip.graphics库中配置的提示, !gdipgraphics是动态创建的对象,括号后面是函数签名。
在弹出提示或完成代码时,上面的->都会显示为圆点".",在圆点后面用两个下划线"__"指定光标插入此位置,
在用户完成该代码以后,立即会跳出进一步的代码提示,非常方便.

在代码中定义智能提示

/*intellisense(名字空间.名字空间)*/
testa = 提示文字
testb = 提示文字 

testa.b.c = 可使用圆点表示名字空间 
/*end intellisense*/ 

在等号左侧,可使用 "->" 表示普通圆点字符.
对于不确定的成员名称可以使用 ? 符号替代,例如:

/*intellisense()*/
testa.?.c 
= 可使用问号表示任意名字 
/*end intellisense*/ 

那么输入 testa.任意名字. 都会提示上面的 c, 另在下标操作符中输入的任意成员名字都会匹配 ? 号指定的智能刊示,例如  testa["任意名字"].c 会显示上面的智能提示。

在智能提示中使用引用代码段

对于每一个智能提示定义的名值对,值部分的提示文字首字符不能是花括号'{',如果值部分第一行的行尾以'{换行'结束,那么其值可以跨行直到'换行}'为止。即首行以{结束,尾行以}开始。注意换行符与大括号中间不要有其他字符或空白字符。

/*intellisense(名字空间.名字空间)*/
a = 提示文字 {
             a=={}//如果大括号内侧不是换行符,不能表示提示段落的开始或结束。
} 

b = 提示文字 
/*end intellisense*/ 

名字空间重定向

/*intellisense()
testio = io.
end intellisense*/

在提示文字尾部加一个小圆点表示名字空间转向。
testio = io. 表示输入testio.时自动显示io.的成员

所以,如果不是确认要定义一个名字空间转向,
普通智能提示的说明文字结束尽可能避免使用圆点或句号等.

为动态创建的对象设置智能提示

/*intellisense()
!tray.delete() = 删除托盘图标
!tray.tip = 
设置鼠标提示信息
!tray.pop("__","") = 弹出汽泡提示\n参数(提示信息,标题)
!tray.pop("__","",2) = 
弹出汽泡提示\n参数(提示信息,标题,警告图标)
!tray.pop("__","",3) = 
弹出汽泡提示\n参数(提示信息,标题,错误图标)
!tray.message = 
指定回调消息\n当用户点击托盘图标时、向主窗体发送此消息
win.util.tray() = !tray. 
end 
intellisense*/

对于动态创建的对象,必须使用感叹号作为首字符避免名字冲突,


win.util.tray() = !tray.


或者
win.util.tray() = @这是模板代码\n!tray.

注意上面的括号中不能写参数,表示对于win.util.tray()返回的对象,将它们的代码提示全部重定向到!tray名字空间

上面的写法,可以在'!'前面,等号后面添加说明,但必须以\n换行符结束.如下:
win.util.tray() = 这是说明文字\n!tray.

注意名字空间重定向必须放在说明文字的尾部并且必须以 "\n!"开始,并以圆点"."结束,后面不能有空格,
也可以用这种方法来定义在for语句中迭代器函数返回的变量的智能提示。

web.layout() = !wblayout.
!wblayout.getValueObject() = 
!layout_value.object. 

这种写法的好处是可以对一个函数返回值动态创建的对象,例如!wblayout
再次定义它的成员函数返回的对象.

注意无论是智能提示配置,或编辑普通源码时,等号右侧使用括号可能被识别为函数调用.
所以在智能提示配置段中,应尽可能避免在说明文字中使用圆括号

函数调用连缀式 代码提示


/*intellisense() io.open() = !file. io.open().read(-1) = 读入全部内容 !file.xxx() = 代码提示\n!file. end intellisense*/

上面的写法可以支持识别该函数的返回值,以及直接在函数调用语句后列出成员的连缀式写法。
无论实际调用中使用了多少个参数,在这里不允许写参数.括号间不允许写空格.

如果代码提示以!开头,以.结束,则书写无参数调用函数语句时,不会显示提示(一般用于不支持无参数调用的函数)
如果代码提示形如

函数调用() =  代码提示\n!名字空间.

则在输入无参数调用语句时,会显示代码提示部分,并忽略后面的"!名字空间."

使用智能提示

1、您可用以下方式启动代码完成功能

自动:IDE会智能感知您输入的代码,并自动完成相关代码。
手动:你可以按CTRL+J组合热键调用智能提示并打开代码提示窗口。

2、智能提示引擎按以下规律分析代码