57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.6 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`. 
 | 
						|
 | 
						|
 | 
						|
.. _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.
 |