Ist es möglich, ein Snippet nur an ein bestimmtes Projekt in Sublime anzuhängen?

4

Ich habe versucht, die Snippet-Dateien im Projektordner zu speichern, aber es funktioniert nicht. Hast du eine andere Idee?

Aminadav Glickshtein
quelle

Antworten:

5

Mit einem benutzerdefinierten Plugin

BEARBEITEN: Eine Verallgemeinerung des folgenden Plugins wurde unter veröffentlicht https://packagecontrol.io/packages/ProjectCompletions

Wenn Sie dieses Plugin in Ihrem Benutzerordner unter dem Namen ablegen ProjectCompletions.py

import sublime_plugin

class ProjectCompletions(sublime_plugin.EventListener):

    def on_query_completions(self, view, prefix, locations):
        return view.window().project_data().get("completions")

Sie können Vervollständigungen mit a injizieren "completions" Eintrag in Ihrer Projektdatei:

{
  "folders": ...
  "completions":[
      ["I", "I am a ${1:snippet} baby!"]
  ]
}

Das Format für Vervollständigungen ist [trigger, snippet]. Weitergehende Ansätze sind möglich, damit auch der Umfang berücksichtigt wird.

Animated Gif


Auf indirekte Weise mit dem Projektspezifisch Plugin

Wenn das installiert ist, kannst du das benutzen settings Schlüssel Ihrer Projektdatei, um zusätzliche Befehle zu installieren. Um ein Snippet zu aktivieren, können Sie dieses zu Ihrem Projekt hinzufügen:

{
    "folders": ...
    "settings": {
        "project-specific": {
            "sublime-commands": [
                {"caption": "My Snippet",
                 "command": "insert_snippet",
                 "args": {"contents": "I am a ${1:snippet} baby!"} }
            ]
        }
    ...
    }

}

und Sie finden den Befehl "Mein Snippet" in der Befehlspalette nur im aktuellen Projekt.

Sie können Schlüssel auch projektspezifisch binden. Indem Sie sie an die insert_snippet Mit diesem Befehl können Sie einen ähnlichen Effekt erzielen, ohne die Palette durchgehen zu müssen.

Bordaigorl
quelle
Vielen Dank, aber es ist kein Snippet (Snippet werden automatisch vervollständigt ...)
Aminadav Glickshtein
1
@Amina mit einem benutzerdefinierten Plugin ist es einfach, eine automatische Vervollständigung zu erhalten (siehe Bearbeiten)
Bordaigorl
BEEINDRUCKEND!!! Vielen Dank, getestet und funktioniert super. Ich möchte dir die Hälfte meiner Reputationspunkte geben :)
Aminadav Glickshtein
1
Wenn ich die Zeit finde, die ich für die Paketkontrolle einpacken werde, kann dies auch für andere nützlich sein (ich eingeschlossen!)
Bordaigorl
3
@ Amina gerade veröffentlicht! packagecontrol.io/packages/ProjectCompletions (Unterstützt auch bereichsspezifische Ergänzungen, siehe Readme)
Bordaigorl