uncrustify-trinity: updated based on upstream version 0.78.1

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/13/head
Michele Calgaro 6 months ago
parent c0a6f1b84c
commit b67b7f2b78
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -1,189 +0,0 @@
Author:
2005 - 2016 : Ben Gardner
Maintenance:
Guy Maurel
Michele Calgaro
Matthew Woehlke
until 2022-11-22:
Other collaborators:
Alan Fineberg
Alexander GQ Gerasiov
Alex Henrie
André Berg
Andrei Alexandrescu
Andrey Starodubtsev
Anirban Pramanick
Antti Tapaninen
Arne Forlie
Arseniy Shestakov
asobhy
atauzki
Aurélien Gâteau
Benio
Ben Iofel
Ben Mayo
Beren Minor
Bi-Ruei, Chiu
Biswa96
Biswapriyo Nath
B. Kevin Hardman
Bogdan Popescu
Brandon Slack
Brecht Sanders
Brendan Long
Brian Kelley
CharlieYJH
Chris Lalancette
Clemens Rabe
Clint Lawrence
Code Able
Cody Schafer
Corentin Noël
Dandielo
Daniel Chumak
Daniele Bartolini
Dan Rose
Dave Lee
David Catmull
David E. O'Brien
David Lechner
David Schaefgen
Dirk Thomas
Dittrich, Rico
Dmitry Marakasov
Dmitry Povolotsky
Dmytro Povolotskyi
Dundar Göc
Dženan Zukić
Eism
Emerson Knapp
Emmanuel Christophe
epac-tom
Ethan Gao
Florin Pop
Frank J. T. Wojcik
Gary Ash
Ger Hobbelt
Hackerpilot
Hannes Schmidt
hghdev
Huang-Ming Huang
Husk3r
Ilya Lyubimov
Ingo Brückl
Ivan Nazarenko
Ivan Romanov
Jakub Lukasiewicz
Jakub Schmidtke
Jan Weiß
Jason
JavDevGames
Jeremy H
Jeremy T Hilliker
Jim Meyering
Jiri Hruska
jodi.the.tigger@gmail.com
Jody Hagins
Joel Ostraat
Joergen Ibsen
Johnny Oskarsson
Jonas Hurrelmann
Jorengarenar
Joshua Gross
Joshua Parker
Julian Picht
Kalle Raiskila
Keepun
Kevin Wong
krys
Laurent Tréguier
Lauri Kasanen
lbmaian
Leon Breedt
Lorenz Haas
Lykurg
Maciej Bogusz
Manning, James
Marco Stephan
Marcus Nilsson
Marek Fort
Marius Zwicker
Mark Stegeman
Markus Geimer
Martin Delille
Martin Simonovsky
Martin Storsjo
Matthew McDole
Matthew Woehlke
Maxim Mikityanskiy
Max Smolens
MeXx
Michaël Peeters
Michele Calgaro
Mihai Popescu
Mike
Mike Gelfand
Mirko König
mjbogusz
MrTheMake
Nate
neok-m4700
Nico Decker
Oleg Liatte
Oleg Smolsky
Owen Rudge
Pat Notz
Patrick Rohr
Paul Cercueil
Paul Smith
Pavel Geiger
Paweł Benetkiewicz
PerfectCarl
Peter Bruin
Peter Hartley
Peter Jonas
Peter Kolbus
Peter Tao
Peter Waller
Piet Van Reepingen
PMheart
Randolph R. Settgast
Randolph Settgast
RaveTheTadpole
Ray Strode
Richard Maxwell
Ricky Lopez
Roland Schulz
Roman Gordienko
Ryan Maxwell
Samish Chandra Kolli
Samish Kolli
Scott Bilas
Sebastian Andersson
Sebastian Bilek
S. Gilles
Shazron Abdullah
Siddharth Kannan
Slávek Banko
Spark-NF
Stefan Koch
Stefan Nunninger
Stephen Gilles
Steven Lee
Suhaib Ishaque
t-bltg
Tim Hütz
Timotheus Pokorra
Todd Richmond
Twigz
U-RDEC\ParkerJS
Vadim Zeitlin
Viktor Kireev
Vincent Rouillé
Vojtěch Balík
Vyacheslav Shegai
Waldir Pimenta
Yannick Bühler
Yegor Yefremov

@ -1,560 +0,0 @@
cmake_minimum_required(VERSION 3.5)
project(uncrustify)
if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
message(FATAL_ERROR "
In-source builds are not supported, please remove the `CMakeFiles'
folder and `CMakeCache.txt', and create a folder for the build:
mkdir build; cd build; cmake ..
")
endif()
include(CheckCXXCompilerFlag)
include(CheckIncludeFileCXX)
include(CheckSymbolExists)
include(CheckCXXSymbolExists)
include(CheckTypeSize)
include(CTest)
if( ${CMAKE_VERSION} VERSION_LESS "3.12" )
find_package( PythonInterp )
if( NOT PYTHON_EXECUTABLE )
message( FATAL_ERROR "Python is required, but was not found on your system" )
endif()
else( )
find_package(Python3 REQUIRED)
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
endif()
#
# Check compiler flags
#
if(MSVC)
add_definitions(/D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /wd4267)
add_definitions(/utf-8)
elseif(CMAKE_COMPILER_IS_GNUCXX)
set(gcc_warning_flags
-Wall
-Wextra
-Wshadow
-Wpointer-arith
-Wcast-qual
-Wcast-align
-Wc++11-extensions
)
foreach(flag ${gcc_warning_flags})
string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" flag_var "CXXFLAG_${flag}")
CHECK_CXX_COMPILER_FLAG("${flag}" ${flag_var})
if(${flag_var})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
endif()
unset(flag_var)
endforeach()
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers")
endif()
unset(gcc_warning_flags)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-deprecated-declarations")
endif()
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
if(ENABLE_SANITIZER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fno-omit-frame-pointer -fsanitize=${ENABLE_SANITIZER}")
endif()
#set(UNCRUSTIFY_SEPARATE_TESTS "True")
include_directories(
${PROJECT_BINARY_DIR}/src
${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}
)
#
# Determine config
#
if(WIN32)
# Windows builds use src/windows_compat.h instead of config.h
else()
# Generate config.h
set(avail_headers "")
set(headers
inttypes.h
memory.h
stdint.h
stdlib.h
strings.h
string.h
sys/stat.h
sys/types.h
unistd.h
utime.h
)
foreach(header ${headers})
string(TOUPPER "${header}" header_uc)
string(REGEX REPLACE "[^A-Z0-9_]" "_" include_var "HAVE_${header_uc}")
check_include_file_cxx("${header}" ${include_var})
if(${include_var})
list(APPEND avail_headers ${header})
endif()
unset(include_var)
unset(header_uc)
endforeach()
unset(headers)
check_include_file("stdbool.h" HAVE_STDBOOL_H)
set(symbols
memset
strcasecmp
strchr
strdup
strerror
strtol
strtoul
)
foreach(symbol ${symbols})
string(TOUPPER "${symbol}" symbol_uc)
string(REGEX REPLACE "[^A-Z0-9_]" "_" symbol_var "HAVE_${symbol_uc}")
check_cxx_symbol_exists("${symbol}" "${avail_headers}" ${symbol_var})
unset(symbol_var)
unset(symbol_uc)
endforeach()
unset(symbols)
unset(avail_headers)
check_type_size(_Bool _BOOL LANGUAGE C)
configure_file(src/config.h.in config.h @ONLY)
endif()
#
# Generate uncrustify_version.h
#
set(UNCRUSTIFY_VERSION "0.78.0_f")
option(NoGitVersionString "Do not use make_version.py and git to build a version string" OFF)
if(NoGitVersionString)
configure_file(src/uncrustify_version.h.in uncrustify_version.h @ONLY)
add_custom_target(generate_version_header) # Dummy target
else()
# Add target to generate version header;
# do this every build to ensure git SHA is up to date
add_custom_target(generate_version_header
BYPRODUCTS "${PROJECT_BINARY_DIR}/uncrustify_version.h"
COMMAND
${CMAKE_COMMAND}
-D PYTHON_EXECUTABLE:STRING=${PYTHON_EXECUTABLE}
-D SOURCE_DIR:PATH="${PROJECT_SOURCE_DIR}"
-D INPUT:PATH="${PROJECT_SOURCE_DIR}/src/uncrustify_version.h.in"
-D OUTPUT:PATH="${PROJECT_BINARY_DIR}/uncrustify_version.h"
-D UNCRUSTIFY_VERSION:STRING="${UNCRUSTIFY_VERSION}"
-P ${PROJECT_SOURCE_DIR}/cmake/GenerateVersionHeader.cmake
COMMENT "Generating version header"
)
set_source_files_properties(
"${PROJECT_BINARY_DIR}/uncrustify_version.h"
PROPERTIES GENERATED TRUE
)
endif()
#
# Generate token_names.h
#
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
COMMAND ${CMAKE_COMMAND}
"-Dsrc_file=${PROJECT_SOURCE_DIR}/src/token_enum.h"
"-Ddst_file=${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
-P "${PROJECT_SOURCE_DIR}/cmake/GenerateTokenNames.cmake"
MAIN_DEPENDENCY src/token_enum.h
COMMENT "Generating token_names.h"
)
# Set up commands for generated source files
function(py_gen OUTPUT SCRIPT INPUT)
set(out "${PROJECT_BINARY_DIR}/src/${OUTPUT}")
set(deps "${PROJECT_SOURCE_DIR}/src/${INPUT}")
get_filename_component(outdir "${out}" DIRECTORY)
foreach(arg IN LISTS ARGN)
if (IS_ABSOLUTE "${arg}")
list(APPEND deps "${arg}")
else()
list(APPEND deps "${PROJECT_SOURCE_DIR}/src/${arg}")
endif()
endforeach()
add_custom_command(
OUTPUT "${out}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${outdir}"
COMMAND ${PYTHON_EXECUTABLE}
"${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
"${out}"
${deps}
DEPENDS ${deps} "${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
MAIN_DEPENDENCY src/${INPUT}
COMMENT "Generating ${OUTPUT}"
)
endfunction()
py_gen(punctuator_table.h
make_punctuator_table.py
symbols_table.h
)
py_gen(options.cpp
make_options.py
options.h
options.cpp.in
)
py_gen(option_enum.h
make_option_enum.py
option.h
option_enum.h.in
)
py_gen(option_enum.cpp
make_option_enum.py
option.h
option_enum.cpp.in
)
py_gen(../etc/uncrustify.xml
make_katehl.py
../etc/uncrustify.xml.in
"${PROJECT_BINARY_DIR}/uncrustify_version.h"
options.h
option.h
token_enum.h
)
#
# Uncrustify
#
set(uncrustify_sources
src/align_add.cpp
src/align_asm_colon.cpp
src/align_assign.cpp
src/align_braced_init_list.cpp
src/align.cpp
src/align_eigen_comma_init.cpp
src/align_func_params.cpp
src/align_func_proto.cpp
src/align_init_brace.cpp
src/align_left_shift.cpp
src/align_log_al.cpp
src/align_nl_cont.cpp
src/align_oc_decl_colon.cpp
src/align_oc_msg_colons.cpp
src/align_oc_msg_spec.cpp
src/align_preprocessor.cpp
src/align_same_func_call_params.cpp
src/align_stack.cpp
src/align_struct_initializers.cpp
src/align_tab_column.cpp
src/align_tools.cpp
src/align_trailing_comments.cpp
src/align_typedefs.cpp
src/align_var_def_brace.cpp
src/args.cpp
src/backup.cpp
src/brace_cleanup.cpp
src/braces.cpp
src/calculate_closing_brace_position.cpp
src/change_int_types.cpp
src/check_template.cpp
src/chunk.cpp
src/ChunkStack.cpp
src/combine.cpp
src/combine_fix_mark.cpp
src/combine_labels.cpp
src/combine_tools.cpp
src/combine_skip.cpp
src/compat_posix.cpp
src/compat_win32.cpp
src/cs_top_is_question.cpp
src/detect.cpp
src/enum_cleanup.cpp
src/EnumStructUnionParser.cpp
src/EnumStructUnionParser.h
src/flag_braced_init_list.cpp
src/flag_decltype.cpp
src/flag_parens.cpp
src/indent.cpp
src/keywords.cpp
src/lang_pawn.cpp
src/language_names.cpp
src/language_tools.cpp
src/logger.cpp
src/logmask.cpp
src/log_rules.cpp
src/mark_functor.cpp
src/mark_question_colon.cpp
src/md5.cpp
src/newlines.cpp
src/option.cpp
src/options_for_QT.cpp
src/output.cpp
src/parameter_pack_cleanup.cpp
src/parens.cpp
src/parent_for_pp.cpp
src/parsing_frame.cpp
src/parsing_frame_stack.cpp
src/pragma_cleanup.cpp
src/pcf_flags.cpp
src/punctuators.cpp
src/quick_align_again.cpp
src/remove_duplicate_include.cpp
src/remove_extra_returns.cpp
src/rewrite_infinite_loops.cpp
src/semicolons.cpp
src/sorting.cpp
src/space.cpp
src/tokenize_cleanup.cpp
src/tokenize.cpp
src/uncrustify.cpp
src/uncrustify_emscripten.cpp
src/uncrustify_types.cpp
src/unc_ctype.cpp
src/unc_text.cpp
src/unc_tools.cpp
src/unicode.cpp
src/universalindentgui.cpp
src/width.cpp
${PROJECT_BINARY_DIR}/src/options.cpp
${PROJECT_BINARY_DIR}/src/option_enum.cpp
)
set(uncrustify_headers
src/add_space_table.h
src/align_add.h
src/align_asm_colon.h
src/align_assign.h
src/align_braced_init_list.h
src/align_func_params.h
src/align_func_proto.h
src/align.h
src/align_eigen_comma_init.h
src/align_init_brace.h
src/align_left_shift.h
src/align_log_al.h
src/align_nl_cont.h
src/align_oc_decl_colon.h
src/align_oc_msg_colons.h
src/align_oc_msg_spec.h
src/align_preprocessor.h
src/align_same_func_call_params.h
src/align_stack.h
src/align_struct_initializers.h
src/align_tab_column.h
src/align_tools.h
src/align_trailing_comments.h
src/align_typedefs.h
src/align_var_def_brace.h
src/args.h
src/backup.h
src/base_types.h
src/brace_cleanup.h
src/braces.h
src/calculate_closing_brace_position.h
src/change_int_types.h
src/char_table.h
src/check_template.h
src/chunk.h
src/ChunkStack.h
src/combine.h
src/combine_fix_mark.h
src/combine_labels.h
src/combine_skip.h
src/combine_tools.h
src/compat.h
src/cs_top_is_question.h
src/detect.h
src/enum_cleanup.h
src/enum_flags.h
src/error_types.h
src/flag_braced_init_list.h
src/flag_decltype.h
src/flag_parens.h
src/indent.h
src/keywords.h
src/lang_pawn.h
src/language_names.h
src/language_tools.h
src/ListManager.h
src/logger.h
src/log_levels.h
src/logmask.h
src/log_rules.h
src/mark_functor.h
src/mark_question_colon.h
src/md5.h
src/newlines.h
src/option.h
src/options_for_QT.h
src/options.h
src/output.h
src/parameter_pack_cleanup.h
src/parens.h
src/parent_for_pp.h
src/parsing_frame.h
src/parsing_frame_stack.h
src/pragma_cleanup.h
src/pcf_flags.h
src/prototypes.h
src/punctuators.h
src/quick_align_again.h
src/remove_duplicate_include.h
src/remove_extra_returns.h
src/rewrite_infinite_loops.h
src/semicolons.h
src/sorting.h
src/space.h
src/symbols_table.h
src/token_enum.h
src/tokenize_cleanup.h
src/tokenize.h
src/unc_ctype.h
src/uncrustify.h
src/uncrustify_limits.h
src/uncrustify_types.h
src/unc_text.h
src/unc_tools.h
src/unicode.h
src/universalindentgui.h
src/width.h
src/windows_compat.h
${PROJECT_BINARY_DIR}/src/option_enum.h
${PROJECT_BINARY_DIR}/uncrustify_version.h
)
set(uncrustify_docs
"${PROJECT_SOURCE_DIR}/AUTHORS"
"${PROJECT_SOURCE_DIR}/BUGS"
"${PROJECT_SOURCE_DIR}/ChangeLog"
"${PROJECT_SOURCE_DIR}/COPYING"
"${PROJECT_SOURCE_DIR}/HELP"
"${PROJECT_SOURCE_DIR}/README.md"
)
add_executable(uncrustify ${uncrustify_sources} ${uncrustify_headers})
add_dependencies(uncrustify generate_version_header)
set_property(TARGET uncrustify APPEND PROPERTY
COMPILE_DEFINITIONS $<$<OR:$<CONFIG:Debug>,$<CONFIG:>>:DEBUG>
)
#
# Generate uncrustify.1
#
configure_file(man/uncrustify.1.in uncrustify.1 @ONLY)
#
# Generate uncrustify.xml (katepart highlighting file)
#
add_custom_target(katehl
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/etc/uncrustify.xml
)
#
# Tests
#
if(BUILD_TESTING)
enable_testing()
add_subdirectory(tests)
endif()
#
# Coverage
#
OPTION(ENABLE_CODECOVERAGE "Enable code coverage testing support")
if(ENABLE_CODECOVERAGE)
set(CODECOVERAGE_DEPENDS uncrustify)
include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
endif(ENABLE_CODECOVERAGE)
#
# Build command to run uncrustify on its own sources
#
add_custom_target(format-sources)
foreach(source IN LISTS uncrustify_sources uncrustify_headers)
get_filename_component(source_name ${source} NAME)
add_custom_target(format-${source_name}
COMMAND uncrustify
-c forUncrustifySources.cfg
-lCPP --no-backup ${source}
COMMENT "Formatting ${source}"
WORKING_DIRECTORY ${uncrustify_SOURCE_DIR}
)
add_dependencies(format-sources format-${source_name})
endforeach()
#
# Package
#
set(CPACK_PACKAGE_NAME "uncrustify")
set(CPACK_PACKAGE_VERSION "${UNCRUSTIFY_VERSION}")
set(CPACK_PACKAGE_VENDOR "Ben Gardner")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Code beautifier")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README.md")
set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.hg/;/tests/results/;/build.*/")
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY FALSE)
set(CPACK_GENERATOR "ZIP")
endif()
include(CPack)
#
# Install
#
if(MSVC)
install(TARGETS uncrustify DESTINATION ".")
install(FILES ${uncrustify_docs}
DESTINATION "."
)
install(FILES "${PROJECT_SOURCE_DIR}/documentation/htdocs/index.html"
DESTINATION "doc"
)
install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
DESTINATION "cfg"
FILES_MATCHING PATTERN "*.cfg"
)
else()
include(GNUInstallDirs)
install(TARGETS uncrustify
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/uncrustify.1"
DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
)
install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
DESTINATION "${CMAKE_INSTALL_DOCDIR}/examples"
FILES_MATCHING PATTERN "*.cfg"
)
install(FILES ${uncrustify_docs}
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
)
endif()
#
# Uninstall
#
get_directory_property(hasParent PARENT_DIRECTORY)
if(NOT hasParent)
add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${PROJECT_SOURCE_DIR}/cmake/uninstall.cmake")
endif()
#
# add to build the compile_commands.json file, to be used by clang-tidy
#
set(CMAKE_EXPORT_COMPILE_COMMANDS "ON" CACHE BOOL "to create the compile_commands.json file" FORCE)

File diff suppressed because it is too large Load Diff

@ -1,395 +0,0 @@
[![AppVeyor](https://img.shields.io/appveyor/ci/uncrustify/uncrustify/master.svg?style=flat-square&label=Windows)](https://ci.appveyor.com/project/uncrustify/uncrustify)
[![Coverage Status](https://coveralls.io/repos/github/uncrustify/uncrustify/badge.svg?branch=master)](https://coveralls.io/github/uncrustify/uncrustify?branch=master)
<a href="#"><img src="https://img.shields.io/badge/C++-11-blue.svg?style=flat-square"></a>
[![Conan Center](https://shields.io/conan/v/uncrustify)](https://conan.io/center/uncrustify)
---------------------------
# Uncrustify
A source code beautifier for C, C++, C#, Objective-C, D, Java, Pawn and Vala.
## Features
* Highly configurable - 850 configurable options as of version 0.78.0
- <details><summary>add/remove spaces</summary>
- `sp_before_sparen`: _Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc._
- `sp_compare`: _Add or remove space around compare operator '<', '>', '==', etc_
</details>
- <details><summary>add/remove newlines</summary>
- `nl_if_brace`: _Add or remove newline between 'if' and '{'_
- `nl_brace_while`: _Add or remove newline between '}' and 'while' of 'do' statement_
</details>
- <details><summary>add/remove blanklines</summary>
- `eat_blanks_before_close_brace`: _Whether to remove blank lines before '}'_
- `nl_max`: _The maximum consecutive newlines (3 = 2 blank lines)_
</details>
- <details><summary>indent code</summary>
- `indent_switch_case`: _indent_switch_case: Spaces to indent 'case' from 'switch'_
- `indent_class_colon`: _Whether to indent the stuff after a leading base class colon_
</details>
- <details><summary>align code</summary>
- `align_func_params`: _Align variable definitions in prototypes and functions_
- `align_struct_init_span`: _The span for aligning struct initializer values (0=don't align)_
</details>
- <details><summary>modify code</summary>
- `mod_full_brace_for`: _Add or remove braces on single-line 'for' statement_
- `mod_paren_on_return`: _Add or remove unnecessary paren on 'return' statement_
</details>
Here is an example [configuration file](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/ben.cfg.txt),
and here is a [before](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.in.c)
and [after](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.out.c)
C source example.
That should give you a pretty good idea of what Uncrustify can do.
---------------------------------------------------------------------------
## Binaries
Pre compiled binaries for Windows can be downloaded [here](https://sourceforge.net/projects/uncrustify/files/).
## Build
[Python](https://www.python.org/) is an "interpreted high-level programming language for general-purpose programming", for this project it is needed to extend the capabilities of CMake.
[CMake](https://cmake.org/) is a tool that generates build systems
(Makefiles, Visual Studio project files, Xcode project files and others).
To generate a build system for Uncrustify using CMake on UNIX-like systems, create a
build folder and run CMake from it, making sure to specify Release mode:
```bash
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
```
Other systems may require other flags (e.g. `cmake -G Xcode ..` for Xcode).
Then use the build tools of your build system (in many cases this will
simply be `make`, but on Windows it could be MSBuild or Visual Studio).
Or use CMake to invoke it:
```bash
$ cmake --build . --config Release
```
If testing is enabled, CMake generates a `test` target, which you can
_build_ using your build system tools (usually `make test`). This can also
be invoked using CTest:
```bash
$ ctest -V -C Debug
```
There is also an `install` target, which can be used to install the
Uncrustify executable (typically `make install`).
### A note on CMake configurations
Some build systems are single-configuration, which means you specify the
build type when running CMake (by setting the `CMAKE_BUILD_TYPE`
variable), and the generated files then build that configuration.
An example of a single-configuration build system are Makefiles. You can
build the Release or Debug configurations of Uncrustify (from the build folder) with:
```bash
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make
```
or
```bash
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
```
Other build systems are multi-configuration, which means you specify the
build type when building.
An example of a multi-configuration build system are Visual Studios project
files. When you open the project in Visual Studio, you can select which
configuration to build. You can also do this while building from the
command line with `cmake --build . --config Debug`.
## Bugs
Post any bugs to the issue tracker found on the projects GitHub page:
https://github.com/uncrustify/uncrustify/issues
Please include the following with your issue:
- a description of what is not working right
- input code sufficient to demonstrate the issue
- expected output code
- configuration options used to generate the output
More about this is in the [ISSUE_TEMPLATE](https://github.com/uncrustify/uncrustify/blob/master/.github/ISSUE_TEMPLATE)
### Known problems
[Look at the Wiki](https://github.com/uncrustify/uncrustify/wiki/Known-Problems)
## Which repositories have uncrustify?
[Look here](https://repology.org/metapackage/uncrustify/versions)
## Contribute
If you want to add a feature, fix a bug, or implement missing
functionality, feel free to do so! Patches are welcome!
Here are some areas that need attention:
- __Patches for Objective-C support__. We really need someone who knows
this language as it has more than plenty open issues. A good starting
point would be to integrate changes made in the
[Unity fork](https://github.com/Unity-Technologies/uncrustify/tree/fixes/c-oc-java)
- Test Java support and provide feedback (or patches!)
- Test Embedded SQL to see what works
- A logo of some sort
- Anything else that you want to do to make it better?
### A note about pull requests
Firstly take a look at the [CONTRIBUTING.md](https://github.com/uncrustify/uncrustify/blob/master/CONTRIBUTING.md)
Currently we have two continuous integration systems that test your PRs,
TravisCI and Appveyor.
Tested are the test cases, the formatting of the code base and
the output of the command line options.
Test cases can be found in the `tests/` directory. Every file ending with
`.test` is a test set. Inside each line with these components is a
single test: `testNr[!] testConfigFileName testInputFileName [lang]`
The configuration file `testConfigFileName` has to be located inside `tests/config`,
the input file `testInputFileName` inside `tests/input/<testSetName>/`,
and expected results file inside the `tests/expected/<testSetName>/`
directory.
Expected results have the following naming convention: `testNr-testInputFileName`.
Optionally a `!` can follow the `testNr` to enable a custom rerun
configuration.
Rerun configurations need to be named like this:
`testConfigFileName`(without extension)+`.rerun`+`.extension`
Also, optionally a language for the input can be provided with `lang`.
The codebase has to be formatted by the options set up in
`forUncrustifySources.cfg`. Failing to format the sources correctly will
cause TravisCI build failures.
The Command line interface (CLI) output is tested by the
`test_cli_options.sh` script. It is located inside of `tests/cli/` and operates
on the subdirectories of that folder.
If a PR is altering the CLI output, files inside those directories might
need to be manually updated. This often happens when options are
added, removed, or altered. Keep in mind that the version string line
(example: `# Uncrustify-0.69.0_f`) of outputs from commands like
`--show-config` should be replaced with a blank line.
### Debugging
The first method is to use uncrustify itself to get debug informations.
Using:
```.txt
uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A
```
you get two files for the first informations.
The p-file gives you details of the parsing process and indentation.
```.txt
# Line Tag Parent Columns Br/Lvl/pp Flag Nl Text
# 1> CLASS[ NONE][ 1/ 1/ 6/ 0][0/0/0][ 10070000][0-0] class
# 1> TYPE[ CLASS][ 7/ 7/ 14/ 1][0/0/0][ 10000000][0-0] Capteur
# 1> BRACE_OPEN[ CLASS][ 15/ 15/ 16/ 1][0/0/0][ 100000400][0-0] {
```
The A-file gives you many details about the run itself, where the process is running thru,
which values have the most important variables.
```.txt
tokenize(2351): orig line is 1, orig col is 1, Text() 'class', type is CLASS, orig col_end is 6
tokenize(2351): orig line is 1, orig col is 7, Text() 'Capteur', type is WORD, orig col_end is 14
tokenize(2351): orig line is 1, orig col is 15, Text() '{', type is BRACE_OPEN, orig col_end is 16
```
You can also dump the parsing information of each formatting step using the 'dump steps' option.
```.txt
uncrustify -c myExample.cfg -f myExample.cpp -ds dump
```
This will create a series of 'dump_nnn.log' files, each containing the parsing information at
specific points of the formatting process ('dump_000.log' will list the formatting options in use).
You can combine this option with -p and -L to get a lot of detailed debugging information.
```.txt
uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A -ds dump
```
It might be useful to add some code lines to see where something is happening.
Use the package `unc_tools`.
Remove the comment at line:
```.cpp
#define DEVELOP_ONLY
```
Import the package:
```.cpp
#include "unc_tools.h"
```
Add at some places the line:
```.cpp
prot_the_line(__LINE__, 6, 0);
```
Compile again with DEBUG option.
### How to add an option
If you need a new option, there are a few steps to follow.
Take as example the option `sp_trailing_ret_t`
First define the option:
- Insert the code below to the file src/options.h
_NOTE:
This file is processed by make_options.py, and must conform to a particular
format. Option groups are marked by '//begin ' (in upper case; this example
is lower case to prevent being considered a region marker for code folding)
followed by the group description. Options consist of two lines of
declaration preceded by one or more lines of C++ comments. The comments form
the option description and are taken verbatim, aside from stripping the
leading '// '. Only comments immediately preceding an option declaration,
with no blank lines, are taken as part of the description, so a blank line
may be used to separate notations from a description.
An option declaration is 'extern TYPE\nNAME;', optionally followed by
' // = VALUE' if the option has a default value that is different from the
default-constructed value type of the option. The 'VALUE' must be valid C++
code, and is taken verbatim as an argument when creating the option's
instantiation. Note also that the line break, as shown, is required.
_
```.cpp
// Add or remove space around trailing return operator '->'.
extern Option<iarf_e>
sp_trailing_ret_t;
```
- Insert the code below to the file src/space.cpp
```.cpp
if (first->Is(CT_TRAILING_RET_T))
{
// Add or remove space around trailing return operator '->'.
log_rule("sp_trailing_ret_t");
return(options::sp_trailing_ret_t());
}
```
### Portability
We are pretty sure that nothing OS-specific is used in the code base.
The software has been previously tested on the following operating systems:
- Linux
- QNX
- OS X
- FreeBSD, NetBSD, OpenBSD
- Sun Solaris 9
- Windows (binary available)
---------------------------------------------------------------------------
## Running the program
__NOTE__ This application works reasonably well but it has bugs. Do __not__
apply it on your whole codebase without checking the results!
Here are ways to run it:
```
$ uncrustify -c mystyle.cfg -f somefile.c -o somefile.c.unc
$ uncrustify -c mystyle.cfg -f somefile.c > somefile.c.unc
$ uncrustify -c mystyle.cfg somefile.c
$ uncrustify -c mystyle.cfg --no-backup somefile.c
$ uncrustify -c mystyle.cfg *.c
$ uncrustify -c mystyle.cfg --no-backup *.c
```
The `-c` flag selects the configuration file.
The `-f` flag specifies the input file.
The `-o` flag specifies the output file.
If flag `-f` is used without flag `-o` the output will be send to `stdout`.
Alternatively, multiple or single files that should be processed can be
specified at the command end without flags.
If the flag `--no-backup` is missing, every file is saved with the initial
name and an additional suffix (can be changed with --suffix).
For more options descriptions call:
```bash
$ uncrustify -h
```
## Configuring the program
Uncrustify usually reads configuration files that are passed via the `-c`
flag. If the flag is not provided, Uncrustify will try to find a
configuration file via the `UNCRUSTIFY_CONFIG` environment variable or a
file with the name `.uncrustify.cfg` or `uncrustify.cfg` in your home folder.
To get a list of:
- all available options use:
```bash
uncrustify --show-config
```
- all available options in a usable configuration file format use:
```bash
uncrustify --update-config
```
or
```bash
uncrustify --update-config-with-doc
```
As the names suggest, both options can produce output that adds newly
introduced options to your old configuration file. For this your old
configuration file has to be passed via the `-c` flag:
```bash
uncrustify --update-config-with-doc -c path/to/your.cfg
```
Example configuration files that can be used as a starting point can be
found in the `etc/` directory (such as [ben.cfg](./etc/ben.cfg)).
Modify to your liking. Use a quality side-by-side diff tool to determine
if the program did what you wanted. Repeat until your style is refined.
To ease the process a bit, some 3rd party tools are available:
- [Universal Indent GUI](http://universalindent.sourceforge.net/) - A
cross-platform graphical configuration file editor for many code
beautifiers, including Uncrustify.
- [uncrustify_config](https://github.com/CDanU/uncrustify_config) - A web
configuration tool based on Uncrustify's emscripten interface.
- [UncrustifyX](https://github.com/ryanmaxwell/UncrustifyX) - Uncrustify
utility and documentation browser for Mac OS X
Under Windows:
Uncrustify is a command-line tool, if you run it by double-clicking the
executable, it will open a command prompt run the executable
(which prints the help message), and then immediately close the window
as uncrustify exits.
You can open the command prompt (which is an interactive terminal
window that allows you to run commands without it closing as soon as
they exit) and run uncrustify.exe there.
## Using uncrustify with vim
Have a look [here](https://github.com/cofyc/vim-uncrustify)
## Using uncrustify with IntelliJ
Have a look at https://plugins.jetbrains.com/plugin/17528-uncrustify

@ -1,352 +0,0 @@
uncrustify-trinity (0.78.0-0debian13.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.78.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Sun, 18 Nov 2023 17:35:00 +0900
uncrustify-trinity (0.76.0-0debian12.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.76.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Sun, 04 Dec 2022 18:56:43 +0900
uncrustify-trinity (0.75.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.75.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Fri, 06 May 2022 13:49:07 +0900
uncrustify-trinity (0.74.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.74.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
uncrustify-trinity (0.73.0-0debian11.0.0+2) unstable; urgency=medium
* Fix Python detection on CMake < 3.12.
-- Slávek Banko <slavek.banko@axis.cz> Wed, 20 May 2021 00:00:40 +0200
uncrustify-trinity (0.73.0-0debian11.0.0+1) unstable; urgency=medium
* Backported commits cb1a42dd from upstream.
-- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
uncrustify-trinity (0.73.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.73.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
uncrustify-trinity (0.72.0-0debian11.0.0+8) unstable; urgency=medium
* Switch to build using ninja-build
-- Slávek Banko <slavek.banko@axis.cz> Tue, 18 May 2021 19:30:49 +0200
uncrustify-trinity (0.72.0-0debian11.0.0+7) unstable; urgency=medium
* TDE version 0.72-0+7
* Backported commits 5f3f392a and fb66774e from upstream.
-- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 05 Jan 2021 11:08:00 +0900
uncrustify-trinity (0.72.0-0debian11.0.0+6) unstable; urgency=medium
* TDE version 0.72-0+6
* Backported commits 45681e88 and 64d93e3fb from upstream.
-- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 24 Dec 2020 20:14:00 +0900
uncrustify-trinity (0.72.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.72.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 20 Dec 2020 17:52:23 +0900
uncrustify (0.72.0) unstable; urgency=medium
* New upstream version 0.72.0
-- Alexander GQ Gerasiov <gq@debian.org> Thu, 20 Dec 2020 17:34:01 +0900
uncrustify (0.71.0+dfsg1-1) unstable; urgency=medium
* New upstream version 0.71.0
* d/control: Use debhelper-compat syntax, switch to level 12.
* d/control: Use python3 in B-D (Closes: #943295).
* d/control: Bump Standards-Version, no more changes needed.
* d/control: Remove unnnecessary --parallel.
-- Alexander GQ Gerasiov <gq@debian.org> Thu, 27 Aug 2020 17:12:57 +0300
uncrustify (0.69.0+dfsg1-1) unstable; urgency=medium
* New upstream version 0.69.0
* Remove fix_parallel_test.patch: Fixed upstream.
-- Alexander GQ Gerasiov <gq@debian.org> Tue, 02 Jul 2019 19:00:32 +0300
uncrustify (0.68.1+dfsg1-2) unstable; urgency=medium
* Add d/patches/fix_parallel_test.patch: Fix test failure on parallel run.
-- Alexander GQ Gerasiov <gq@debian.org> Mon, 10 Dec 2018 02:36:22 +0300
uncrustify (0.68.1+dfsg1-1) unstable; urgency=medium
* New upstream version 0.68.1
* d/control: Add python-all to Build-Depensds.
* d/rules: Run all tests (now disabled by default by upstream).
-- Alexander GQ Gerasiov <gq@debian.org> Sun, 02 Dec 2018 16:19:42 +0300
uncrustify (0.67+dfsg1-1) unstable; urgency=medium
* New upstream version 0.67
* debian/control: Move git to salsa.
* Add docs-remove-remote-images.patch: Remove remote images from docs.
-- Alexander GQ Gerasiov <gq@debian.org> Mon, 18 Jun 2018 01:13:56 +0300
uncrustify (0.66.1+dfsg1-1) unstable; urgency=medium
* Add debian/gbp.conf.
* New upstream version 0.66.1 Fixed FTBFS on some arches (Closes: #881249)
* Bump Standards-Version to 4.1.2 (no additional changes needed).
-- Alexander GQ Gerasiov <gq@debian.org> Sun, 17 Dec 2017 18:49:06 +0300
uncrustify (0.66+dfsg1-1) unstable; urgency=medium
* debian/control: Remove Fathi Boudra <fabo@debian.org> from uploaders.