Настройки плагина Sublime Text: Не загружается - PullRequest
0 голосов
/ 28 июня 2018

Я делал плагин для возвышенного текста, и все, казалось, работало нормально, пока я не начал углубляться в более «продвинутые» вещи. У меня есть следующий файл настроек:

   {
"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.load_settings('AddToFile.sublime-settings').get("show_preview")

... он возвращает Ложь, даже если это Истина, а sublime.load_settings('AddToFile.sublime-settings').has("show_preview") тоже Истина. Это происходит и с другими настройками, и я не знаю, где еще мой плагин получает настройки от

1 Ответ

0 голосов
/ 28 июня 2018

Метод settings().get() только с одним параметром всегда будет возвращать None, если этот параметр не существует, поэтому тот факт, что вы явно получаете значение, противоположное ожидаемому, указывает на то, что параметры файлы загружаются.

Это подтверждается settings.has(), возвращающим True, что указывает на то, что параметр с таким именем действительно существует в иерархии параметров, на которые ссылается объект settings.

Ваши результаты свидетельствуют о наличии более одного файла настроек с одинаковым именем. sublime-settings файлы - это один из многих файлов ресурсов пакета, которые additive; то есть, когда эти ресурсы загружены, Sublime ищет в каждом пути в каждом известном пакете файл с таким именем и загружает его, объединяя результаты вместе.

Эта additive природа объясняет, почему sublime.load_settings() требует, чтобы вы указали только имя файла настроек, а не его путь; указывать путь не имеет смысла, так как в любом случае он загружает несколько файлов.

Порядок загрузки нескольких файлов очень определенно определен , и при загрузке файлов их содержимое применяется поверх результатов предыдущей загрузки, что позволяет каждому последующему файлу либо переопределять настройку, либо добавлять новые.

Вы можете использовать метод sublime.find_resources() API для определения файлов, которые существуют и загружаются (если есть); результаты перечислены в порядке их загрузки.

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

Как видно, у меня есть только один файл с этим именем. В вашем случае я бы предположил, что их больше, чем один, и тот, чье содержимое вы показали выше, появляется в списке раньше, чем какой-либо другой файл с другими настройками, поэтому ваши настройки не имеют значения, которое вы думаю, что это так.

...