Créer des commandes personnalisées
Par pojem le mardi, 18 octobre 2011, 10:00 - Geany - Lien permanent
Les commandes personnalisées de Geany permettent d'éxécuter une commande d'insertion de code à partir (ou non) d'une sélection.
Prenons l'exemple fastidieux de création de constantes en PHP :
define("MA_CONSTANTE_EN_MAJUSCULE", "ma_chaine_de_caracteres");
où finalement la constante prendra grosso modo le même nom que la chaîne du moins par défaut.
C'est une bonne pratique qui évite de reparcourir tout le code si le contenu de la constante venait à changer.
J'ai eu autrefois l'occasion de travailler avec des macros sous PSPAD, un éditeur (windows). Les macros consistaient à enregistrer des séquences de texte et de leur associer une touche de raccourci.
En réalité, les combinaisons étaient limitées par les 2 touches de raccourcis affectées (F5 et shift+F5 de mémoire). Mais c'était toujours ça.
Avec Geany, les macros s'appellent commandes personnalisées. Le progrès, c'est que si les touches de raccourcis sont limitées à 3, le nombre de commandes semble lui illimité.
Créer une commande personnalisée :
Menu>Édition>Format>Envoyer la sélection vers>Définir les commandes personnalisées
En l'occurence, la commande magique à insérer :
sed 's/\(.*\)/define("\U\1","\E\1");/'
- Le \(.*\), c'est pour dire que toute la sélection est concernée,
- Le \U met la sélection (\1) en majuscule, le \E annule le \U (suis-je clair ?).
Vérification :
Je tape 'NamE' dans Geany,
Je sélectionne,
Je tape le raccourci <ctrl>1, et ...
Ça marche pas! Merdre !
Pour la petite histoire, je suis allé dans les raccourcis (Édition>Préférences>Raccourcis), et j'ai remplacer le raccourci <Control>1 par <Shift><Control>1 et là ça marche.
define("NAME","NamE");
Stupendo !
Pour tester les commandes, rien de tel qu'un bon vieux terminal, juste envoyer la sélection à sed par 'echo "<selection>" |' :
echo "NamE" | sed 's/\(.*\)/define("\U\1","\E\1");/'
Liens :
- Manuel de Geany : http://geany.org/manual/#sending-te...
- Un manuel de sed : http://www.gnu.org/software/sed/man...