From 0307f3d5432dfc98cc4be317b0f2ce93e27c336b Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Thu, 27 Feb 2014 07:57:22 -0800 Subject: Add explanations and Emacs / QtCreator settings to CodingStyle These may not be perfect, but they are a start. Signed-off-by: Dirk Hohndel --- CodingStyle | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) (limited to 'CodingStyle') diff --git a/CodingStyle b/CodingStyle index 95fb610f0..a3e4fd17e 100644 --- a/CodingStyle +++ b/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 continuation lines that are alligned with tabs and then spaces @@ -83,3 +103,97 @@ 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) + + + + + + + + CodeStyleData + + false + false + true + false + false + false + false + false + true + false + false + false + true + true + false + true + false + false + false + 8 + true + false + 2 + false + 8 + + + + DisplayName + Subsurface + + -- cgit v1.2.3-70-g09d2