0

我正在开发一个自定义 GNAT GPS 插件(用于 GPS 6.1.2)。

我的插件 XML 创建了一个项目属性“example_list_of_files”。这是一个字符串列表,对应于项目中 Ada 文件的名称。我想将该列表中的条目默认为“a.adb”、“b.adb”、“c.adb”。但是我一直无法找到正确的语法。相反,我最终得到一个包含所有值的字符串。

我想要的列表出现在一行而不是三行

我想看到的是当你手动添加三个元素时会发生什么,如下所示:

在此处输入图像描述

这是此示例的代码:

GPS.parse_xml('<?xml version="1.0" ?>' + """
    <my_plugin> 
      <project_attribute
        name="example_list_of_files"
        label="example_list_of_files"
        description="A description...."
        package="MyPackage"
        editor_page="MyPage"
        editor_section="Build"
        hide_in="wizard library_wizard"
        omit_if_default="false"
        list="true"
        base_name_only="true">

          <string type="file" filter="project" default="'a.adb','b.adb','c.adb' " />

      </project_attribute>  
    </my_plugin>""");

注意带有项目属性default的字符串元素。而不是项目管理器中的条目列表,它给了我一个条目,包含字符串“'a.adb','b.adb','c.adb'”。

有人有什么想法吗?我还尝试了多个字符串元素,添加括号、大括号、方括号、空格分隔符,并以 'array(' 为前缀,但没有运气。

谢谢

马特

4

2 回答 2

2

似乎确实不支持这一点。标准插件projects.py 有几个列表属性,但它们都有一个默认值。我会在这里检查可以做些什么来改进。

但是,您的方法可能首先是错误的。您设置的默认值仅涉及项目编辑器。这意味着如果用户使用默认项目(如project default is end default)并且从未通过项目编辑器,则您的属性 example_list_of_files 实际上将不存在(并且具有默认的空值)。GPS.Project.get_attribute_as_list因此,当您查询属性的值时(例如 via ),这似乎实际上应该在您的插件中处理。如果该函数返回一个空列表,则("a.adb", "b.adb", "c.adb")改为使用。这样,即使使用默认的、未经编辑的项目,事情也能正常工作。

于 2015-10-12T08:40:53.567 回答
0

从 GPS 用户指南:

该标签接受以下属性:

[...]

  • 列表(布尔值,默认为 false)

    如果为 true,则项目属性包含值列表,而不是单个值。一个例子是标准项目中的源目录列表。

在您的示例中:

<string type="file" filter="project" default="'a.adb','b.adb','c.adb' " />

这是一个单一的字符串值。相反,您应该指定一个字符串值列表,如下所示:

<string type="file" filter="project" default="a.adb" />
<string type="file" filter="project" default="b.adb" />
<string type="file" filter="project" default="c.adb" />
于 2015-10-09T11:07:26.303 回答