#Artistic Style file options for LibreCAD
#Use:
#first install Artistic Style: http://astyle.sourceforge.net/
#change to the top directory of LibreCAD sources (the dir containing this file)
#exec: astyle --options=./librecad.astylerc src/*.cpp
#exec: astyle --options=./librecad.astylerc src/*.h
#or
#exec: astyle --options=./librecad.astylerc path_to_some_source_file/source_file


#Indent a C/C++, file.
--mode=c

# Bracket Style
--style=attach

# Indent using # spaces per indent
--indent=spaces=4

# Indent 'class' and 'struct' blocks so that the blocks 'public:',
# 'protected:' and 'private:' are indented.
#--indent-classes

# Indent 'switch' blocks so that the 'case X:' statements are
# indented in the switch block.
--indent-switches

# Indent 'case X:' blocks from the 'case X:' headers.
# Case statements not enclosed in blocks are NOT indented.
#--indent-cases

# Add extra indentation to namespace blocks. 
#--indent-namespaces

# Add extra indentation to labels so they appear 1 indent less than
# the current indentation, rather than being flushed to the left.
#--indent-labels

# Indent multi-line preprocessor definitions ending with a backslash.
# Should be used with --convert-tabs for proper results.
--indent-preprocessor

# Indent C++ comments beginning in column one.
--indent-col1-comments

# Set the minimal indent that is added when a header is built of multiple lines.
--min-conditional-indent=0

# Set the  maximum of # spaces to indent a continuation line.
# The # indicates a number of columns and must not be greater than 120.
--max-instatement-indent=60

# Pad empty lines around header blocks (e.g. 'if', 'for', 'while'...).
--break-blocks

# Pad empty lines around header blocks (e.g. 'if', 'for', 'while'...).
# Treat closing header blocks (e.g. 'else', 'catch') as stand-alone blocks.
#--break-blocks=all

# Insert space padding around operators.
# Note that there is no option to unpad. Once padded, they stay padded.
--pad-oper

# Insert space padding around parenthesis on both the outside and the inside.
#--pad-paren

# Insert space padding around parenthesis on the outside only. 
# This can be used with unpad-paren below to remove unwanted spaces.
#--pad-paren-out

# Insert space padding around parenthesis on the inside only. 
# This can be used with unpad-paren below to remove unwanted spaces.
#--pad-paren-in

# Insert space padding after paren headers only (e.g. 'if', 'for', 'while'...). 
# This can be used with unpad-paren below to remove unwanted spaces.
--pad-header

# Remove extra space padding around parenthesis on the inside and outside.
# This option can be used in combination with the paren padding options pad‑paren,
# pad‑paren‑out, pad‑paren‑in, and pad‑header above. Only padding that has not
# been requested by other options will be removed.
# For example, if a source has parens padded on both the inside and outside,
# and you want inside only. You need to use unpad-paren to remove the outside
# padding, and pad‑paren‑in to retain the inside padding.
# Using only pad‑paren‑in would not remove the outside padding.
--unpad-paren

# Delete empty lines within a function or method. Empty lines outside of functions
# or methods are NOT deleted. If used with break-blocks or break-blocks=all it will
# delete all lines EXCEPT the lines added by the break-blocks options.
--delete-empty-lines

# Fill empty lines with the white space of the previous line.
#--fill-empty-lines

# When used with --style=attach, --style=linux, or --style=stroustrup,
# this breaks closing headers (e.g. 'else', 'catch', ...) from their immediately
# preceding closing brackets. Closing header brackets are always broken with
# broken brackets, horstmann brackets, indented blocks, and indented brackets.
#--break-closing-brackets

# Break "else if" header combinations into separate lines. This option has no effect
# if keep-one-line-statements is used, the "else if" statements will remain as they are.
# If this option is NOT used, "else if" header combinations will be placed on a single line.
#--break-elseifs

# Don't break one-line blocks.
#--keep-one-line-blocks

# Don't break complex statements and multiple statements residing on a single line.
#--keep-one-line-statements

#Add brackets to unbracketed one line conditional statements (e.g. 'if', 'for', 'while'...).
# The statement must be on a single line. The brackets will be added according to the
# currently requested predefined style. If no style is requested the brackets will be attached.
# If --add-one-line-brackets is also used the result will be one line brackets.
--add-brackets


# Add one line brackets to unbracketed one line conditional statements 
# (e.g. 'if', 'for', 'while'...). The statement must be on a single line.
# The option implies --keep-one-line-blocks and will not break the one line blocks.
#--add-one-line-brackets

#Converts tabs into spaces in the non-indentation part of the line. The number of spaces
# inserted will maintain the spacing of the tab. The current setting for spaces per tab is used.
# It may not produce the expected results if convert-tabs is used when changing spaces per tab.
# Tabs are not replaced in quotes.
--convert-tabs

# Attach a pointer or reference operator (* or &) to either the variable type (left) or variable
# name (right), or place it in middle (between the type and name). The spacing between the type and
# name will be preserved, if possible. To format references separately use the following
# align-reference option.
--align-pointer=type

# This option will align references separate from pointers. Pointers are not changes by this option.
# If pointers and references are to be aligned the same, use the previous align-pointer option.
# The option align-reference=none will not change the reference alignment. The other options are
# the same as for align-pointer. 
--align-reference=type

######################### File Options #########################################

#Append the suffix #### instead of '.orig' to original filename (e.g. --suffix=.bak).
# If this is to be a file extension, the dot '.' must be included. Otherwise the suffix will be
# appended to the current file extension.
#--suffix=.orig

# Do not retain a backup of the original file. The original file is purged after it is formatted.
#--suffix=none

# For each directory in the command line, process all subdirectories recursively. When using the
# recursive option the file name statement should contain a wildcard. Linux users should place the
# filepath and name in double quotes so the shell will not resolve the wildcards (e.g. "$HOME/src/*.cpp").
# Windows users should place the filepath and name in double quotes if the path or name contains spaces.
--recursive

#Specify a file or sub directory #### to be excluded from processing. 
# Excludes are matched from the end of the filepath. An exclude option of "templates" will exclude ALL
# directories named "templates". An exclude option of "cpp/templates" will exclude ALL "cpp/templates"
# directories. You may proceed backwards in the directory tree to exclude only the required directories.
# Specific files may be excluded in the same manner. An exclude option of "default.cpp" will exclude ALL
# files named "default.cpp". An exclude option of "python/default.cpp" will exclude ALL files named
# "default.cpp" contained in a "python" subdirectory. You may proceed backwards in the directory tree to
# exclude only the required files.
# Wildcards are NOT allowed. There may be more than one exclude statement.
# The filepath and name may be placed in double quotes (e.g. ‑‑exclude="foo bar.cpp").
#--exclude=####


# Allow processing to continue if there are errors in the "exclude=###" options.
# This option lets the excludes for several projects be entered in a single option file. This option may
# be placed in the same option file as the excludes. It will display the unmatched excludes.
# The following option will not display the unmatched excludes.
#ignore-exclude-errors

# Allow processing to continue if there are errors in the "exclude=###" options.
# This option lets the excludes for several projects be entered in a single option file. This option may
# be placed in the same option file as the excludes. It will NOT display the unmatched excludes.
# The preceding option will display the unmatched excludes.
#ignore-exclude-errors-x

# Print errors to standard-output rather than to standard-error.
# This option should be helpful for systems/shells that do not have this option, such as in Windows95.
#--errors-to-stdout

# Preserve the original file's date and time modified. The date and time modified will not be changed
# in the formatted file. This option is not effective if redirection is used to rename the input file.
--preserve-date

# Verbose display mode. Display optional information, such as release number and statistical data.
#--verbose

# Formatted files display mode. Display only the files that have been formatted. Do not display files that are unchanged.
--formatted

# Quiet display mode. Suppress all output except error messages.
#--quiet

# Force use of the specified line end style. Valid options are windows (CRLF), linux (LF), and macold (CR).
# MacOld style is the format for OS 9 and earlier. Mac OS X uses the Linux style. If one of these options
# is not used the line ends will be determined automatically from the input file.
#--lineend=windows
--lineend=linux
#--lineend=macold











