在GNAT GPS插件中设置project_attribute中的项目的默认列表

时间:2015-10-09 09:42:08

标签: plugins ada gnat gnat-gps

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

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

My desired list appears in one line instead of three lines

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

enter image description here

以下是此示例的代码:

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>""");

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

有人有任何想法吗?我也试过多个字符串元素,添加括号,大括号,方括号,空格分隔符,前缀为'array('没有运气。

感谢

马特

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

从GPS用户指南:

  

标签接受以下属性:

     

[...]

     
      
  • list(布尔值,默认值为false)

         

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

  •   

在你的例子中:

<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" />