Colores prescindiendo del scope

4 views
Skip to first unread message

Arnau Siches

unread,
Jun 16, 2008, 5:38:42 PM6/16/08
to textm...@googlegroups.com
Hola,

Estaba yo jugueteando con LSCOLORS cuando me han pasado
http://mipsisrisc.com/lscolors/

Muy chulo pero, sería mucho más cómodo poder ver directamente la
combinación mientras edito el string desde TextMate.

Es posible forzar el color de un substring sin usar el scope (es decir,
los colores del theme)?

Alguna sugerencia alternativa en caso de que no se pueda?

--
arnau siches
blog.esbudellat.net

Ale Muñoz

unread,
Jun 16, 2008, 5:51:44 PM6/16/08
to textm...@googlegroups.com
2008/6/16 Arnau Siches <asi...@gmail.com>:

>
> Es posible forzar el color de un substring sin usar el scope (es decir,
> los colores del theme)?
>

Esta es fácil: no.

Si estuvieras infinitamente aburrido podrías intentar usar AppleScript
para decirle a TextMate que reescribiera un theme para ir mostrándote
colores de una forma pseudodinámica.

Pero como se trata de divertirse, y no de hacer el g*l*, yo preferiría
que me sacaran los ojos con un tenedor...

Lo que sí puedes hacer es...

> Alguna sugerencia alternativa en caso de que no se pueda?

...usar Web Preview!

Si le das a Control + Alt + Comando + P se te abrirá la ventana de Web
Preview (esto ya lo sabías, pero por si acaso). Si le das a "Show
Options" y marcas "Pipe text through" puedes enchufar en el campo de
texto un script de shell (por ejemplo, un grep) que te busque la línea
y te escupa un bonito HTML coloreado.

Puedes arrastrar in fichero .sh (o lo que sea, siempre que sea
ejecutable) al campo de texto y el documento se "pipeará" a través del
script.

Aunque ahora que lo pienso quizá lo del AppleScript no fuera tan mala idea... :P

Ánimo!


--
Ale Muñoz
http://sofanaranja.com
http://bomberstudios.com

Ale Muñoz

unread,
Jun 16, 2008, 6:35:13 PM6/16/08
to textm...@googlegroups.com
Bueno, se me ha ocurrido luego que podía quedar medio bien en Ruby,
así que me he puesto y aquí está la cosa.

Si lo guardas como lscolors.rb en alguna parte y lo arrastras al pipe
del Web Preview, teóricamente te irá mostrando los cambios que hagas
en la línea del bash_profile en pseudo tiempo real...

Testeado cero (de hecho peta si hay más de una línea con LSCOLORS),
pero es que a partir de ahora deja de ser divertido : )

Que aproveche!

---------------------------------------------------------------------------------------

#!/usr/bin/env ruby

input = STDIN.readlines.to_s

ls_line = ""

input.each do |line|
ls_line = line if line =~ /LSCOLORS/
end

colors = /\'(.*)\'/.match(ls_line)[1]

color_array = colors.scan(/../)

item_types = [
"1-directory",
"2-system_link -> /dev/null",
"3-socket",
"4-pipe",
"5-executable",
"6-block_special",
"7-char_special",
"8-exe_setuid",
"9-exe_setgid",
"a-dir_writeothers_sticky",
"b-dir_writeothers_NOsticky",
]
color_table = {
"a" => "black",
"b" => "red",
"c" => "green",
"d" => "brown",
"e" => "blue",
"f" => "magenta",
"g" => "cyan",
"h" => "grey",
"A" => "black; font-weight: bold;",
"B" => "red; font-weight: bold;",
"C" => "green; font-weight: bold;",
"D" => "brown; font-weight: bold;",
"E" => "blue; font-weight: bold;",
"F" => "magenta; font-weight: bold;",
"G" => "cyan; font-weight: bold;",
"H" => "grey; font-weight: bold;",
"x" => "",
}
puts "<code>"
color_array.each do |color_pair|
foreground_color = color_table[color_pair[0,1]]
background_color = color_table[color_pair[1,1]]
puts "<span style='color: #{foreground_color}; background-color:
#{background_color}'>" + item_types.shift + "</span><br/>"
end
puts "</code>"

Arnau Siches

unread,
Jun 17, 2008, 1:06:10 PM6/17/08
to textm...@googlegroups.com
Lo he probado y me da un:

lscolors.rb:11: undefined method `[]' for nil:NilClass (NoMethodError)

gracias por el curro de todas maneras :)


--
arnau siches
blog.esbudellat.net

Reply all
Reply to author
Forward
0 new messages