Подтвердить что ты не робот

Расширение определений языков (для выделения кода) в блокноте ++

Я занимаюсь разработкой в ​​TWIG в последнее время. Это язык шаблонов html, который очень прост и надежный.

Я установил notepad ++ для автоматической обработки файлов .twig как html. Это нормально, но я не вижу подсветки синтаксиса для моих функций твига.

Синтаксис твинов невероятно прост (по дизайну) и будет легко добавить в блокнот ++. Проблема в том, что все, что я нахожу на эту тему, - это либо создание нового определения языка (и я не хочу повторно изобретать определение html), либо изменить цвет существующих битов синтаксиса на языке.

Есть ли способ скопировать определение языка, а затем изменить его в блокноте ++? Если нет, есть ли способ в блокноте ++ добавить дополнительные биты синтаксиса в существующее определение языка?

изменить

TWIG - это язык/движок шаблона html. они синтаксис для него такой же, как html, с добавлением нескольких тегов open/close (в частности {%%}, {{}} и {# #}) для управляющих операторов. вы можете больше узнать об этом на веб-сайте twig

edit # 2

Основываясь на ответе Брайана Дерагона, я изучал 3 файла. Вот что я выяснил/сделал до сих пор:

  • \plugins\APIs\html.xml - Кажется, нужно определить ключевые слова для автозаполнения. Я сделал копию файла с именем twig.xml
  • langs.model.xml - Опять же, список ключевых слов со всеми языками в 1 файле XML. Я скопировал объект HTML и заменил имя и параметры ext веточкой.
  • stylers.model.xml - содержит список разных элементов и информацию о стиле (цвет, цвет, шрифт и т.д.) для каждого. Я скопировал раздел HTML и изменил параметры имени и desc на веточку.

Эти изменения сделаны, я открыл файл twig в блокноте ++, надеясь увидеть его в списке вариантов языка. К сожалению, он не появился, что привело меня к мысли, что некоторые из них жестко закодированы (и, следовательно, я хочу, чтобы это было невозможно).

Интересно, однако, stylers.model.xml. Каждая запись имеет кучу элементов, определенных следующим образом:

<LexerType name="twig" desc="TWIG" ext="">
    <WordsStyle name="DEFAULT" styleID="0" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" />
    <WordsStyle name="COMMENT" styleID="9" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    <WordsStyle name="TAG" styleID="1" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    <WordsStyle name="TAGEND" styleID="11" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    ...
</LexerType>

Кажется, что эти стили определены для разных элементов. Я не могу найти нигде, где эти элементы определены. langs.model.xml имеет определение для начала/конца комментария, но не для каких-либо других разделителей. то, что мне действительно нужно, - это место, где можно сказать блокнот ++ для обработки {} как разделителя, как и для < > сейчас.

edit # 3

Я также рассматриваю этот список пользовательских языков для notepad ++ http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=User_Defined_Language_Files Языки, определенные пользователем, используют другой движок, но я мог бы найти его там, который достаточно похож на html, чтобы я мог его адаптировать.

4b9b3361

Ответ 2

Вы должны иметь возможность просто скопировать и отредактировать файл определения XML (html.xml); до тех пор, пока вы не нуждаетесь в материалах за пределами основ, таких как сворачивание кода, расширенная раскраска, основанная на блоках обработки случаев или нескольких условностях, отдельное форматирование для ведущих символов, раскраска этикеток, компиляция на основе xml, смешивание языков (раскраска встроенные скрипты), поддержка раскраски утиных типов и т.д. Если вам нужно что-то "продвинутое", вам нужно написать свой собственный лексер, и в этом случае применяется большая часть ниже.

Даже несмотря на то, что приведенные ниже шаблоны должны дать вам начало в вашем файле определения языка.


Насколько мне известно, Notepad ++ использует Scintilla Lexers для определения своих правил кода.

Вам нужно будет создать свой собственный лексер, но... HTML Scintilla Lexer уже включен в исходный код Scintilla .

Затем вы вставляете свой пользовательский лексер с помощью плагина, например Gary Lua Highlighter Plugin.

Ресурсы для создания пользовательского lexer:

Как говорится, Geany очень похож на Notepad ++ (на основе того же движка Scintilla), поэтому вы можете захотеть посмотрите, было ли это уже сделано для Geany, или есть ли в нем проект с открытым исходным кодом. Это, по крайней мере, даст вам начало.

Если это не помогает, есть встроенные IDE и редакторы с поддержкой Twig, например:

GEdit опубликовала свое XML-определение языка здесь, которое может помочь в качестве ссылки при создании собственного файла определения или lexer; есть и другой шаблон, опубликованный ребятами из Twig здесь, который может быть полезен.

Вот лучшие учебники для Notepad ++ для создания пользовательских языков /User Defined Languages, которые я могу найти:

Если вы хотите стать храбрым и создать свою собственную версию Scintilla, обратитесь к этим темам, чтобы увидеть парня, который получил его работу, и отобразиться в списке языков (используйте предыдущее/следующее сообщение о потоке, чтобы увидеть ответы, или индекс потока, это список рассылки, поэтому его пользовательский интерфейс не самый лучший)

Надеюсь, что это поможет вам или, по крайней мере, больше на голову!

Ответ 3

Возможный дубликат этого сообщения: https://superuser.com/info/40876/assigning-custom-extensions-to-a-languages-syntax-highlighting-in-notepad

Все, что вам нужно сделать, это добавить свое настраиваемое расширение в Settings- > Style Configurator

Нажмите на HTML и добавьте расширение в поле User Ext.

EDIT: если вы хотите добавить дополнительные правила на свой язык, вам может потребоваться добавить еще один XML в блокнот ++ → plugins- > API Если вы думаете, что это как HTML, просто скопируйте файл html.xml и сохраните как twig.xml Добавьте дополнительные правила в этот файл XML