我一直在制作一个崇高的文本插件,一切似乎都工作正常,直到我开始钻研更多“高级”的东西。我有以下设置文件:
{
"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")
亦真也。其他设置也会发生这种情况,我不知道我的插件从哪里获取它的设置
最佳答案
如果该设置不存在,只有一个参数的方法settings().get()
将始终返回None
,因此您实际上是明确获取与您期望的值相反的值表明正在加载设置文件。
这得到了 settings.has()
返回 True
的支持,这表明具有该名称的设置确实存在于设置的层次结构中settings
对象正在引用。
您的结果表明存在多个同名的设置文件。 sublime-settings
文件是许多附加
包资源文件之一;也就是说,当加载这些资源时,Sublime 会在每个已知包中的每个路径中搜索该名称的文件并加载它,将结果组合在一起。
这种附加
性质就是为什么sublime.load_settings()
要求您仅指定设置文件的名称而不是其路径;提供路径是没有意义的,因为它无论如何都会加载多个文件。
多个文件的加载顺序为very specifically defined ,并且当文件加载时,它们的内容将应用到先前加载的结果之上,从而允许每个后续文件覆盖设置或添加新设置。
您可以使用sublime.find_resources()
API方法来确定存在且正在加载的文件(如果有);结果按加载顺序列出。
>>> sublime.find_resources("AddToFile.sublime-settings")
['Packages/User/AddToFile.sublime-settings']
如图所示,我只有一个同名的文件。在你的情况下,我猜测其中不止一个,并且你上面显示的内容比其他具有不同设置的文件更早地出现在列表中,这就是为什么你的设置没有你的值我想确实如此。
关于python - Sublime Text插件设置: Not Loading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51088271/