2012-06-13 4 views
10

Est-il possible de définir une sorte de fonction capitalize() ou toLowerCase() lors de la création de fragments Sublime Text 2?toLowerCase ou capitaliser des fonctions pour Sublime Text 2 Snippets

Par exemple:

<snippet> 
<content><![CDATA[ 
<?php 
class ${1} extends Datamapper 
{ 
    var \$has_one = array(); 
    var \$has_many = array(); 
    var \$table = '${1}s'; 
    //constructor and other stuff next... 
} 
?> 
]]></content> 
<tabTrigger>dmm</tabTrigger> 
</snippet> 

Cet extrait particulier me permet de créer DataMapper modèles ORM à la volée. Lorsque je tape dmm l'extrait est déclenché et mon curseur est placé dans deux zones en même temps; le nom de la classe & l'affectation à $table. Le premier curseur nécessite une majuscule, contrairement au second curseur. Puis-je forcer le cas de Snippet? Quelque chose comme {1.toLowerCase}

Exemple simple, mais je peux penser à d'autres moments où je pourrais utiliser cela.

Répondre

16

Vous pouvez utiliser substitution et Perl format string syntax

J'ai testé ce code:

<snippet> 
<content><![CDATA[ 
<?php 
class ${1} extends Datamapper 
{ 
    var \$has_one = array(); 
    var \$has_many = array(); 
    var \$table = '${1/(.+)/\L\1/g}s'; 
    //constructor and other stuff next... 
} 
?> 
]]></content> 
<tabTrigger>dmm</tabTrigger> 
</snippet> 

Cordialement, Armando

+0

Excellent, merci Armando! –

+1

J'essaie d'utiliser ce code, mais il plante ST ... est-ce tout ce qu'il ya à faire? copier et coller devrait fonctionner? – Pier

+1

Bonjour @Pier. Je l'ai testé avec la dernière version de Sublime Text 2 ([build 2200] (http://www.sublimetext.com/dev)) en créant un nouvel extrait (Tools> New Snippet ...) et en le stockant par défaut dossier (Packages/Utilisateur) – aanton