原子包:可选地加载片段文件

atom package: optionally load snippet file

在为 atom 创建语言包时,可以定义一个 /snippets 文件夹。当包处于活动状态并且上下文(例如:".source.js")在编辑器中打开时,此处的任何文件都会自动加载。

现在我想为 language-arma-atom 包做贡献,其中目前有 3 个片段文件:我想在包设置中添加一个复选框选项以不加载这些文件之一。

即:我知道如何添加选项,但不知道如何排除这些片段文件之一。

我解决这个问题的方法是创建一个 snippetsAvailable 文件夹,将文件放在那里(并删除 snippets 文件夹)*.

在您的主包文件中,添加到您的 config schema:

config:
  optionalSnippets:
    title: "My optional snippets"
    description: "Adds optional snippets to autosuggestions"
    type: "boolean"
    default: true

然后在您的程序包激活中执行如下操作:

activate: ->
  @subscriptions = new CompositeDisposable

  # etc..

  atom.config.observe 'my-package.optionalSnippets', (checked) ->
    # For copyNewer, see note below *
    copyNewer "my-snippets", "#{__dirname}/snippets", {
      cwd: "#{__dirname}/snippetsAvailable"
    }

* 注意: 我使用了 copyNewer 包,因为它允许我删除 /snippets 文件夹,即:它会自动重新创建它.更重要的是,它不会在每次激活包时覆盖片段文件;除非你用新的片段更新了你的包。

显然,您必须在主文件的顶部写上 copyNewer = require 'copy-newer'

还有,如果你选择这种方式,别忘了在.gitignore

中加上/settings