当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang expand(Bef0)用法及代码示例


expand(Bef0) -> {Res, Completion, Matches}
OTP 26.0
expand(Bef0, Opts) -> {Res, Completion, Matches}
OTP 26.0
类型:
Bef0 = string()
Opts = [Option]
Option = {legacy_output, boolean()}
Res = yes | no
Completion = string()
Matches = [Element] | [Section]
Element = {string(), [ElementOption]}
ElementOption = {ending, string()}
Section = 
    #{title := string(),
      elems := Matches,
      options := SectionOption}
SectionOption = 
    {highlight_all} |
    {highlight, string()} |
    {highlight_param, integer()} |
    {hide, title} |
    {hide, result} |
    {separator, string()}

标准扩展函数能够将字符串扩展为有效的 erlang 术语。这包括模块名称:

1> erla
modules
erlang:

函数名称:

1> is_ato
functions
is_atom(
2> erlang:is_ato
functions
is_atom(

函数类型:

1> erlang:is_atom(
typespecs
erlang:is_atom(Term)
any()

并在无法进行其他有效扩展时自动添加 , 或右括号。扩展函数还完成:shell 绑定、记录名称、记录字段和映射键。

如下所示,如果函数头有相同的扩展建议,则它们会被分组在一起,在这种情况下,所有函数头都有相同的建议,即'}'。对于过滤掉与提示中术语的类型不匹配的函数类型规范也有有限的支持。下面只显示了 4 个建议,但 erlang:system_info 还存在更多类型规范。

1> erlang:system_info({allocator, my_allocator
typespecs
erlang:system_info(wordsize | {wordsize, ...} | {wordsize, ...})
erlang:system_info({allocator, ...})
erlang:system_info({allocator_sizes, ...})
erlang:system_info({cpu_topology, ...})
}

expand 函数的返回类型指定 Element 元组列表或 Section 映射列表。引入部分概念是为了为扩展结果提供更多格式选项。例如,shell 扩展支持突出显示文本和隐藏建议。还有一个 {highlight, Text} 突出显示标题中所有出现的 Text ,还有一个 highlight_all 为简单起见突出显示整个标题,如上面的 functionstypespecs 所示。

通过设置 {hide, result}{hide, title} 选项,您可以隐藏建议。有时标题没有用,只会产生文本噪音,在上面的示例中, any() 结果是标题为 Types 的部分的一部分。目前未使用隐藏结果,但其想法是可以在展开区域中选择一个部分,并且应折叠所有其他部分条目。

可以在标题和结果之间设置自定义分隔符。这可以通过 {separator, Separator} 来完成。默认情况下,其设置为 \n ,某些结果显示 type_name() :: ,后跟定义 type_name() 的所有类型。

{ending, Text} ElementOption 只是将 Text 附加到 Element

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 expand(Bef0) -> {Res, Completion, Matches}。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。