From 3e182aaab39b1b31ad4382c7cf9049732a21cfdf Mon Sep 17 00:00:00 2001 From: Michael Friedrich <michael.friedrich@icinga.com> Date: Wed, 31 Jul 2019 13:59:08 +0200 Subject: [PATCH] Docs: Improve styleguide for Windows --- doc/21-development.md | 22 +++++++++++++++++- .../windows_visual_studio_tabs_c++.png | Bin 0 -> 15837 bytes 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 doc/images/development/windows_visual_studio_tabs_c++.png diff --git a/doc/21-development.md b/doc/21-development.md index f73041c4b..7a8ea2ced 100644 --- a/doc/21-development.md +++ b/doc/21-development.md @@ -9,7 +9,7 @@ development, package builds and tests. * [Test Icinga 2](21-development.md#development-tests) * [Snapshot Packages (Nightly Builds)](21-development.md#development-tests-snapshot-packages) * [Develop Icinga 2](21-development.md#development-develop) - * [Preparations](21-development.md#development-develop-styleguide) + * [Preparations](21-development.md#development-develop-prepare) * [Design Patterns](21-development.md#development-develop-design-patterns) * [Build Tools](21-development.md#development-develop-builds-tools) * [Unit Tests](21-development.md#development-develop-tests) @@ -749,6 +749,9 @@ Depending on the file type, this must be a comment. #### Code Formatting <a id="development-develop-code-formatting"></a> +**Tabs instead of spaces.** Inside Visual Studio, choose to keep tabs instead of +spaces. Tabs should use 4 spaces indent by default, depending on your likings. + We follow the clang format, with some exceptions. - Curly braces for functions and classes always start at a new line. @@ -1614,6 +1617,23 @@ In addition also choose these individual components on Visual Studio 2017: After a while, Visual Studio will be ready. +##### Style Guide for Visual Studio + +Navigate into `Tools > Options > Text Editor` and repeat the following for + +- C++ +- C# + +Navigate into `Tabs` and set: + +- Indenting: Smart (default) +- Tab size: 4 +- Indent size: 4 +- Keep tabs (instead of spaces) + + + + #### Flex and Bison Install it using [chocolatey](https://www.wireshark.org/docs/wsdg_html_chunked/ChSetupWin32.html): diff --git a/doc/images/development/windows_visual_studio_tabs_c++.png b/doc/images/development/windows_visual_studio_tabs_c++.png new file mode 100644 index 0000000000000000000000000000000000000000..d511469be183d84f31dca7ed1f486ac8b74fa104 GIT binary patch literal 15837 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 JS?4Vu{SOxo`JVs) literal 0 HcmV?d00001