0

にあるファイルから、設定値を取得します。私はこのような崇高のディレクトリ構造があります。そして、非標準のディレクトリ

Packages 
    |-- Foo 
    | |-- Markdown.sublime-settings 
    | 
    |-- Bar 
    | |-- plugin.py 
    | 
    |-- User 
     |-- Markdown.sublime-settings 

が、私はFoo/Markdown.sublime-settingに保存されているwrap_width値を取得しようとしています。何らかの理由でload_settingメソッドが機能しないようですが、save_settingsは問題なく動作します。私はFoo/Markdown.sublime-settingsに保存されているwrap_width値を得ることができる方法

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 

答えて

2

load_settingsのパスは使用できません。 http://www.sublimetext.com/docs/3/api_reference.html#sublimeから

は、名前の設定をロードします。名前にはファイル名と拡張子を含める必要がありますが、パスは含めないでください。パッケージにはbase_nameに一致するファイルが検索され、結果は設定オブジェクトに照合されます。その後、base_nameを使用してload_settings()を呼び出すと、同じオブジェクトが返され、ディスクから設定を再度ロードしません。

本当にこれを行う必要がある場合は、代わりにsublime.decode_value(sublime.load_resource('Packages/Foo/Markdown.sublime-settings'))を使用してください。

関連する問題