LINUX.ORG.RU

История изменений

Исправление RPG, (текущая версия) :

Насколько сложно под сабж делать подсветку синтаксиса? Например у меня html шаблоны со вставками типа {if}..{else}...{/if}, {$count} и т.д.

Существует два пути. Первый очень простой, второй очень сложный:)

Простой. В Scintilla существует множество готовых лексеров для разных языков: C/C++, Python, Lua, Ruby. Один из готовых лексеров можно взять за основу для «своего» языка. Далее нужно просто оформить файл filetypes, где перечислить все ключевые слова и зарядить цветовую схему. Схемы можно наследовать. Я так сделал немного кривоватую подсветку синтаксиса для RPM Spec на базе Ruby.

Сложный. Нужно добавлять вручную лексер в редактор Scintilla на C++. Больше нечего сказать, но это когда язык уж очень радикально нестандартный. Например, для C, C++, Java и JavaScript используется один и тот же лексер C++.

В вашем случае можно просто добавить ключевые слова в уже существующий лексер HTML. Подробности можно почитать в документации. Если положить filetype.html в ~/.config/geany/filetypes, он перекроет системную схему.

Исходная версия RPG, :

Насколько сложно под сабж делать подсветку синтаксиса? Например у меня html шаблоны со вставками типа {if}..{else}...{/if}, {$count} и т.д.

Существует два пути. Первый очень простой, второй очень сложный:)

Простой. В Scintilla существует множество готовых лексеров для разных языков: C/C++, Python, Lua, Ruby. Один из готовых лексеров можно взять за основу для «своего» языка. Далее нужно просто оформить файл filetypes, где перечислить все ключевые слова и зарядить цветовую схему. Схемы можно наследовать.

Сложный. Нужно добавлять вручную лексер в редактор Scintilla на C++. Больше нечего сказать, но это когда язык уж очень радикально нестандартный. Например, для C, C++, Java и JavaScript используется один и тот же лексер C++.

В вашем случае можно просто добавить ключевые слова в уже существующий лексер HTML. Подробности можно почитать в документации. Если положить filetype.html в ~/.config/geany/filetypes, он перекроет системную схему.