Archive for August, 2007

Gedit y su Modelines plugin

Tuesday, August 28th, 2007

Estoy muy contento ya que hice un gran descubrimiento en gedit!

Si conoces a algún old-school coder linuxero, habrás observado que muchos de ellos prefieren no usar tab para indentar. O acaso será me ha tocado escucharlos quejarse mucho de ellos? Sepa la goma!

La cosa es que siempre se han quejado de que, como los tabs son un espacio indefinido, pueden llegar a desfigurar el código.

Por ejemplo, si tu defines, en vim, una anchura de 8 espacios para tus tab, el código hecho con 2 o 4 columnas en mente sobrepasará la barrera de las 80 columnas y eso desfigurará el código ya que, en la mayoría de los casos, lo wrappeará. Esto es pecado para algunos programadores de C.

Bueno, pues lo único que sé es que descubrí algo, y seguramente muchos de ustedes ya lo sabían, acerca de gedit.

En vim, emacs y kate, existe un método para forzar ciertos valores a ciertas opciones, éstos se llaman Modelines. En mi caso, voy a usar algunos modelines de vim para poner un ejemplo.

Digamos que escribiste tu código y lo indentaste para que quedara precioso! Lo hiciste teniendo una configuración de 4 columnas por tab. Bueno, pues a la hora que Piotr, de Russia, donde prefieren 8 columnas por , abra tu código, dirá: “Malditos mexicanos, porrr eso nadie quierrre leerrrr su código, hijos de su mamushka!!” ya que tu código se habrá desfigurado en su monitor.

Para evitar esto, lo que haces es poner unas lineas al final, en las cuales definiras un espacio de 4 columnas para tus tab. Esto hará feliz a Piotr y mantendrá el código de los mexicanos en alto nombre!

Un ejemplo real:

Archivo sin modlines para tí
<?php

if ( $x = 123456 ) {
world_destruction( $x );
} else {
echo ‘Due to a mistype or something else, your password verification returned an error. I’m sorry, world destruction will need to wait.’;
}

?>

Archivo sin modlines para Piotr
<?php

if ( $x = 123456 ) {
world_destruction( $x );
} else {
echo ‘Due to a mistype or something else, your password verification returned an error. I’m sorry, world destruction will need to wait.’;
}

?>

Archivo con modlines para tí
<?php

if ( $x = 123456 ) {
world_destruction( $x );
} else {
echo ‘Due to a mistype or something else, your password verification
returned an error. I’m sorry, world destruction will need to wait.’;
}

/*
vim: set ts: 4
vim: set wrap
*/

?>

Archivo con modlines para Piotr
<?php

if ( $x = 123456 ) {
world_destruction( $x );
} else {
echo ‘Due to a mistype or something else, your password verification
returned an error. I’m sorry, world destruction will need to wait.’;
}

/*
vim: set ts: 4
vim: set wrap
*/

?>

Estas líneas de código, en caso de que no lo puedas ver así, definirán un espacio de 4 columnas por tab y activarán la función “wrap”. Esto podrá ser leido por vim y por Gedit, siempre y cuando actives el plugin correspondiente.

Para mayor información en las opciones disponibles, ve a:

# vim: http://vimdoc.sourceforge.net/htmldoc/options.html#modeline
# emacs: http://www.delorie.com/gnu/docs/emacs/emacs_486.html
# kate: http://www.kate-editor.org/article/katepart_modelines

NOTA:
Al tiempo de escritura de este artículo, gedit solo soporta las siguientes opciones:

# vim: et, expandtab, ts, tabstop, wrap, y textwidth
# emacs: tab-width, indent-tabs-mode y autowrap
# kate: tab-width, indent-width, space-indent, word-wrap y word-wrap-column

Favor de consultar la documentación de gedit
Este artículo fue basado en la versión: gedit 2.18.2

rpmnew substitution

Sunday, August 12th, 2007

I am tired of having to re-write, manually, all the *.rpmnew files that appear when I upgrade. Most of them don’t need to be diff’ed, in my case at least.

For example, I just diff the httpd.conf file and that’s it so, here’s a script to mv *.rpmnew to *:


find . -iname '*.rpmnew' | while read f; do mv -f $f ${f%.rpmnew}; done

Thanks zcat, from irc://freenode/fedora

Looong time

Sunday, August 5th, 2007

It’s been a long time since I wrote on this blog… The band’s been doing fine; going smoothly. GNU & Linux is/are on track and, in general, everything’s fine. I need some money; I hope it’ll come to me someday… haha.

Why in english??? I dunno!