Получить значение настройки из файла, расположенного в нестандартном каталоге
У меня есть структура каталогов Sublime, как это:
Packages
|-- Foo
| |-- Markdown.sublime-settings
|
|-- Bar
| |-- plugin.py
|
|-- User
|-- Markdown.sublime-settings
Затем я пытаюсь получить wrap_width
значение, хранящееся в Foo/Markdown.sublime-setting
, По какой-то причине кажется, что load_setting
метод не работает, хотя save_settings
работает отлично.
import sublime
import sublime_plugin
class MarkdownSettings(sublime_plugin.EventListener):
def on_activated(self, view):
path = view.file_name()
if path:
e = view.file_name().split('.')[1]
if e == ("md" or "mmd"):
# Simple test. It works
x = sublime.load_settings("Markdown.sublime-settings")
wrap_width = x.get("wrap_width")
print(wrap_width) # Prints 50
# If I change directory to "../Foo", `load_setting` method would not work
x = sublime.load_settings("../Foo/Markdown.sublime-settings")
wrap_width = x.get("wrap_width")
print(wrap_width) # Prints None
# The code below is added just for demonstration purposes,
# to show that `save_setting` method works fine.
x = sublime.load_settings("../Foo/Markdown.sublime-settings")
x.set("wrap_width", 20)
sublime.save_settings("../Foo/Markdown.sublime-settings") # File updated
Как я мог получить wrap_width
значение хранится в Foo/Markdown.sublime-settings
?
1 ответ
Используя путь с load_settings
не поддерживается.
С http://www.sublimetext.com/docs/3/api_reference.html:
Загружает названные настройки. Имя должно включать имя файла и расширение, но не путь. Пакеты будут искать файлы, соответствующие
base_name
и результаты будут сопоставлены в объект настроек. Последующие звонкиload_settings()
сbase_name
вернет тот же объект и больше не будет загружать настройки с диска.
Если вам действительно нужно это сделать, вы должны использовать sublime.decode_value(sublime.load_resource('Packages/Foo/Markdown.sublime-settings'))
вместо.