2016-05-16 1 views
1

При создании языкового пакета для атома можно определить папку /snippets. Любые файлы здесь автоматически загружаются, когда пакет активен, и контекст (например: ".source.js") открывается в редакторе.atom package: необязательно загрузить фрагмент файла

Теперь я хотел бы внести свой вклад в пакет language-arma-atom, где в настоящее время есть 3 файла фрагмента: я хочу добавить флажок в настройках пакета, чтобы НЕ загружать один из этих файлов.

ie: Я знаю, как добавить параметр, но не как исключить один из этих файлов фрагментов.

+0

Кажется, нет крюка необязательно загружать фрагменты. См.: Https://github.com/atom/snippets/blob/master/lib/snippets.coffee#L81 Единственный способ, о котором я могу думать, - поместить «дополнительные» файлы в отдельную папку и скопировать их, когда опция поддержки проверяется в настройках. Я попробую это и дам ответ, если он сработает. – publicJorn

ответ

0

Так я решил это создать папку 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' в верхней части основного файла.

Кроме того, если вы выбираете этот метод, не забудьте положить в /settings.gitignore