【问题标题】:SublimeText 3 - detect installed syntaxesSublime Text 3 - 检测已安装的语法
【发布时间】:2017-10-28 11:10:37
【问题描述】:

在运行插件代码时如何检测可用语法?

例如当我调用时

output_view.set_syntax_file("Packages/ANSIescape/ANSI.tmLanguage")

并且未安装 ANSIescape 包,然后我收到来自 Sublime 的错误,无法使用 try: ... except: 捕获。

我想安全地执行set_syntax_file,没有任何错误,并想知道它是否成功。

【问题讨论】:

    标签: python sublimetext3 sublimetext


    【解决方案1】:

    你可以使用sublime.find_resources() 来查找所有 Sublime 知道的提供语法的文件。这将是 tmLanguage 类型的所有文件(对于较旧的旧语法)和 sublime-sytax 对于使用较新语法的包的所有文件。

    this plugin code 中有一个这样做的例子。代码的相对sn-p是这样的:

    def syntax_name(self, syntax):
        syntax_file = os.path.basename(os.path.split(syntax)[1])
        return os.path.splitext(syntax_file)[0]
    
    def parse(self, langs, resource_spec):
        for syntax in sublime.find_resources(resource_spec):
            langs[self.syntax_name(syntax)] = syntax
    
    def query_syntax(self):
        langs = {}
    
        self.parse(langs, "*.tmLanguage")
        self.parse(langs, "*.sublime-syntax")
    

    这里的代码正在构建一个字典,其中的键是语言名称(从文件名派生而来,有关更多信息,请参阅完整代码),值是文件的全名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多