Установка списка элементов по умолчанию в project_attribute в плагине GNAT GPS
Я работаю над пользовательским плагином 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".
У кого-нибудь есть идеи? Я также попробовал несколько строковых элементов, добавив скобки, скобки, квадратные скобки, разделители пробелов, префикс "массив ("), но безуспешно.
Спасибо
Matt
2 ответа
Кажется, действительно, это не поддерживается. Стандартный плагин projects.py имеет несколько атрибутов списка, но все они имеют одно значение по умолчанию. Я проверю, что можно сделать, чтобы улучшить здесь.
Тем не менее, ваш подход может быть неправильным в первую очередь. Значение по умолчанию, которое вы устанавливаете, касается только редактора проекта. Это означает, что если пользователь использует проект по умолчанию (например, project default is end default
) и никогда не проходит через редактор проекта, ваш атрибут example_list_of_files фактически не будет существовать (и будет иметь пустое значение по умолчанию). Таким образом, кажется, что это на самом деле должно быть обработано в вашем плагине, когда вы запрашиваете значение атрибута (например, через GPS.Project.get_attribute_as_list
). Если эта функция возвращает пустой список, используйте ("a.adb", "b.adb", "c.adb")
вместо. Таким образом, все работает хорошо даже с не редактированным проектом по умолчанию.
Из руководства пользователя 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" />