Получить значение настройки из файла, расположенного в нестандартном каталоге

У меня есть структура каталогов 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')) вместо.

Другие вопросы по тегам