;; C style for Emacs, to assist in following DAGuE coding conventions (originally from PETSc project)
((nil . ((indent-tabs-mode         . nil)
         (tab-width                . 8)
         (show-trailing-whitespace . t)))
 (c-mode . ((c-tab-always-indent        . t)
            (c-basic-offset		. 4)
            (c-comment-only-line-offset . 0)
            (c-hanging-braces-alist     . ((substatement-open after)
                                           (brace-list-open after)
                                           (brace-entry-open)
                                           (defun-open after)
                                           (class-open after)
                                           (inline-open after)
                                           (block-open after)
                                           (block-close . c-snug-do-while)
                                           (statement-case-open after)
                                           (substatement after)))
            (c-hanging-colons-alist     . ((member-init-intro before)
                                           (inher-intro)
                                           (case-label after)
                                           (label after)
                                           (access-label after)))
            (c-hanging-semi&comma-criteria . (c-semi&comma-no-newlines-before-nonblanks))
            (c-cleanup-list             . (scope-operator
                                           brace-else-brace
                                           brace-elseif-brace
                                           brace-catch-brace
                                           empty-defun-braces
                                           list-close-comma
                                           defun-close-semi))
            (c-offsets-alist            . ((inexpr-class . +)
                                           (inexpr-statement . +)
                                           (lambda-intro-cont . +)
                                           (inlambda . c-lineup-inexpr-block)
                                           (template-args-cont c-lineup-template-args +)
                                           (incomposition . +)
                                           (inmodule . +)
                                           (innamespace . +)
                                           (inextern-lang . +)
                                           (composition-close . 0)
                                           (module-close . 0)
                                           (namespace-close . 0)
                                           (extern-lang-close . 0)
                                           (composition-open . 0)
                                           (module-open . 0)
                                           (namespace-open . 0)
                                           (extern-lang-open . 0)
                                           (objc-method-call-cont c-lineup-ObjC-method-call-colons c-lineup-ObjC-method-call +)
                                           (objc-method-args-cont . c-lineup-ObjC-method-args)
                                           (objc-method-intro .
                                                              [0])
                                           (friend . 0)
                                           (cpp-define-intro c-lineup-cpp-define +)
                                           (cpp-macro-cont . +)
                                           (cpp-macro .
                                                      [0])
                                           (inclass . +)
                                           (stream-op . c-lineup-streamop)
                                           (arglist-cont-nonempty c-lineup-gcc-asm-reg c-lineup-arglist)
                                           (arglist-cont c-lineup-gcc-asm-reg 0)
                                           (arglist-intro . +)
                                           (catch-clause . 0)
                                           (else-clause . 0)
                                           (do-while-closure . 0)
                                           (label . 2)
                                           (access-label . -)
                                           (substatement-label . 2)
                                           (substatement . +)
                                           (statement-case-open . 0)
                                           (statement-case-intro . +)
                                           (statement-block-intro . +)
                                           (statement-cont . +)
                                           (statement . 0)
                                           (brace-entry-open . 0)
                                           (brace-list-entry . 0)
                                           (brace-list-intro . +)
                                           (brace-list-close . 0)
                                           (brace-list-open . 0)
                                           (block-close . 0)
                                           (inher-cont . c-lineup-multi-inher)
                                           (inher-intro . +)
                                           (member-init-cont . c-lineup-multi-inher)
                                           (member-init-intro . +)
                                           (annotation-var-cont . +)
                                           (annotation-top-cont . 0)
                                           (topmost-intro-cont . c-lineup-topmost-intro-cont)
                                           (topmost-intro . 0)
                                           (knr-argdecl . 0)
                                           (func-decl-cont . +)
                                           (inline-close . 0)
                                           (inline-open . +)
                                           (class-close . 0)
                                           (class-open . 0)
                                           (defun-block-intro . +)
                                           (defun-close . 0)
                                           (defun-open . 0)
                                           (string . c-lineup-dont-change)
                                           (arglist-close . c-lineup-arglist)
                                           (substatement-open . 0)
                                           (case-label . 0)
                                           (block-open . 0)
                                           (c . 1)
                                           (comment-intro . 0)
                                           (knr-argdecl-intro . -)))
            (fill-column . 80)))
 (c++-mode . ((c-tab-always-indent        . t)
              (c-basic-offset		. 4)
              (c-comment-only-line-offset . 0)
              (c-hanging-braces-alist     . ((substatement-open after)
                                             (brace-list-open after)
                                             (brace-entry-open)
                                             (defun-open after)
                                             (class-open after)
                                             (inline-open after)
                                             (block-open after)
                                             (block-close . c-snug-do-while)
                                             (statement-case-open after)
                                             (substatement after)))
              (c-hanging-colons-alist     . ((member-init-intro before)
                                             (inher-intro)
                                             (case-label after)
                                             (label after)
                                             (access-label after)))
              (c-hanging-semi&comma-criteria . (c-semi&comma-no-newlines-before-nonblanks))
              (c-cleanup-list             . (scope-operator
                                             brace-else-brace
                                             brace-elseif-brace
                                             brace-catch-brace
                                             empty-defun-braces
                                             list-close-comma
                                             defun-close-semi))
              (c-offsets-alist            . ((inexpr-class . +)
                                             (inexpr-statement . +)
                                             (lambda-intro-cont . +)
                                             (inlambda . c-lineup-inexpr-block)
                                             (template-args-cont c-lineup-template-args +)
                                             (incomposition . +)
                                             (inmodule . +)
                                             (innamespace . +)
                                             (inextern-lang . +)
                                             (composition-close . 0)
                                             (module-close . 0)
                                             (namespace-close . 0)
                                             (extern-lang-close . 0)
                                             (composition-open . 0)
                                             (module-open . 0)
                                             (namespace-open . 0)
                                             (extern-lang-open . 0)
                                             (objc-method-call-cont c-lineup-ObjC-method-call-colons c-lineup-ObjC-method-call +)
                                             (objc-method-args-cont . c-lineup-ObjC-method-args)
                                             (objc-method-intro .
                                                                [0])
                                             (friend . 0)
                                             (cpp-define-intro c-lineup-cpp-define +)
                                             (cpp-macro-cont . +)
                                             (cpp-macro .
                                                        [0])
                                             (inclass . +)
                                             (stream-op . c-lineup-streamop)
                                             (arglist-cont-nonempty c-lineup-gcc-asm-reg c-lineup-arglist)
                                             (arglist-cont c-lineup-gcc-asm-reg 0)
                                             (arglist-intro . +)
                                             (catch-clause . 0)
                                             (else-clause . 0)
                                             (do-while-closure . 0)
                                             (label . 2)
                                             (access-label . -)
                                             (substatement-label . 2)
                                             (substatement . +)
                                             (statement-case-open . 0)
                                             (statement-case-intro . +)
                                             (statement-block-intro . +)
                                             (statement-cont . +)
                                             (statement . 0)
                                             (brace-entry-open . 0)
                                             (brace-list-entry . 0)
                                             (brace-list-intro . +)
                                             (brace-list-close . 0)
                                             (brace-list-open . 0)
                                             (block-close . 0)
                                             (inher-cont . c-lineup-multi-inher)
                                             (inher-intro . +)
                                             (member-init-cont . c-lineup-multi-inher)
                                             (member-init-intro . +)
                                             (annotation-var-cont . +)
                                             (annotation-top-cont . 0)
                                             (topmost-intro-cont . c-lineup-topmost-intro-cont)
                                             (topmost-intro . 0)
                                             (knr-argdecl . 0)
                                             (func-decl-cont . +)
                                             (inline-close . 0)
                                             (inline-open . +)
                                             (class-close . 0)
                                             (class-open . 0)
                                             (defun-block-intro . +)
                                             (defun-close . 0)
                                             (defun-open . 0)
                                             (string . c-lineup-dont-change)
                                             (arglist-close . c-lineup-arglist)
                                             (substatement-open . 0)
                                             (case-label . 0)
                                             (block-open . 0)
                                             (c . 1)
                                             (comment-intro . 0)
                                             (knr-argdecl-intro . -)))
              (fill-column . 80))))
