TextMate es un editor de texto con interfaz gráfica de usuario de código abierto y gratuito para macOS creado por Allan Odgaard. TextMate incluye personalizaciones declarativas , pestañas para documentos abiertos , macros grabables , secciones plegables , fragmentos , integración con el shell y un sistema de paquetes extensible.
TextMate 1.0 fue lanzado el 5 de octubre de 2004, después de 5 meses de desarrollo, seguido por la versión 1.0.1 el 21 de octubre de 2004. [2] [3] [4] La versión se centró en implementar bien un pequeño conjunto de características , y no tenía una ventana de preferencias o una barra de herramientas, no integraba FTP y no tenía opciones para imprimir. [5] [6] Al principio, solo se admitía una pequeña cantidad de lenguajes de programación, ya que solo se habían creado unos pocos "paquetes de lenguaje". Aun así, algunos desarrolladores encontraron que esta versión temprana e incompleta de TextMate era un cambio bienvenido en un mercado que se consideraba estancado por el dominio de BBEdit durante una década . [7]
TextMate 1.0.2 salió al mercado el 10 de diciembre de 2004. En la serie de versiones beta de TextMate 1.1 , TextMate ganó características: una ventana de preferencias con una interfaz gráfica de usuario para crear y editar temas; una barra de estado con una lista de símbolos; menús para elegir el idioma y la configuración de las pestañas, y un "editor de paquetes" para editar personalizaciones específicas del idioma. El 6 de enero de 2006, Odgaard lanzó TextMate 1.5, la primera "versión estable" desde la 1.0.2. [8] Las críticas fueron positivas, en contraste con las versiones anteriores que habían sido criticadas. [9]
TextMate continuó desarrollándose hasta mediados de 2006. El 8 de agosto de 2006, TextMate recibió el premio Apple Design Award a la mejor herramienta para desarrolladores, en la Conferencia Mundial de Desarrolladores de Apple en San Francisco , California . [10] En febrero de 2006, el blog de TextMate expresó sus intenciones para futuras direcciones, incluyendo una mejor gestión de proyectos, con un sistema de complementos para soportar sistemas de archivos remotos como FTP, y sistemas de control de revisión como Subversion . [11] A lo largo de 2007, la aplicación principal cambió solo mínimamente, aunque sus "paquetes de idiomas" continuaron avanzando.
En junio de 2009, se anunció que TextMate 2 estaba completo en un 90 por ciento, pero con una lista final de características no revelada. [12] Una versión alfa pública se puso a disposición para su descarga en el blog de TextMate en diciembre de 2011, seguida de una versión candidata a lanzamiento a fines de 2016. En septiembre de 2019, se lanzó una versión final. [13]
En agosto de 2012, el código fuente de TextMate 2 se publicó en GitHub bajo los términos de la GPL-3.0 o posterior , [14] un intento del desarrollador de contrarrestar las restricciones que Apple impuso al software distribuido a través de la Mac App Store . [15] Odgaard afirmó que prefiere recibir parches como dominio público, ya que esto preserva su capacidad de lanzar una versión futura bajo una licencia más permisiva, o hacer que una versión esté disponible en la Mac App Store. Odgaard también afirmó que tiene un amigo que usa algunos de los marcos de trabajo de TextMate en un proyecto de código cerrado, y no podían incorporar parches publicados bajo GPL. [16] [17]
En octubre de 2021, se realizó el último commit en GitHub, aunque no se ha hecho ningún anuncio en el sentido de que el proyecto ha sido abandonado oficialmente y su código fuente todavía está disponible públicamente. [18]
Las gramáticas del lenguaje TextMate permiten a los usuarios crear sus propios modos de resaltado de sintaxis arbitrariamente complejos al asignar a cada palabra clave del documento un nombre único. [19] Utiliza una versión modificada del formato de lista de propiedades ASCII de Apple para definir gramáticas del lenguaje. [ cita requerida ] Estas gramáticas permiten definir reglas de anidamiento utilizando la biblioteca de expresiones regulares Oniguruma y luego asignarles "alcances" específicos: etiquetas compuestas que las identifican para la coloración.
A cada punto de un documento se le asignan uno o más ámbitos, que definen dónde se encuentra el punto en el documento, cómo debe colorearse y cuál debe ser el comportamiento de TextMate en ese punto. Por ejemplo, el título de uno de los enlaces de la sección “Enlaces externos” tiene el ámbito:
texto.html.mediawiki marcado.lista.mediawiki meta.link.inline.external.mediawiki cadena.otro.enlace.título.externo.mediawiki
Este alcance nos indica que estamos viendo un título de enlace dentro de un enlace dentro de una lista dentro de un documento MediaWiki.
Los temas de TextMate pueden marcar cualquier ámbito, con distintos niveles de precisión. Por ejemplo, un tema puede decidir colorear cada constante ( constant.*
) de manera idéntica, mientras que otro puede decidir que las constantes numéricas ( constant.numeric.*
) deben colorearse de manera diferente a los caracteres escapados ( constant.character.escape.*
). La sintaxis de ámbito jerárquico permite a los autores de lenguajes y de temas varios niveles de cobertura, de modo que cada uno puede optar por la simplicidad o la exhaustividad, según lo desee.
La documentación de TextMate proporciona una lista de nombres comúnmente utilizados en diferentes lenguajes de programación para la interoperabilidad entre paquetes. [19]
TextMate admite comandos definidos y editables por el usuario que son interpretados por bash o el intérprete especificado con un shebang . Los comandos pueden recibir muchos tipos de entrada por TextMate (el documento actual, el texto seleccionado, la palabra actual, etc.) además de las variables de entorno y su salida puede ser manejada de manera similar por TextMate en una variedad de formas. En su forma más simple, un comando puede recibir el texto seleccionado, transformarlo y reinsertarlo en el documento reemplazando la selección. Otros comandos pueden simplemente mostrar una información sobre herramientas , crear un nuevo documento para su salida o mostrarlo como una página web utilizando el renderizador HTML integrado de TextMate.
Muchos paquetes específicos de lenguajes como bash, PHP o Ruby contienen comandos para compilar y/o ejecutar el documento o proyecto actual. En muchos casos, la salida estándar (STDOUT) y la salida estándar (STDERR) del proceso del código se mostrarán en una ventana en TextMate.
En su forma más simple, los " fragmentos " de TextMate son fragmentos de texto que se pueden insertar en el documento en la ubicación actual mediante una pulsación de tecla sensible al contexto o la finalización con tabulación. Los fragmentos son "inteligentes", ya que admiten la actualización dinámica de "tabulaciones", el acceso a variables de entorno y la capacidad de ejecutar scripts en línea. Esto permite comportamientos complicados. Las tabulaciones se pueden recorrer en ciclos utilizando la tecla "tabulación" y admiten texto predeterminado, menús desplegables, para completar elementos del fragmento. Los resultados de estas tabulaciones se pueden cambiar dinámicamente en otra parte del fragmento, a medida que el usuario completa una parada. Se pueden utilizar variables de entorno de TextMate, que admiten información sobre el alcance actual, el número de línea o el nombre del autor, etc. Los fragmentos también tienen la capacidad de ejecutar scripts de shell en línea.
Las gramáticas, fragmentos, macros, comandos y plantillas de lenguaje TextMate se pueden agrupar en “paquetes” de funcionalidad. Cualquier fragmento, macro o comando se puede ejecutar presionando un atajo de teclado, escribiendo una palabra en particular y luego presionando la tecla “tabulador” (los llamados “activadores de tabulación”), o seleccionando el comando de un menú. Los activadores de tabulación son particularmente útiles; la combinación de activadores de tabulación y fragmentos facilita enormemente la codificación en lenguajes verbosos o lenguajes con patrones de tipeo comunes.
Los fragmentos, macros y comandos se pueden limitar a un ámbito particular, de modo que, por ejemplo, el comando “cerrar etiqueta html” no funcione en un script de Python, lo que libera ese atajo de teclado para que se use para otra cosa. Esto permite que los idiomas individuales, e incluso los ámbitos individuales, anulen comandos integrados como “Reformatear párrafo” con versiones más especializadas. Incluso se pueden anular teclas especiales como la tecla de retorno y la barra espaciadora.
Hay disponible un repositorio Subversion que contiene muchos más paquetes que los que se envían con el paquete del editor, para todo, desde Markdown hasta blogs y lenguaje ensamblador MIPS . [20]
Se pueden abrir varios documentos o carpetas a la vez en una ventana de proyecto de TextMate, que ofrece un cajón a lo largo de su costado que enumera los nombres de los archivos y carpetas, y una serie de pestañas en la parte superior. En TextMate 1.5, este cajón proporciona un medio para que los usuarios organicen archivos y carpetas de todo el sistema de archivos, así como la capacidad de crear carpetas virtuales para una mayor organización. Esta característica se eliminó de TextMate 2 y se reemplazó con un explorador de archivos común . Se puede realizar una búsqueda y reemplazo en todo un proyecto, y los comandos pueden interactuar con los archivos o carpetas seleccionados en el cajón. Los paquetes para CVS , Subversion, darcs y otros sistemas de control de revisión permiten a TextMate administrar código versionado.
TextMate tiene muchas características comunes a los editores de programación:
Además, TextMate admite funciones para integrarse bien con el entorno gráfico de OS X:
TextMate tiene algunas limitaciones en comparación con otros editores de su clase:
TextMate 1.5 ganó el premio Apple Design Award a la mejor herramienta para desarrolladores en 2006.
{{cite web}}
: Falta o está vacío |title=
( ayuda )El desarrollador de TextMate, MacroMates, anunció el jueves que el código para TextMate 2.0, actualmente en versión alfa, ya está disponible a través del repositorio en línea de GitHub. El código se está poniendo en código abierto para contrarrestar lo que algunos desarrolladores ven como una libertad cada vez más limitada de los usuarios y desarrolladores de Apple en la plataforma Mac.
al tiempo que pedían que los parches de código originales llevaran una licencia de dominio público. El problema, por desgracia, es el tira y afloja entre los principios del software libre y los deseos de las empresas comerciales.