web-dev-qa-db-fra.com

Atom Editor: plusieurs extraits

C'est une question si simple, mais je ne trouve aucune documentation à part le readme.

Comment puis-je avoir plusieurs extraits personnalisés dans Atom Editior:

Par exemple, j'ai ceci dans mon snippets.cson en ce moment

'.source.js':
  'Normal Comment Block':
    'prefix': 'cmm'
    'body': """
      //**********************************************************************************
      //
      //**********************************************************************************
    """

'.source.js':
  'Dashed Comment Block':
    'prefix': 'c--'
    'body': """
      //----------------------------------------------------------------------------------
      //
      //----------------------------------------------------------------------------------
    """

Mais cmm ne fonctionne pas, je ne peux utiliser que le dernier élément du fichier snippets.cson. Des idées pour résoudre le problème? J'ai une douzaine d'extraits à utiliser, mais je ne sais pas comment les inclure correctement.

17
TheMcMurder

Le format du fichier de configuration s'appelle CSON, CoffeeScript Object Notation. Comme JSON (JavaScript Object Notation), il s’agit d’un format de texte permettant de décrire des objets simples. De ce fait, lorsque vous spécifiez une clé deux fois, telle que .source.js dans votre exemple, la deuxième instance remplace la première. Si vous avez simplement un .source.js tout fonctionnera correctement:

'.source.js':
  'Normal Comment Block':
    'prefix': 'cmm'
    'body': """
      //**********************************************************************************
      // $1
      //**********************************************************************************
      $0
    """
  'Dashed Comment Block':
    'prefix': 'c--'
    'body': """
      //----------------------------------------------------------------------------------
      // $1
      //----------------------------------------------------------------------------------
      $0
    """

De plus, j'ai pris la liberté d'ajouter des taquets de tabulation à vos extraits afin que, lorsque vous développez l'extrait, votre curseur se positionne d'abord dans le commentaire. Vous pouvez entrer votre commentaire puis appuyer sur TAB sortir et continuer.

44
Lee

En plus de l'explication de @ Lee, voici un exemple si vous souhaitez configurer plusieurs extraits organisés par langage de programmation:

# HTML Snippets
'.text.html':
  'HTML Comment':
    'prefix': '<!'
    'body': '<!-- $1 -->'

# Sass Snippets
'.source.scss':
  'Section Comment':
    'prefix': 'sc'
    'body': """
      /*=================================================
      $1
      =================================================== */
    """
  'Sub Section Comment':
    'prefix': 'ssc'
    'body': """
      /* $1
      =================================================== */
     """

# JavaScript Snippets
'.source.js':
  'jQuery - Bind Event':
    'prefix': 'bind'
    'body': """
       $( $1 ).on( '$2', '$3', function( $4 ) {
         $5
       });
    """

Sur cet exemple, j'ai inclus HTML, Sass et Javascript, mais vous pourriez en inclure d'autres comme CSS, ...

J'espère que c'était utile.

10
Sérgio

Trouvé un bug étrange avec plusieurs extraits dans Atom. J'espère que cette réponse pourra aider quelqu'un avec le même problème (j'utilise la version Mac d'Atom). Je suis donc allé ajouter un nouvel extrait au fichier snippets.cson. J'ai copié l'ancien extrait et l'ai collé ci-dessous en tant que modèle, puis je les ai sauvegardés, même s'ils étaient identiques. '.source.php': 'Debug': 'prefix': 'prepr' 'body': """ echo "<pre>",print_r($_POST, 1),"</pre>"; die(); """ 'Debug': 'prefix': 'prepr' 'body': """ echo "<pre>",print_r($_POST, 1),"</pre>"; die(); """ J'ai un titre, un préfixe et un code de corps différents. '.source.php': 'Debug': 'prefix': 'prepr' 'body': """ echo "<pre>",print_r($_POST, 1),"</pre>"; die(); """ 'different': 'prefix': 'different' 'body': """ echo "different"; """ J'ai enregistré de nouveau après avoir modifié le deuxième extrait. Cette fois, l'onglet développé pour le deuxième extrait ne fonctionnerait pas, mais le premier fonctionnait toujours. Après m'être bien amusé avec la syntaxe voulue pour vérifier que j'avais la syntaxe correcte, j'ai essayé de penser que c'est peut-être parce que j'ai enregistré avec deux extraits dupliqués que cela a dérangé la sortie cson. J'ai ensuite supprimé le deuxième extrait, puis je l'ai sauvegardé avec uniquement le premier, puis dupliqué le premier, puis modifié, puis sauvegardé. Après tout, les deux extraits fonctionnaient normalement.

J'utilise plusieurs extraits depuis un moment et je n'ai jamais vraiment rencontré ce problème jusqu'à présent. Si étrange mais ça y est.

4
kiko carisse

J'ai eu le même problème, voici le correctif:

'.source.js':
  'First function':
    'prefix': 'first'
    'body': """
    function $1() {
      var overall = true;
      if (overall)
      {
        var result = {};
        result.test1 = "";
        return test2(result);
      }
      return catched("");
    } """,

  'Next function':
    'prefix': 'next'
    'body': """
    function $1(result) {
      var overall = true;
      if (overall)
      {
        result.test1 = "";
        return test2(result);
      }
      return catched("");
    } """,

  'Next next function':
    'prefix': 'pz'
    'body': """
    function $1(result) {
      var overall = true;
      if (overall)
      {
        result.test1 = "";
        return test2(result);
      }
      return catched("");
    } """

S'il vous plaît noter que vous devez faire un certain nombre de choses:

  1. Ajoutez une virgule (,) après chaque "" ".
  2. Commencez la prochaine définition dans la même ligne de départ de la définition précédente! Je ne comprenais vraiment pas pourquoi cela fonctionnait comme ça… mais… c'est le cas.
  3. Utilisez '.source.PROGRAM LANGUAGE': une seule fois par langue.

Accueil ça aide :)

0
Raz

Le début de l'extrait suivant avec une virgule suivi d'une nouvelle ligne en donnant la même structure que la première fonctionnait pour moi.

'.source.php':
'var dump':
'prefix': 'vd'
'body': """
    echo "<pre>";
    var_dump($);
    echo "</pre>";
""",

'this->db':
'prefix': 'trans'
'body': """
    $this->db->trans_start();
""",

'comment block':
'prefix': 'cm'
'body': """
    /****************************************
    *
    *
    ****************************************/
"""
0