【问题标题】:Custom environment variable自定义环境变量
【发布时间】:2019-06-04 16:03:26
【问题描述】:

是否可以设置一个自定义环境变量,可以从任何其他插件访问,就像$platform$path 的工作方式一样?

Daniele Niero 有一个包EnvironmentSettings,但我的任务似乎更简单,因此很可能没有必要深入研究它的代码。

【问题讨论】:

  • 您能否提供更多详细信息,说明您尝试使用这些变量实现的目标?
  • @OdatNurd 我使用自定义目录而不是默认的User 来存储我的首选项和键绑定文件。有时我的一些自定义插件需要读/写这些首选项。有一天我可能会决定更改此目录的名称或将其放在另一个目录中 - 手动更改所有路径会带来一些不便。

标签: environment-variables sublimetext3 sublimetext sublime-text-plugin


【解决方案1】:

在 Sublime 中,任何插件都可以从 Python 运行时通过os.environ 修改全局进程环境。所有插件代码都在同一个进程下运行,因此一旦一个插件设置了环境变量,任何其他插件都可以访问它。我想这就是您在问题中链接到的包如何修改环境。

可以在Default/exec.py 中找到一个简单的实际操作示例,您可以使用命令面板中的View Package File 打开它。在AsyncProcess()__init__ 方法中,如果您在sublime-build 文件中传递path 参数,则可以修改Sublime 进程环境的代码。

您可以从 Sublime 控制台运行的一个简单示例是以下 sn-p。执行该代码后,您创建的任何插件都可以访问 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 核心中是硬编码的,不能被扩充,所以如果你想要额外的变量,你需要将它传达给其他插件,并且必须修改它们才能知道如何使用它们。

从您在问题的 cmets 中尝试完成的声音来看,您想要的可能是一个 sublime-settings 文件,其中包含一个设置,该设置指定用于自定义插件中的文件操作的目录。如果他们都加载设置文件以获取路径,您可以在配置中修改位置并使其立即生效。或者,您可以在一个插件中执行顶级模块变量之类的操作,然后在其他插件中执行 import 之类的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 2020-03-27
    • 1970-01-01
    • 2011-06-15
    • 2012-12-13
    相关资源
    最近更新 更多