one pretty printer “to rule them all”

假装没事ソ 提交于 2019-11-30 05:38:03

问题


I'm looking for a tool that can pretty-print (AKA tidy or beautify) source code in as many languages as possible. Those I'm particularly keen on include:

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

Ideally, the tool should be able to update source files in-place and be able to format more than a single file at-a-time. It would be great if it could format files containing multiple languages (e.g. a JSP containing HTML, Java, and JavaScript source code), but that's probably asking for a bit much.

I've already found a commercial tool that seems to cover a lot of languages, but a free one would be even better :)

BTW, I know there is a pretty printer available for most languages, but what I'm looking for is a "one-stop shop".

Cheers, Don


回答1:


I use Vim to do this all the time. It doesn't handle HTML very well, but it does the others. It's easy to use the Vim commands to automate running it on a number of files.




回答2:


Wikipedia has a good-sized list. I'm interested to see what consensus might emerge here, though.

Several handle multiple languages; e.g.

PrettyPrinter, (an Open Source beautifier for every programming language)

UniversalIndentGUI (A graphical user interface for any pretty printer with live preview for the formatting settings)

prettyprinter.de, (an online beautifier for PHP, Java, C++, C, Perl, JavaScript, CSS)




回答3:


For Haskell, I have this in ~/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

In Vim, :set equalprg=~/bin/pp.hs, select a region, hit =, and boom, it gets prettified.

Okay, it's not very general. But I figure it has a small chance of helping somebody if I add it here.




回答4:


Emacs is a personal favorite of mine. There are add-ons that allow for almost every language you can thing of.




回答5:


I use UltraEdit and find it's generally pretty good. It's not free, but it's also not that expensive.



来源:https://stackoverflow.com/questions/251622/one-pretty-printer-to-rule-them-all

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!