language-agnostic pretty-print

language agnostic - una linda impresora "para gobernarlos a todos"



language-agnostic pretty-print (5)

Estoy buscando una herramienta que pueda imprimir bastante (también ordenar o embellecer) el código fuente en tantos idiomas como sea posible. Los que me gustan especialmente incluyen:

  • Java
  • JSP
  • HTML
  • JavaScript
  • SQL
  • JSON
  • XML

Idealmente, la herramienta debería ser capaz de actualizar los archivos fuente en el lugar y ser capaz de formatear más de un solo archivo a la vez. Sería genial si pudiera formatear archivos que contengan varios idiomas (por ejemplo, un JSP que contenga código fuente HTML, Java y JavaScript), pero eso probablemente requiera un poco más.

Ya encontré una herramienta comercial que parece abarcar muchos idiomas, pero uno gratuito sería incluso mejor :)

Por cierto, sé que hay una linda impresora disponible para la mayoría de los idiomas, pero lo que estoy buscando es una "ventanilla única".

Saludos, Don


Emacs es mi favorito personal. Hay complementos que permiten casi todos los idiomas de los que puedes pensar.


Uso UltraEdit y encuentro que generalmente es bastante bueno. No es gratis, pero tampoco es tan caro.


Yo uso Vim para hacer esto todo el tiempo. No maneja HTML muy bien, pero hace los otros. Es fácil usar los comandos de Vim para automatizar la ejecución de una cantidad de archivos.


Wikipedia tiene una lista de buen tamaño. Sin embargo, me interesa ver qué consenso podría surgir aquí.

Varios manejan múltiples idiomas; p.ej

PrettyPrinter, (un embellecedor de código abierto para cada lenguaje de programación)

UniversalIndentGUI (Una interfaz gráfica de usuario para cualquier impresora bonita con vista previa en vivo para la configuración de formato)

prettyprinter.de, (un embellecedor en línea para PHP, Java, C ++, C, Perl, JavaScript, CSS)


Para Haskell, tengo esto en ~/bin/pp.hs :

#!/usr/bin/env runhaskell module Main (main) where import Language.Haskell.Parser import Language.Haskell.Pretty import System.Environment pp f = case parseModule f of ParseOk m -> prettyPrint m a -> show a main = do args <- getArgs mapM_ (>>= putStrLn . pp) $ if null args then [getContents] else map readFile args

En Vim :set equalprg=~/bin/pp.hs , seleccione una región, pulse = y auge, se embellece.

De acuerdo, no es muy general. Pero creo que tiene una pequeña posibilidad de ayudar a alguien si lo agrego aquí.