我一直在制作一个崇高的文本插件,在我开始研究更多“高级”东西之前,一切似乎都工作正常。我有以下设置文件:
{
"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")
...即使它为True并且sublime.load_settings('AddToFile.sublime-settings').has("show_preview")
也为True,它仍返回False。这也发生在其他设置上,我不知道我的插件还能从哪里获得它的设置
答案 0 :(得分:1)
只有一个参数的方法settings().get()
将始终返回None
,如果该设置不存在,那么您得到的值显然与预期值相反的事实是指示正在加载设置文件。
此操作由settings.has()
返回True
进行备份,这表明在settings
对象所引用的设置层次结构中确实存在具有该名称的设置。
您的结果表明存在多个具有相同名称的设置文件。 sublime-settings
文件是additive
的许多软件包资源文件之一;也就是说,当加载这些资源时,Sublime会在每个已知包中的每个路径中搜索该名称的文件,然后将其加载,并将结果组合在一起。
additive
的这种性质就是sublime.load_settings()
要求您仅指定设置文件的名称而不是路径的原因;提供路径是没有意义的,因为它始终会加载多个文件。
多个文件的加载顺序为very specifically defined,并且在加载文件时,其内容将应用到上一次加载的结果之上,从而允许每个后续文件覆盖设置或添加新的设置。 / p>
您可以使用sublime.find_resources()
API方法来确定存在和正在加载的文件(如果有);结果按加载顺序列出。
>>> sublime.find_resources("AddToFile.sublime-settings")
['Packages/User/AddToFile.sublime-settings']
如这里所示,我只有一个文件名与此文件相同。在您的情况下,我想其中不止一个,并且上面显示的内容比其他设置不同的文件在列表中的位置更早,这就是为什么您的设置没有值的原因认为确实如此。