【问题标题】:How to allow a Sublime Text 3 package for certain file syntax only?如何仅允许某些文件语法的 Sublime Text 3 包?
【发布时间】:2015-09-01 19:00:22
【问题描述】:

我已经编写了一个 ST3 包(其中包含 .py 插件、.sublime-keymaps 和 .sublime-commands)并且我希望插件和 .sublime* 配置文件处于活动状态 对于特定的文件语法(例如 .txt.myCustomSyntax)。我怎样才能做到这一点?

【问题讨论】:

    标签: python sublimetext3


    【解决方案1】:

    从提供的示例来看,您应该使用文件扩展名而不是语法。活动语法可以通过语法菜单更改,而文件扩展名是不变的。

    #■■■■■  Establish Valid File Extensions  ■■■■■■■■■■■■■■■■■■■■
    
    valid_FileExtensions = []
    valid_FileExtensions.append ( "txt" )
    valid_FileExtensions.append ( "myCustomFileExtension" )
    
    #■■■■■  Get Current File Extension  ■■■■■■■■■■■■■■■■■■■■■■■■■
    
    window        = view.window()
    fileExtension = window.extract_variables()[ "file_extension" ]
    
    #■■■■■  Verify Current File Extension  ■■■■■■■■■■■■■■■■■■■■■■
    
    file_IsValid = False
    
    for entry in valid_FileExtensions:
        if fileExtension == entry:
            file_IsValid = True
    
    #■■■■■  Exit Routine If File Extension Is Invalid  ■■■■■■■■■■
    
    if file_IsValid == False:
        return
    

    或者;如果您更喜欢使用语法,可以使用:
    fileSyntax = view.settings().get ( "syntax" )

    可选;您可以在YourPlugin.sublime-settings 创建一个valid_FileExtensions 数组,以便用户可以指定插件适用于哪些扩展。

    【讨论】:

      【解决方案2】:

      这是我用于插件Markdown Preview的键绑定示例

      {
          "keys": ["ctrl+b"], "command": "markdown_preview", "args": {"target": "browser"},
          "context": [{ "key": "selector", "operator": "equal", "operand": "text.html.markdown" }]
      },
      

      如您所见,我使用的是通常绑定到 build 命令的键 ctrl+b,但它仅在我的光标位于“text.html.markdown”时才有效,这仅在降价文件中发生. 因此,ctrl+b 在我在另一种类型的文件中时通常会构建。

      此范围通常采用“text.html ...”或“source.python ...”形式。要查找光标所在范围的当前名称,请使用带有ctrl+alt+shift+p 的命令“show_scope_name”。

      Relevant documentation

      【讨论】:

        猜你喜欢
        • 2020-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-26
        • 2013-12-21
        • 1970-01-01
        • 2013-11-06
        • 1970-01-01
        相关资源
        最近更新 更多