59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
| =========
 | |
| LibFormat
 | |
| =========
 | |
| 
 | |
| LibFormat is a library that implements automatic source code formatting based
 | |
| on Clang. This documents describes the LibFormat interface and design as well
 | |
| as some basic style discussions.
 | |
| 
 | |
| If you just want to use `clang-format` as a tool or integrated into an editor,
 | |
| checkout :doc:`ClangFormat`.
 | |
| 
 | |
| Design
 | |
| ------
 | |
| 
 | |
| FIXME: Write up design.
 | |
| 
 | |
| 
 | |
| Interface
 | |
| ---------
 | |
| 
 | |
| The core routine of LibFormat is ``reformat()``:
 | |
| 
 | |
| .. code-block:: c++
 | |
| 
 | |
|   tooling::Replacements reformat(const FormatStyle &Style, Lexer &Lex,
 | |
|                                  SourceManager &SourceMgr,
 | |
|                                  std::vector<CharSourceRange> Ranges);
 | |
| 
 | |
| This reads a token stream out of the lexer ``Lex`` and reformats all the code
 | |
| ranges in ``Ranges``. The ``FormatStyle`` controls basic decisions made during
 | |
| formatting. A list of options can be found under :ref:`style-options`.
 | |
| 
 | |
| The style options are described in :doc:`ClangFormatStyleOptions`.
 | |
| 
 | |
| 
 | |
| .. _style-options:
 | |
| 
 | |
| Style Options
 | |
| -------------
 | |
| 
 | |
| The style options describe specific formatting options that can be used in
 | |
| order to make `ClangFormat` comply with different style guides. Currently,
 | |
| two style guides are hard-coded:
 | |
| 
 | |
| .. code-block:: c++
 | |
| 
 | |
|   /// \brief Returns a format style complying with the LLVM coding standards:
 | |
|   /// http://llvm.org/docs/CodingStandards.html.
 | |
|   FormatStyle getLLVMStyle();
 | |
| 
 | |
|   /// \brief Returns a format style complying with Google's C++ style guide:
 | |
|   /// http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml.
 | |
|   FormatStyle getGoogleStyle();
 | |
| 
 | |
| These options are also exposed in the :doc:`standalone tools <ClangFormat>`
 | |
| through the `-style` option.
 | |
| 
 | |
| In the future, we plan on making this configurable.
 |