2016-05-16 13 views
1

Wenn Sie ein Sprachpaket für Atom erstellen, ist es möglich, einen /snippets Ordner zu definieren. Alle Dateien hier werden automatisch geladen, wenn das Paket aktiv ist und der Kontext (zB: ".source.js") im Editor geöffnet ist.atom-Paket: optional laden Snippet-Datei

Jetzt möchte ich zum Paket language-arma-atom beitragen, wo es derzeit 3 ​​Snippet-Dateien gibt: Ich möchte eine Checkbox-Option in den Paketeinstellungen hinzufügen, um eine dieser Dateien NICHT zu laden.

IE: Ich weiß, wie Sie die Option hinzufügen, aber nicht, wie Sie eine dieser Snippet-Dateien ausschließen.

+0

Es scheint, gibt es keine Hakenlast Schnipsel optional. Siehe: https://github.com/atom/snippets/blob/master/lib/snippets.coffee#L81 Die einzige Möglichkeit, die ich mir vorstellen kann, ist die "optionalen" Dateien in einem separaten Ordner zu setzen und sie zu kopieren, wenn Die Support-Option wird in den Einstellungen überprüft. Ich werde das ausprobieren und eine Antwort geben, wenn es funktioniert. – publicJorn

Antwort

0

So wie ich löste dies einen snippetsAvailable Ordner erstellen war, legen Sie die Dateien dort (und entfernen Sie den snippets Ordner) *.

In Ihrem Haupt-Paketdatei, fügen Sie Ihre config schema:

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

Und in Ihrem Paket der Aktivierung etwas tun, wie folgt aus:

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" 
    } 

* Hinweis: ich das copyNewer Paket verwendet wird, weil es mir erlaubt, den /snippets Ordner zu entfernen, dh: es wird es automatisch neu erstellen. Noch wichtiger ist, dass die Snippets-Datei bei jeder Paketaktivierung nicht überschrieben wird. Außer wenn Sie Ihr Paket mit neuen Snippets aktualisiert haben.

Offensichtlich müssen Sie copyNewer = require 'copy-newer' an der Spitze Ihrer Hauptdatei schreiben.

Auch, wenn Sie diese Methode wählen, vergessen Sie nicht, /settings in setzen .gitignore