Пользовательский gedit Подсветка синтаксиса для чайников?

15

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

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

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

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

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

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

YAS
источник

Ответы:

16

Далее была получена из справочного руководства 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, в свойстве «комки». Вы можете изменить это очевидным способом и включить несколько значений, если хотите, через точку с запятой ( ;).

  • Цвета, которые вы получаете за отступ и 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, чтобы увидеть результаты.

Эндрю Шульман
источник
Это сделал это! КЛАССНО!
YAS
Спасибо, у меня был похожий вариант использования, выделяя связанные, но физически несопоставимые линии одним и тем же цветом, и это очень помогло.
Eloff