【问题标题】:Sublime Text Plugin Settings: Not LoadingSublime Text 插件设置:未加载
【发布时间】:2018-12-07 20:29:50
【问题描述】:

我一直在制作一个崇高的文本插件,在我开始研究更“高级”的东西之前,一切似乎都运行良好。我有以下设置文件:

   {
"suggest_new_file": true,

"add_to_single_view": false,

"show_status_message": true,

"show_file_path": true,

"status_message": "Copied to {name}",

"keep_focus": true,

// show preview of file contents in popup menu
"show_preview": true,

// scroll the view to the end of the file being copied to
// requires 'keep_focus' to be false
"scroll_view": true,
}

但是,当我输入如下内容时,(进入 sublime 终端):

sublime.load_settings('AddToFile.sublime-settings').get("show_preview")

...它返回 False,即使它是 True 并且 sublime.load_settings('AddToFile.sublime-settings').has("show_preview") 也是 True。这也会发生在其他设置中,我不知道我的插件从哪里获取它的设置

【问题讨论】:

  • sublime.find_resources("AddToFile.sublime-settings") 返回什么?
  • 返回<Sublime.settings object ...>
  • 那个方法应该返回一个资源文件名列表;如果它返回一个设置对象,那么你的 Sublime 安装就会严重混乱。

标签: python plugins sublimetext3


【解决方案1】:

如果该设置不存在,只有一个参数的方法 settings().get() 将始终返回 None,因此您明确获得的值与您期望的值相反的事实表明设置正在加载文件。

这由返回Truesettings.has() 支持,这表明具有该名称的设置确实存在于settings 对象所引用的设置层次结构中。

您的结果表明存在多个同名设置文件。 sublime-settings 文件是additive 的众多包资源文件之一;也就是说,当加载这些资源时,Sublime 会在每个已知包中的每个路径中搜索具有该名称的文件并加载它,并将结果组合在一起。

additive 的本质就是为什么sublime.load_settings() 要求您仅指定设置文件的名称而不是其路径;提供路径是没有意义的,因为它无论如何都会加载多个文件。

多个文件的加载顺序是very specifically defined,在加载文件时,它们的内容会应用在先前加载的结果之上,从而允许每个后续文件覆盖设置或添加新设置。

您可以使用sublime.find_resources() API 方法来确定存在和正在加载的文件(如果有);结果按加载顺序列出。

>>> sublime.find_resources("AddToFile.sublime-settings")
['Packages/User/AddToFile.sublime-settings']

如此处所示,我只有一个同名的文件。在您的情况下,我猜想其中不止一个,并且您在上面显示的内容比其他具有不同设置的文件在列表中更早,这就是为什么您的设置没有您的值认为是的。

【讨论】:

  • 感谢您提及find_resources 方法!原来我从我的 GitHub 存储库复制它时无意中复制了我的包。
猜你喜欢
  • 1970-01-01
  • 2014-10-23
  • 2014-04-14
  • 2013-11-16
  • 2014-01-09
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 2014-02-13
相关资源
最近更新 更多