Ahorrando tiempo con TextMate y Subversion

Como llevo una temporada sin postear, aprovecho unos segundos de tiempo libre para contaros un pequeño truco motivado por el espíritu de la Infinita Vagancia™ y el típico comentario de “molaría que TextMate hiciera…” (en este caso, de David Alonso)

El truco de hoy es la típica chorrada que te molesta 80 veces al día, y cuando la resuelves te das cuenta de lo poco que nos queremos en general (resolverlo no llevó más de 2 minutos)

Escenario: usas Subversion desde línea de comando, pero escribes tus mensajes de commit con TextMate (y si no lo haces, ahora te cuento cómo)

Problema: cuando escribes tu mensaje de commit, tienes que guardar el documento y luego cerrarlo para que se “registre” el mensaje y se haga el commit.

Idea: guardar y cerrar con un atajo de teclado, pero sólo en los mensajes de commit de Subversion.

Usando TextMate como editor de mensajes de commit

Si quieres usar TextMate para editar tus mensajes de commit, la cosa es bastante simple. Tienes que asegurarte de tener instalada la utilidad “mate” (usando el menú “Help » Terminal Usage…”) y añadir esto en tu fichero .bash_profile:

export SVN_EDITOR='mate -w'

Para ello, cuando hayas instalado ‘mate’ puedes abrir una ventana de Terminal.app (que por defecto inicia una sesión en tu carpeta $HOME) y escribir:

mate .bash_profile

Se abrirá el fichero .bash_profile si existe, y si no se creará.

Añade la línea “export …” donde quieras, cierra el fichero y cierra la ventana de Terminal.app (necesitas abrir una nueva para que el fichero .bash_profile se vuelva a leer)

Siguiente paso: el comando de TextMate

Una de las múltiples maravillas de TextMate es el sistema de “scoping”.

De una forma muy simplificada, el “scoping” es una forma de identificar qué tipo de texto estás editando. Mediante un sistema de expresiones regulares, TextMate puede reconocer en qué lenguaje estás programando; Y dentro de ese lenguaje, si estás editando un String, una función, un número…

Afortunadamente, los tipos que mantienen el bundle de Subversion tuvieron la deferencia de identificar cuándo un fichero es un mensaje de commit de Subversion.

El scope para un mensaje de commit es

text.subversion-commit

Otra maravilla de TextMate es que puedes limitar un comando a un scope, de forma que podemos escribir un comando que sólo funcione cuando estamos editando un mensaje de commit.

Para hacer nuestra vida más fácil, vamos a crear un comando que guarde y cierre el documento actual, y asignarlo a la combinación de teclas ⌘ + S (que ya estamos usando para guardar)

Así que abrimos el editor de Bundles con ⌃ + ⌥ + ⌘ + B y creamos un nuevo comando en el bundle de Subversion:

Nuevo Comando de TextMate

Le asignamos un bonito nombre:

Nombrando el Comando

lo rellenamos de contenido:

Comando Save and Commit

y cerramos la ventana del Bundle Editor.

A partir de ahora, cuando escribamos

svn ci nuestro_bello_fichero_modificado

se abrirá una ventana de TextMate con esta pinta:

Ventana de Commit

donde podemos escribir nuestro mensaje de commit, y al pulsar ⌘ + S para guardar, se cerrará automáticamente y empezará nuestro commit :)

Y eso es todo, de momento…

Arreglando las teclas Inicio y Fin en Mac

Si eres un usuario de Mac que viene del mundo Windows (o Linux) te habrás dado cuenta de que el comportamiento de las teclas “Inicio” y “Fin” en Mac no tiene nada que ver con otros sistemas operativos.

Lo mismo sucede con las teclas “Avanzar Página” y “Retroceder Página”, que en Mac avanzan y retroceden, pero no mueven el cursor de sitio…

Si quieres que la tecla “Inicio” vaya al principio de la línea, la tecla “Fin” vaya al final, y las teclas de Avanzar y Retroceder página funcionen de una forma racional, sólo tienes que crear un ficherito de texto con este contenido:

{
  "\UF729"  = "moveToBeginningOfLine:";
  "$\UF729" = "moveToBeginningOfLineAndModifySelection:";
  "\UF72B"  = "moveToEndOfLine:";
  "$\UF72B" = "moveToEndOfLineAndModifySelection:";
  "\UF72C"  = "pageUp:";
  "\UF72D"  = "pageDown:";
}

y guardarlo en ~/Library/KeyBindings/DefaultKeyBinding.dict (creando la carpeta si no existe todavía)

Poseso! :)

Capturando webs con Paparazzi, the lazy way

Si trabajas pintando webs, o tienes que enviar pantallazos de páginas, o guardas un archivo de sitios, o si tu trabajo tiene remotamente que ver con internet y con imágenes, Paparazzi es una herramienta que no debe faltar en tu arsenal.

Si además eres un vago redomado y ni siquiera Quicksilver es suficientemente cómodo para tí, aquí tienes un regalito: un bookmarklet que capturará en Paparazzi la URL que estés visitando en ese momento.

Shot this! (el enlace tiene Javascript, así que no lo verás en Bloglines. Gracias a Belingo por el tip :)

Arrastra el link a tu barra de favoritos, y tendrás tus capturas de pantalla a un sólo click de ratón (o, si tu nivel de vagancia alcanza las más altas cotas, pulsando ⌘ + numerodefavorito):

Safari Bookmark Shortcuts

El bookmarklet está probado en Safari, Camino y Firefox (en los dos últimos tendrás que marcar un checkbox de seguridad la primera vez que lo ejecutes)

¡A capturar!

Technorati tags:

Trucos Mac: Navegando con la tecla ⌘

Inauguramos la sección de trucos para Mac con uno bastante chorra…

En casi todas la aplicaciones de Mac (las que están bien hechas, vaya…) si hacemos ⌘ + Click en el título de la ventana (justo donde está el nombre del documento) nos aparecerá un desplegable con la ruta del documento.

Apple + Click

Si seleccionamos uno de los elementos de la lista, se nos abrirá una venta del Finder con la carpeta seleccionada.

Extra bonus: Si lo hacemos en Safari, podemos ascender por la estructura de carpetas de un site:

Apple + Click en Safari