Установка списка элементов по умолчанию в 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" />
Другие вопросы по тегам