mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Add explanations and Emacs / QtCreator settings to CodingStyle
These may not be perfect, but they are a start. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
68d80e7a9d
commit
0307f3d543
1 changed files with 114 additions and 0 deletions
114
CodingStyle
114
CodingStyle
|
@ -1,3 +1,23 @@
|
||||||
|
Coding Style
|
||||||
|
============
|
||||||
|
|
||||||
|
Here are some of the basics that we are trying to enforce for our coding
|
||||||
|
style. The existing code (as of the commit that adds these lines) is not
|
||||||
|
yet fully consistent to these rules, but following these rules will make
|
||||||
|
sure that no one yells at you about your patches.
|
||||||
|
|
||||||
|
We have a script that can be used to reformat code to be reasonably close
|
||||||
|
to these rules; it's in scripts/whitespace.pl - this script requires
|
||||||
|
clang-format to be installed (which sadly isn't installed by default on
|
||||||
|
any of our platforms; even on Mac where clang is the default compiler).
|
||||||
|
|
||||||
|
At the end of this file are some ideas for your .emacs file (if that's
|
||||||
|
your editor of choice) as well as for QtCreator. If you have settings for
|
||||||
|
other editors that implement this coding style, please add them here.
|
||||||
|
|
||||||
|
Basic rules
|
||||||
|
===========
|
||||||
|
|
||||||
- all indentation is tabs (set to 8 char) with the exception of
|
- all indentation is tabs (set to 8 char) with the exception of
|
||||||
continuation lines that are alligned with tabs and then spaces
|
continuation lines that are alligned with tabs and then spaces
|
||||||
|
|
||||||
|
@ -83,3 +103,97 @@
|
||||||
do_something(i);
|
do_something(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Sample Settings
|
||||||
|
===============
|
||||||
|
|
||||||
|
Emacs
|
||||||
|
-----
|
||||||
|
|
||||||
|
These lines in your .emacs file should get you fairly close when it comes
|
||||||
|
to indentation - many of the other rules you have to follow manually
|
||||||
|
|
||||||
|
;; indentation
|
||||||
|
(defun c-lineup-arglist-tabs-only (ignored)
|
||||||
|
"Line up argument lists by tabs, not spaces"
|
||||||
|
(let* ((anchor (c-langelem-pos c-syntactic-element))
|
||||||
|
(column (c-langelem-2nd-pos c-syntactic-element))
|
||||||
|
(offset (- (1+ column) anchor))
|
||||||
|
(steps (floor offset c-basic-offset)))
|
||||||
|
(* (max steps 1)
|
||||||
|
c-basic-offset)))
|
||||||
|
|
||||||
|
(add-hook 'c-mode-common-hook
|
||||||
|
(lambda ()
|
||||||
|
;; Add kernel style
|
||||||
|
(c-add-style
|
||||||
|
"linux-tabs-only"
|
||||||
|
'("linux" (c-offsets-alist
|
||||||
|
(arglist-cont-nonempty
|
||||||
|
c-lineup-gcc-asm-reg
|
||||||
|
c-lineup-arglist-tabs-only))))))
|
||||||
|
|
||||||
|
(add-hook 'c-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(let ((filename (buffer-file-name)))
|
||||||
|
;; Enable kernel mode for the appropriate files
|
||||||
|
(setq indent-tabs-mode t)
|
||||||
|
(c-set-style "linux-tabs-only"))))
|
||||||
|
|
||||||
|
(add-hook 'c++-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(let ((filename (buffer-file-name)))
|
||||||
|
;; Enable kernel mode for the appropriate files
|
||||||
|
(setq indent-tabs-mode t)
|
||||||
|
(c-set-style "linux-tabs-only"))))
|
||||||
|
|
||||||
|
|
||||||
|
QtCreator
|
||||||
|
---------
|
||||||
|
|
||||||
|
These settings seem to get indentation right in QtCreator. Making TAB
|
||||||
|
always adjust indent makes it hard to add hard tabs before '\' when
|
||||||
|
creating continuing lines. Copying a tab with your mouse / ctrl-C and
|
||||||
|
inserting it with ctrl-V seems to work around that problem (use Command
|
||||||
|
instead of ctrl on your Mac)
|
||||||
|
|
||||||
|
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE QtCreatorCodeStyle>
|
||||||
|
<!-- Written by QtCreator 3.0.0, 2014-02-27T07:52:57. -->
|
||||||
|
<qtcreator>
|
||||||
|
<data>
|
||||||
|
<variable>CodeStyleData</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="bool" key="AlignAssignments">false</value>
|
||||||
|
<value type="bool" key="AutoSpacesForTabs">false</value>
|
||||||
|
<value type="bool" key="BindStarToIdentifier">true</value>
|
||||||
|
<value type="bool" key="BindStarToLeftSpecifier">false</value>
|
||||||
|
<value type="bool" key="BindStarToRightSpecifier">false</value>
|
||||||
|
<value type="bool" key="BindStarToTypeName">false</value>
|
||||||
|
<value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">false</value>
|
||||||
|
<value type="bool" key="IndentAccessSpecifiers">false</value>
|
||||||
|
<value type="bool" key="IndentBlockBody">true</value>
|
||||||
|
<value type="bool" key="IndentBlockBraces">false</value>
|
||||||
|
<value type="bool" key="IndentBlocksRelativeToSwitchLabels">false</value>
|
||||||
|
<value type="bool" key="IndentClassBraces">false</value>
|
||||||
|
<value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
|
||||||
|
<value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
|
||||||
|
<value type="bool" key="IndentEnumBraces">false</value>
|
||||||
|
<value type="bool" key="IndentFunctionBody">true</value>
|
||||||
|
<value type="bool" key="IndentFunctionBraces">false</value>
|
||||||
|
<value type="bool" key="IndentNamespaceBody">false</value>
|
||||||
|
<value type="bool" key="IndentNamespaceBraces">false</value>
|
||||||
|
<value type="int" key="IndentSize">8</value>
|
||||||
|
<value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
|
||||||
|
<value type="bool" key="IndentSwitchLabels">false</value>
|
||||||
|
<value type="int" key="PaddingMode">2</value>
|
||||||
|
<value type="bool" key="SpacesForTabs">false</value>
|
||||||
|
<value type="int" key="TabSize">8</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>DisplayName</variable>
|
||||||
|
<value type="QString">Subsurface</value>
|
||||||
|
</data>
|
||||||
|
</qtcreator>
|
||||||
|
|
Loading…
Reference in a new issue