Emmet: Ist es möglich, die Reihenfolge der Attribute bei der Verbreitung in HTML zu steuern?

Erstellt am 3. Nov. 2015  ·  18Kommentare  ·  Quelle: emmetio/emmet

Ich möchte das Attribut class immer als erstes Attribut haben.

Möchten Sie dieses Problem unterstützen? Setzen Sie ein Kopfgeld darauf! Wir akzeptieren Prämien über Bountysource .

Enhancement

Hilfreichster Kommentar

Die Frage ist bis heute aktuell.
@sergeche Wie stehen die Chancen, dass diese Aufgabe auf die TODO-Liste kommt?

Alle 18 Kommentare

Normalerweise werden alle Attribute in der Reihenfolge angezeigt, in der sie in der Abkürzung vorkommen, es sei denn, für die Abkürzung ist ein Snippet mit anderen Attributen angegeben. Hier ändern Sie einfach die Snippets selbst und fügen class an der richtigen Stelle ein leeres Attribut

@sergeche
label.clasname<label for="" class="clasname"></label>
a.classname<a href="" class="classname"></a>
a[class=classname href="goo"]<a href="goo" class="classname"></a>

Normalerweise werden alle Attribute in der Reihenfolge angezeigt, in der sie in der Abkürzung erscheinen,

Nein )

aber wie erstellt man ein solches Snippet, das zum Beispiel funktioniert: a.classname<a class="classname" href=""></a> ?

Denn für a Schnipsel: https://github.com/emmetio/emmet/blob/master/lib/snippets.json#L691

Lösung: Entweder dieses Snippet löschen (mit einem leeren Wert überschreiben: "a": null ), oder es ändern: "a": "<a class=\"\" href=\"\"> , aber dann wird das Attribut class immer angezeigt . Oder erstellen Sie ein neues Snippet, das keine Attribute im Element <a> .

HM...
schrieb "a": null, - http://take.ms/BHuO6
nichts hat sich geändert: a.classname<a href="|" class="classname"></a>

schrieb "a": "<a class=\"\" href=\"\">" - http://take.ms/98CIZ
nicht verwendbar: a.classname<a class="" href="">|

schrieb "a": "<a>",
nein-nein-nein-nein, David Blaine, NEIN: a.classname<a>

Verstehe ich richtig, dass die Antwort auf meine Frage "auf keinen Fall" lautet? Oder mache ich etwas falsch? )

Es ist praktisch, dies zu tun - Sie müssen auf keinen Fall den Kernel ändern, damit Sie Sortierprioritäten für Attribute festlegen können

In welcher Datei etwas graben? :)

Alternativ: https://github.com/emmetio/emmet/blob/master/lib/filter/html.js#L21
Im Prinzip können Sie einen eigenen Filter schreiben, der die korrekte Ausgabe erzeugt, und diesen als Erweiterung anschließen, um den Kernel nicht zu berühren.

Die Option mit dem Filter ist viel besser (ich hasse es, in den Kern der Anwendung vorzudringen). Wo kann ich etwas über die API lesen? Oder vielleicht ein paar Beispiele?

Die Frage ist bis heute aktuell.
@sergeche Wie stehen die Chancen, dass diese Aufgabe auf die TODO-Liste kommt?

Sie können Ihren Filter schreiben und einen Pull Request stellen. Es gibt keine Dokumentation zu Filtern, aber dies ist eine gängige Funktion, die eine geparste Abkürzung in Form eines Baumes als Eingabe akzeptiert und diese ändern kann, z. B. Swap-Attribute

Snippet neu definiert für a (http://s020.radikal.ru/i717/1703/c0/8127577c2b25.png), ohne Filter funktioniert es wie es soll: a.xxx -> <a class="xxx" href=""></a>
Bei Verwendung des bem-Filters ist das Ergebnis jedoch falsch, der Klassenname wird dupliziert:
a.xxx|bem -> <a class="xxx xxx" href=""></a>
div.yyy>a.-xxx|bem -> <a class="yyy__xxx -xxx" href=""></a>
Kann man das irgendwie vermeiden? @sergeche

@DDyst diese Funktion ist im neuen Kernel enthalten, der sich noch in der Alpha-Version für Atom befindet

Wie kann man es anschauen/ausprobieren? )

Sergey, Tipp zumindest in welcher Datei man genau nach dieser Möglichkeit suchen muss - ich schaue mir die Dateistruktur hat sich viel verändert O_o... Bislang ist es möglich das direkt im Kernel nur richtig anzupassen?
Ja, und | bem – wie nun?
Shl .. Und ich dachte, dass Emmet nicht mehr besser sein könnte, aber hier kommt das !!))

  1. Gehen Sie zu den Benutzereinstellungen von Emmet:
    Einstellungen -> Paketeinstellungen -> Emmet -> Einstellungen Benutzer
  2. Fügen Sie den folgenden Ausschnitt ein:
{
  "snippets": {
    "html": {
      "abbreviations": {
        "a": "<a class='' href=''>"
        }
      }
    }
}

Nun, wir bekommen immer alle Links mit Klassen :)

Die anfängliche Implementierung des Kombinierens von Attributen in umgekehrter Reihenfolge beim Auflösen von Snippets wurde vorgenommen: zuerst diejenigen, die in der Abkürzung geschrieben sind, dann diejenigen, die im Snippet deklariert sind (siehe Link zum Commit oben). Ist dies dem erwarteten Verhalten ähnlich?

Eine andere Möglichkeit besteht darin, implizite Attribute (mit einem Ausrufezeichen am Anfang) im Snippet zu deklarieren: "foo": "my-tag[title !class]" Die Essenz impliziter Attribute besteht darin, dass sie nur angezeigt werden, wenn sie einen Wert haben. Das heißt, mit impliziten Attributen können Sie die Reihenfolge angeben, in der Attribute angezeigt werden sollen, unabhängig von der Reihenfolge, in der sie in der Abkürzung deklariert wurden

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

sergeche picture sergeche  ·  25Kommentare

midgethoen picture midgethoen  ·  8Kommentare

fversepuy picture fversepuy  ·  5Kommentare

HeikoMamerow picture HeikoMamerow  ·  16Kommentare

planetoftheweb picture planetoftheweb  ·  3Kommentare