我正在开发自定义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>""");
注意项目属性默认的字符串元素。它不是项目管理器中的条目列表,而是给我一个条目,包含字符串“'a.adb','b.adb','c.adb'”。
有人有任何想法吗?我也试过多个字符串元素,添加括号,大括号,方括号,空格分隔符,前缀为'array('没有运气。
感谢
马特
答案 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" />