Пользовательская переменная среды - PullRequest
0 голосов
/ 04 июня 2019

Можно ли установить пользовательскую переменную среды, которая будет доступна из любого другого плагина, так же, как работает $platform и $path?

Существует пакет EnvironmentSettings от Daniele Niero, но, похоже, моя задача проще, и поэтому существует вероятность, что нет необходимости углубляться в его код.

1 Ответ

1 голос
/ 06 июня 2019

В 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 в других.

...