14

Я хочу сделать (на самом деле) пользовательскую подсветку синтаксиса для gedit.

Там будет всего несколько разных предметов:

Строка, которая начинается с 2 вкладок. ----- Один цвет. Строка, которая начинается с 3-х вкладок. ----- Другой цвет. Строка, которая начинается с 4 вкладок. ----- Другой цвет. и строка, которая начинается с INT. или EXT. ----- Другой цвет.

Это для написания сценария.

Я посмотрел на вики-страницу определения языка для gedit, но это далеко над моей головой.

Есть ли простой способ сделать это?

1 ответ1

15

Далее была получена из справочного руководства GtkSourceView, язык Определение v2.0 Учебник и Reference.

Создайте файл /usr/share/gtksourceview-2.0/language-specs/screenplay.lang (с правами root) со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<language id="screenplay" _name="Screenplay" version="2.0" _section="Markup">
  <metadata>
    <property name="mimetypes">text/plain</property>
    <property name="globs">*.script</property>
  </metadata>
  <styles>
    <style id="indent2" _name="2x indented"  map-to="def:comment" />
    <style id="indent3" _name="3x indented"  map-to="def:constant" />
    <style id="indent4" _name="4x indented"  map-to="def:identifier" />
    <style id="intext"  _name="INT. or EXT." map-to="def:statement" />
  </styles>
  <definitions>
    <context id="screenplay">
      <include>
        <context id="indent4" style-ref="indent4">
          <start>^\t\t\t\t</start>
          <end>$</end>
        </context>
        <context id="indent3" style-ref="indent3">
          <start>^\t\t\t</start>
          <end>$</end>
        </context>
        <context id="indent2" style-ref="indent2">
          <start>^\t\t</start>
          <end>$</end>
        </context>
        <context id="intext" style-ref="intext">
          <start>^(INT|EXT)\.</start>
          <end>$</end>
        </context>
      </include>
    </context>
  </definitions>
</language>

Убедитесь, что файл доступен для чтения всем, запустив

sudo chmod 0644 /usr/share/gtksourceview-2.0/language-specs/screenplay.lang

Перезапустите Gedit. Теперь любой файл с именем *.script который вы открываете в gedit, должен показывать тип "Сценарий" в строке состояния внизу. Строки с двумя, тремя или четырьмя вкладками должны иметь синий, пурпурный и голубой цвета соответственно, а строки начинаются с INT. или EXT. будет красным и жирным лицом.

Вы можете настроить это несколькими способами:

  • Суффикс имени файла .script устанавливается в строке 5 в свойстве "globs". Вы можете изменить это очевидным образом и включить несколько значений, если хотите, через точку с запятой (;).

  • Цвета, которые вы получаете за отступ и INT. и вн. линии зависят от конкретной цветовой схемы, которую вы выбрали для gedit. Это цвета комментариев, констант, идентификаторов и стилей операторов (это то, что делают map-to="def:comment" и т.д.). Чтобы получить другие результаты, вы можете изменить цветовую схему gedit ("Редактирование"> "Установки"> "Шрифты и цвета") или переставить значения map-to в тегах <style> . Если вы хотите больше контроля, вы можете создать свою собственную цветовую схему следующим образом:

    cd /usr/share/gtksourceview-2.0/styles
    sudo cp classic.xml screenplay.xml
    

    Отредактируйте screenplay.xml (как root). Замените первые три строки без комментариев:

    <style-scheme id="screenplay" _name="Screenplay" version="1.0">
      <author>YAS</author>
      <_description>Screenplay color scheme</_description>
    

    Затем настройте цвета (и, возможно, другие стили, например, bold="true") стилей операторов def:comment, def:constant, def:identifier и def:. Снова перезапустите gedit и измените цветовую схему gedit на Screenplay, чтобы увидеть новые цвета. Обратите внимание, что это глобальное изменение, хотя; Вы можете вернуться к своей обычной цветовой схеме для редактирования других файлов.

Обратите внимание, что каждый раз, когда вы изменяете файлы screenplay.lang или screenplay.xml, вам нужно будет перезапустить gedit, чтобы увидеть результаты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .