сделать стартовой  |  добавить в избранное

   SciTE - редактор кода для программистов
Версии SciTE

Текущая версия SciTE - 2.26
Русская сборка - 2.25.93 [Сборка 27.03.2011]

чемодан купить

Архив форума

Поиск +

Категории +

SciTE (94)
 » Документация (6)
 » FAQ (11)
 » Компиляторы (3)
 » Основные настройки (9)
 » Русификация (4)
 » Сборки (7)
Новости сайта (9)
Scintilla (1)
 » Разработки (0)
Работа проекта (5)
Доска позора (2)
Полезные утилиты (10)
Скрипты (16)
 » LUA (14)
 » VBS, JS, WSF и др. (5)

RSS каналы

 

Партнеры:




Паттерны и лексеры в файлах настроек


Автор: mozers™ / Дата: 23.04.2006 / Комментариев: 0
Категория: Документация, FAQ, Основные настройки


Паттерны и лексеры в файлах настроек
Изучая документацию по SciTE мы часто наталкиваемся на параметры filepattern и lexer, используемые в комбинации с различными командами. Что это за параметры и для чего они нужны?

Все дело в том, что некоторые команды предназначены только для файлов определенного типа. Использовать их для обработки других типов файлов было бы либо неверно либо неэффективно. Поэтому и были выдуманы эти дополнительные приставки к основному параметру, сужающие область его применения до файлов определенного типа.
Паттерн - не что иное как обычная пользовательская переменная, содержащая маску допустимых файлов:
Код .properties:
file.patterns.html=*.html;*.htm;*.asp;*.shtml

Т.е. мы можем назвать эту переменную как угодно и использовать ее в качестве паттерна:
Все таки я бы советовал называть вам паттерны в соответствии с правилами (поглядите как названы другие и присвойте имя своему паттерну по аналогии)
Код .properties:
command.go.$(file.patterns.html)=file://$(FilePath)

данная запись будет идеентична такой:
Код .properties:
command.go.*.html;*.htm;*.asp;*.shtml=file://$(FilePath)

но первая - лучше смотрится (особенно, если один и тот же паттерн надо применять многократно)

Лексер - действует аналогично сужая область применения параметра до файлов определенного типа. Название лексера - это название внутреннего обработчика определенного языка программирования. Имена лексеров зашиты в коде редактора и изменить их могут только программисты.
Мы сейчас не говорим про параметр lexer с помощью которого вы можете определить список расширений файлов, которые будет обрабатывать конкретный лексер:
Код .properties:
lexer.*.c;*.cc;*.cpp;*.cxx;*.h;*.hh;*.hpp;*.hxx;*.sma=cpp

обычно пишут так:
Код .properties:
lexer.$(file.patterns.cpp)=cpp

Сейчас мы говорим про cpp - это имя лексера в данном случае.
Вот это имя и используется для ограничения зоны действия того или иного параметра. Например, так:
Код .properties:
style.cpp.2=fore:#B00040

Так мы задали страшненький цвет для комментариев. Но действовать он будет только для файлов, обрабатываемых лексером cpp. Для всех остальных типов файлов эта установка не возимеет никакого действия.

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

Что использовать для ограничения параметра лексер или паттерн - вам на этот счет сомневаться не приходится - все задано однозначно и описано в документации. Главное тут - не препутать теплое с мягким.

Версия для печати / Прочитано: 17301 раз(а)

Комментариев: 0 (rss)



Добавить комментарий:
Имя:
E-mail:
        BBCodes




Интересные статьи / Тематические материалы © 2004 - 2017 - Хранение данных