Переменные в файлах .properties

Вы уже знаете что файлы .properties содержат настройки редактора.
И поэтому начинаете их анализировать и изменять как файлы .INI других программ.
Первое отличие от файлов .INI сразу бросается в глаза - нет привычных для нас секций. Параметр и его значение можно записать в любом месте файла. Более того - его можно задать в любом из файлов .properties. Действовать будет только самое нижнее по тексту значение.
Второе отличие - не столь заметно и часто сбивает с толку начинающих. Я имею в виду переменные.
В файлах .INI такие отсутствуют.
На самом деле, если в файле .INI мы увидим запись вида:
colour.number=fore:#C00000
то это однозначно нам говорит о том, что данный параметр задает цвет числовых значений.
В SciTE не все так однозначно.
На самом деле тут colour.number - всего лишь пользовательская переменная, которая может быть использована для реального задания цвета:
style.vb.2=$(colour.number)
а может быть и не использована автором настройки:
style.vb.2=fore:#C00000
Не зная этого ньюанса вы будете до посинения менять значение colour.number без всякого положительного результата.
Положение усугубляется тем, что на имена пользовательских переменных не наложено практически никаких ограничений и создатели файлов настроек дают им имена по образу и подобию реальных ключей. Хотя бы буковку какую впереди ставили или писали их заглавными буквами, ан нет - написано "colour.number" и поди разберись что это - реальный ключ или пользовательская переменная :( Один выход - внимательно читать документацию, поскольку реальные ключи в ней описаны.
Есть несколько переменных, значение которых SciTE знает и без вас. Это:
FilePath - Полный путь для текущего файла
FileDir - Папка текущего файла без отслеживания(trailing) слеша
FileName - Имя файла без расширения
FileExt - Расширение текущего файла
FileNameExt = $(FileName).$(FileExt)
SessionPath - Полный путь текущей сесии
CurrentSelection - Значение выделенного текста на данный момент
CurrentWord - Значение слова на котором символ каретки или около него
Replacements - Число замен сделанное полсдней коммендой замены
SelectionStartColumn - Столбец начала выделения
SelectionStartLine - Строка начала выделения
SelectionEndColumn - Столбец окончания выделения
SelectionEndLine - Строка окончания выделения
SciteDefaultHome - Папка где найден файл глобальных настроек
SciteUserHome - Папка где найден файл настроек пользователя
Их вы можете с успехом использовать в своих файлах настроек.

В заключение приведу маленький VBS скрипт (всего одна строчка), который вам подскажет реальное значение любой выделенной переменной:

Код:

'  Показывает действующее значение переменных $(название_переменной)
'
' Для подключения добавьте в свой файл .properties следующие строки:
' command.name.45.*.properties=Узнать значение выделенной переменной
' command.45.*.properties=wscript "$(SciteDefaultHome)\tools\value.vbs"
' command.input.45.*.properties=$(CurrentSelection)
' command.mode.45.*.properties=subsystem:windows,savebefore:no
' command.shortcut.45.*.properties=Alt+V
' -----------------------------------------------------------------------
MsgBox WScript.StdIn.ReadAll, vbInformation, "Значение выделенной переменной ="


Или еще один вариант на LUA (Cочинил его mimir):Код:
--~   Показывает действующее значение переменных $(название_переменной)
-~
-~ Для подключения добавьте в свой файл .properties следующие строки:
--~ command.name.45.*.properties=Узнать значение переменной
--~ command.45.*.properties=dofile "$(SciteDefaultHome)\tools\value.lua"
--~ command.mode.45.*.properties=subsystem:lua,savebefore:no
--~ command.shortcut.45.*.properties=Alt+V
-----------------------------------------------------------------------
print ('\n'..editor:GetSelText()..' = '..props['CurrentSelection'])


Огигинал новости «Переменные в файлах .properties»   -
«SciTE - редактор кода для программистов»   -