В Sublime любой плагин может изменять глобальную среду процессов через os.environ
из среды выполнения Python.Весь код плагина выполняется под одним и тем же процессом, поэтому, как только один плагин устанавливает переменную среды, любой другой плагин может получить к ней доступ.Я полагаю, что именно так пакет, с которым вы связались в своем вопросе, изменяет среду.
Простой пример этого в действии можно найти в Default/exec.py
, который вы можете открыть с помощью View Package File
изкомандная палитра.В методе __init__
AsyncProcess()
есть код, который изменяет среду процесса Sublime, если вы передаете аргумент path
в свой файл sublime-build
.
Простой пример, который можно запустить из Sublimeконсоль будет следующим фрагментом.После выполнения этого кода любой созданный плагин может получить доступ к os.environ["MY_VARIABLE"]
для просмотра значения.
import os
os.environ["MY_VARIBLE"]="Some Value"
С учетом сказанного в Sublime $platform
не является переменной окружения, это специальная переменная, котораяSublime знает, как развернуть себя, в отличие от системной среды, описанной выше.
Полный список таких переменных можно просмотреть, выполнив следующий код из консоли Sublime:
from pprint import pprint
pprint(window.extract_variables())
Список переменных, которые вы получаете, и их содержание зависит от состояния приложения (платформа, есть ли в данный момент открытый проект в окне, текущий файл и т. Д.).
Имена переменных, которые они возвращают, жестко запрограммированы в ядре Sublime и не могут быть дополнены, поэтому, если вам нужны дополнительные переменные, вам нужно сообщить об этом другим плагинам, и они должны бытьизменено, чтобы знать, как их использовать.
Из звуков того, что вы пытаетесь достичь в комментариях к вашему вопросу, вам может понадобиться файл sublime-settings
, который содержит параметр, определяющий каталогиспользовать для действий с файлами в ваших пользовательских плагинов.Если все они загружают файл настроек, чтобы получить путь, вы можете изменить местоположение в конфигурации и немедленно вступить в силу.В качестве альтернативы вы можете сделать что-то вроде переменной модуля верхнего уровня в одном плагине и import
в других.