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

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

Подумайте, зачем Вам столько .properties?


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


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

Для хранения основных настроек служат три файла .properties. Разница между ними - в области видимости размещенных в них значений:

  • SciTEGlobal.properties (располагается в каталоге с программой) - все заданные в нем переменные и их значения видны всегда, если их не переназначат два других файла. (см. ниже). Если какой то параметр в этом файле не найден, то используется значение по умолчанию, заданное разработчиком при компиляции программы. Т.е. задавать абсолютно ВСЕ значения Вас никто не заставляет ;)
  • SciTEUser.properties (располагается в Вашем пользовательском каталоге Documents and Settings\User\) - его данные действительны для пользователя User. Можно создать несколько таких файлов с различными настройками для каждого работающего на компьютере пользователя. Если какой то параметр в нем отсутствует, то его значение ищется выше (в SciTEGlobal.properties).
  • SciTE.properties (располагается в каталоге с рабочими файлами пользователя) - если Вы создадите такой файл, то его настройки будут действовать только в том каталоге, где он располагается. Вы можете даже создать по нескольку разных файлов с различными настройками, расположив их в разных каталогах. Если какой то параметр в этом файле не найден то поиск продолжится сначала в
    SciTEUser.properties, а затем в SciTEGlobal.properties.

Параметры задаваемые в этих файлах абсолютно идентичны друг-другу. Разместить их Вы можете как в любом из них, так и во всех сразу. Описание большинства из них имеется в документации. Только не запутайтесь, множа параметры, учтите зону их видимости (об этом я говорил выше). Учтите, что если одноименный параметр повторен дважды, то действует нижнее по тексту его значение. В общем, тут главное - не запутаться и четко представлять себе откуда SciTE читает конкретную установку.

А как же Вы забыли, про многочисленные файлы .properties, содержащие настройки для различных языков программирования? Не забыл.

Эти файлы - не являются самостоятельными. Просто SciTE позволяет использовать в файлах настроек директиву import с помощью которой можно подключить к одному файлу .properties другой такой же файл или много файлов. Вот и разбили разработчики языковые настройки по отдельным файлам. Чисто для удобства разбили. Не более.. Подключить любой из этих файлов можно, поместив в любой из основных файлов настроек директиву import, например так:
import pascal
Но учтите, что из-за примитивности этого параметра, невозможно задать ни шаблон для подключения, ни расширение файла. Есть только не слишком известная возможность задать путь (относительно родительского каталога SciTE), благодаря которому все подключаемые файлы можно сгруппировать в подкаталогах (см. пример ниже). А поскольку нельзя задать шаблон, то все подключенные файлы будут всегда обрабатываться SciTE независимо от того, нужны они или нет.

Однако, если файл настроек очень велик, то его порой удобно разбить на фрагменты.
Я вот так взял и разбил свои основные настройки на несколько файлов:
import Properties/[Export]
import Properties/[Help]
import Properties/[International]
import Properties/[Lexer]
import Properties/[Open]
import Properties/[Print]
import Properties/[StatusBar]
import Properties/[Styles]
import Properties/[UserCommands]
import Properties/[Warnings]

(Как видите, все они у меня лежат в подкаталоге SciTE/Properties (Все файлы синтакса для различных языков программирования я поместил в SciTE/Languages). А квадратные скобочки - это только чтоб в меню классно смотрелось :)

Да,еще... (не хотел про них говорить - тошно):
Кроме всех этих многочисленных файлов
настроек
имеются два .properties использующих совершенно иную идеологию.
Оба они не содержат привычных нам по остальным файлам .properties команд, а имеют свое уникальное содержание. Это:

  • abbrev.properties - файл хранящий строковые сокращения (он располагается в каталоге Documents and Settings\User\)
    и
  • locale.properties - файл содержащий перевод интерфейса на русский (в нашем случае) язык (он располагается в каталоге с программой).
    Столь неудачное программное решение (я имею в виду abbrev) не позволяет использовать различные строковые сокращения для различных языков программирования, поэтому пользователи вынуждены валить все их в один файл :(

    А в заключении хотелось бы сказать:
    Все что когда то было сказано (в том числе и разработчиками программы) о SciTE нуждается в тщательной проверке. Буду рад, если этой статьей мне удасться развенчать столь живучий в народе миф о строгом предназначении конкретного файла настройки конкретному параметру. В мире SciTE - все условно и Вам решать использовать ли для хранения настроек один SciTEGlobal.properties или же путаться со всеми остальными файлами.

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

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

    1. dB6 / 10.01.2006 - 13:39
    Все .properties содержат абсолютно одинаковые параметры, которые могут дублировать и исключать друг друга (поскольку эти файлы имеют разный приоритет).

    А разве нету настроек, которые должны подключаться в определенном месте? Не помню точно, но вроде в офф.документации такой момент был.
    Цитата
    2. mozers™ / 10.01.2006 - 13:44
    Нету настроек, которые должны подключаться в определенном месте.
    Которые ниже по тексту - те забивают верхние. В этом - частая проблема начинающих. "Я меняю - а ничего не меняется". Потому что наподключали тучу файлов и один забивает другой.
    (В том смысле что один параметр фигурирует в куче разных файлов с разными значениями)
    Цитата
    3. Тугаринов Сергей / 10.01.2006 - 13:47
    Нету настроек, которые должны подключаться в определенном месте.
    Которые ниже по тексту — те забивают верхние. В этом — частая проблема начинающих. "Я меняю — а ничего не меняется". Потому что наподключали тучу файлов и один забивает другой.

    Поэтому разработчик и систематизировал настройки на:
    1) Глобальные;
    2) Пользовательские;
    3) Настройки языка;
    4) Настройки директории.

    Поэтому я не вижу смысла в объединении настроек в один файл.
    ИМХО, идеальным вариантом является дублирование глобальных настроек в файл пользователя, а там их уже править, и в принципе не должно быть никаких проблем.
    Цитата
    4. mozers™ / 10.01.2006 - 13:54
    разработчик и систематизировал

    Чисто условно! Это - не догма, которой ОБЯЗАТЕЛЬНО надо придерживаться.
    3) пункт - это вообще отдельная песня - к какому из основных файлов подключишь - там и будут работать. (Основные - это 1,2,4)
    Цитата
    5. dB6 / 10.01.2006 - 14:01
    Тугаринов Сергей
    Поэтому я не вижу смысла в объединении настроек в один файл.
    ИМХО, идеальным вариантом является дублирование глобальных настроек в файл пользователя, а там их уже править, и в принципе не должно быть никаких проблем.

    Согласен.
    Но не всегда удобно.
    Если нужен SciTE для запуска с диска/флешки да и просто на компе, на котором не можешь/не хочешь положить файл в "User Home".
    Поэтому я и юзаю
    import SciTEUser.properties
    в SciTEGlobal.properties, когда SciTEUser.properties лежит в том же каталоге. И идеалогия не нарушается и удобно - все вместе.

    mozers™
    Нету настроек, которые должны подключаться в определенном месте.

    Каюсь, ввела в заблуждение инфа из старой документации (отрывок):
    buffer - Это значение считывается только при запуске программы и только из файлов глобальных настроек(SciTEGlobal.properties)
    Цитата
    6. mozers™ / 11.01.2006 - 06:01
    C учетом высказанных замечаний, текст статьи отредактирован на 100% :)
    Будет время - еще допишу абзац про остальные внешние подключаемые файлы.

    Тугаринов Сергей
    идеальным вариантом является дублирование глобальных настроек в файл пользователя

    Файл SciTEGlobal.properties имеющийся в дистрибутиве не блещет изяществом. Многие параметры его дублируют дефолтовые настройки SciTE и даны только для примера, другие устарели или содержат далеко не оптимальные параметры. Смысла в дубляже этого файла нет никакого, а если в более приоритетных файлах настройки какой то параметр будет закоментирован или исключен, то присутствие еще и SciTEGlobal будет просто вредным.
    Именно отсюда все ошибки и идут - "Я меняю - а ничего не меняется".

    dB6
    И идеалогия не нарушается.

    Да, извините, замучили уже всех этой высосанной из пальца "идеологией". Нет ее! Это - миф!
    Цитата
    7. Тугаринов Сергей / 11.01.2006 - 18:35
    2mozers™, зря подправил старую статью.... Нужно было эту выкладывать как новую, было бы намного интереснее.
    Цитата
    8. mozers™ / 11.01.2006 - 21:03
    2Тугаринов Сергей
    Новой заметкой хотел завершить рассказ, начатый на этой странице, но послушал тебя и разместил как [URL=http://scite.ruteam.ru/scite/faq/o-failax-rasshiryayuschix-vozmozhnosti-scite]новую статью[/URL].
    Цитата
    9. Vadikan / 22.04.2006 - 20:16
    Применительно к разбиванию файла настроек на куски типа Properties/[Export] и последующему импорту. Мне кажется, что это побуждает пользователя сборки идти и редактировать эти файлы. Не то чтобы это неправильно, но все-таки лучше свои настройки в профиле держать - это сохранит их при установке новой сборки поверх старой, например. Вообще, разбивка - спорный момент. Я понимаю, что это сделано для разделения файла настроек на группы. Однако, тоже самое можно сделать в одном файле, а группы обозначать прямо в тексте как в INI: [Export], [Help] и т.д. Складывание (folding) при этом чудесно работает, а сами секции редактор просто игнорирует - они лишь для удобства пользователя. Таким образом, если нужно найти и поменять некую настройку, то не надо искать во всех файлах, достаточно CTRL+F в одном. Понятно, что в большинстве случаев можно легко сообразить в каком файле размещены настройки, однако такие параметры как save.session или autocompleteword.automatic вероятно надо пихать в Styles, но это не совсем очевидно :) В таком случае проще сделать свою секцию и соотв. не нужно прописывать ее импорт в Global или отдельно в User.

    Может для сборки вам удобнее держать все настройки в разных файлах в одном каталоге с программой, но с точки зрения "подстройки под себя" мне это решение показалось небесспорным.
    Цитата
    10. mozers™ / 30.04.2006 - 10:23
    Vadikan,
    но все-таки лучше свои настройки в профиле держать - это сохранит их при установке новой сборки поверх старой, например

    Но не всегда гарантирует их правильную работу. (Например, при наличии в пользовательском профиле привязки к какой то переменной, которая в новой сборке может и поменятся ;)
    Vadikan,
    тоже самое можно сделать в одном файле, а группы обозначать прямо в тексте как в INI: [Export], [Help] и т.д.

    ГЕНИАЛЬНАЯ ИДЕЯ!!! :) Обязательно будет включено в новую сборку!
    Цитата


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




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