TextMate | |
![]() | |
Développeur | Allan Odgaard |
---|---|
Dernière version | 1.5.9 révision 1510 [+/−] |
Environnement | Mac OS X |
Type | Éditeur de texte |
Licence | Licence propriétaire |
Site Web | macromates.com |
modifier |
TextMate est un éditeur de texte générique pour Mac OS X. Il combine la puissance des éditeurs de texte tels que Vim et Emacs avec la simplicité et l'élégance du GUI d'un programme Macintosh.
La plupart de ses utilisateurs sont des programmeurs parce que TextMate est conçu pour s'intégrer naturellement dans le workflow de la programmation agile. La plupart des contributeurs principaux de Ruby on Rails utilisent TextMate. La puissance de TextMate a pour conséquence que la courbe d'apprentissage est plus difficile que celle d'éditeurs plus simples.
Les fonctionnalités les plus notables sont les projets dont les fichiers sont sélectionnables par des onglets, les macros enregistrables, le pliage de code, la gestion de snippets, l'intégration au shell et le support d'extensions appelées paquets (bundles).
TextMate 1.5 a gagné l'Apple Design Award du meilleur outil de développement informatique en 2006. Fort de cette reconnaissance, le logiciel est régulièrement imité, notamment pour des portages vers Linux ou Windows.
La version 2.0 de TextMate utilise des fonctionnalités spécifiques à Mac OS X 10.5 (Leopard) comme CJC.
TextMate inclut des fonctionnalités qui le distinguent d'autres éditeurs. Ses macros, commandes et snippets permettent l'optimisation de comportements complexes et son système de portées inspiré du système de feuilles de style en cascade de HTML le distingue aujourd'hui des autres éditeurs de texte, permettant la coloration syntaxique d'entités arbitrairement imbriquées.
TextMate permet aux utilisateurs de créer leur propre coloration syntaxique en utilisant une version modifiée des listes de propriétés d'Apple en ASCII pour définir des grammaires de langage. Ces grammaires permettent l'imbrication de règles. Ces règles sont définies en utilisant la bibliothèque d'expressions régulières de Oniguruma.
Chaque endroit du document appartient donc à une ou plusieurs portées, qui définissent où cet endroit est dans le document, comment il doit être coloré, et quel comportement TextMate doit avoir à cet endroit. Par exemple, le titre de l'un de ces liens dans la section "liens externes" aura la portée :
text.html.mediawiki markup.list.mediawiki meta.link.inline.external.mediawiki string.other.link.title.external.mediawiki
Cette portée nous dit que nous avons affaire à un titre de lien dans un lien dans une liste dans un document MediaWiki.
Les thèmes de TextMate peuvent colorer toutes les portées qu'ils choisissent, à différents degrés de précision. Par exemple, un thème peut décider de colorer chaque constante (constant.*
) de manière identique, alors qu'un autre peut décider de colorer les constantes numériques (constant.numeric.*
) de manière différente des caractères échappés (constant.character.escape.*
). La syntaxe des portées imbriquées permet aux auteurs des grammaires de langages et aux auteurs des thèmes différents niveaux de couverture, de sorte que chacun peut choisir entre la simplicité ou la complétude.
Sous sa forme la plus simple, la gestion de snippets permet d"insérer un snippet au point d'insertion courant. Mais des comportement plus sophistiqués sont possibles, fondés sur des généralisations de la notion de snippet. D'abord les snippets peuvent inclure une ou plusieurs "stations de tabulations" au travers desquelles on peut cycler avec la touche de tabulation. Ensuite, les résultats de ces "stations de tabulations' peuvent être dynamiquement changés dans d'autres portions du snippet, lorsque l'utilisateur remplit le contenu de la station courante. Finalement, les snippets ont accès aux variables d'environnement courantes de TextMate telles que la portée courante, le numéro de ligne courant, le nom de l'auteur et ont aussi la capacité d'appeler des scripts.
TextMate, comme beaucoup d'éditeurs avant lui, permet à l'utilisateur d'enregistrer une série d'actions dans des macros temporaires pour l'optimisation des tâches répétitives. Les macros utilisées peuvent être sauvées pour une utilisation ultérieure. Les macros peuvent inclure d'autre fonctionnalités d'automation dont d'autres macros.
Comme la plupart des éditeurs de texte, TextMate permet aux utilisateurs d'exécuter des scripts appelés par des raccourcis claviers ou des menus. Les commandes lisent la ligne de shebang pour déterminer le langage de script utilisé par la commande. Ce peut être par exemple Bash, Ruby, Python ou AppleScript. Via AppleScript, les commandes TextMate peuvent interagir avec d'autres programmes Mac. Le texte du document ou de la sélection peut être envoyé dans un tube UNIX et est disponible pour les scripts via stdin. Ces scripts reçoivent aussi l'état du document via des variables d'environnement. Il existe diverses options de sortie, telles que la visualisation dans une fenêtre séparée via le WebKit, le remplacement du texte sélectionné, ou l'insertion du texte comme snippet.
Les grammaires de langage, les snippets, les macros, les commandes et les patrons peuvent être groupés en des "paquets" de fonctionnalités. La plupart des snippets, macros ou commandes peuvent être exécutés grâce à un raccourci clavier, en tapant un mot particulier et en pressant la touche tabulation (appelé déclencheur par tabulation) ou en sélectionnant la commande dans un menu. Les déclencheurs par tabulation sont particulièrement utiles. La combinaison de déclencheurs par tabulation et de snippets facilite beaucoup la programmation dans les langages verbeux ou les langages avec des motifs textuels récurrents.
Les snippets, macros et commandes peuvent être limités à une portée particulière. Ainsi, la balise de fermeture html n'a pas d'intérêt dans un script Python, libérant ainsi le raccourci clavier pour quelque chose d'autre. Cela permet à des langages individuels, voire des portées individuelles, de prendre le pas sur les commandes par défaut. On peut ainsi remplacer le "reformattage de paragraphe" par des versions plus spécialisées. Même les touches les plus communes comme la touche retour chariot ou l'espace peuvent avoir leur comportement modifié pour rendre plus facile le codage en un langage particulier.
36 paquets sont délivrés avec TextMate, et un dépôt Subversion contient 121 paquets, qui supportent des choses aussi diverses que Markdown, l'activé de blog ou le langage d'assemblage de MIPS. Un paquet MediaWiki a été récemment ajouté.
Plusieurs documents ou répertoires peuvent être ouverts en même temps dans une fenêtre de projet TextMate qui fournit un tiroir sur le côté. Ce tiroir liste les noms de fichier ou de répertoire. Une série d'onglets au sommet de la fenêtre TextMate liste les fichiers ouverts. Les recherches et les remplacements peuvent être faits à travers tout un projet, et les commandes peuvent interagir avec les fichiers ou répertoires sélectionnés dans le tiroir. Les paquets pour CVS, Subversion, darcs, SVK ou d'autres Logiciels de gestion de versions permettent de gérer du code versionné à l'intérieur même de TextMate.
TextMate propose d'autres fonctionnalités notables :
TextMate comporte quelques limitations: