Elisp Code for VTK-Style C Indentation: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
mNo edit summary
(Problems when loading into emacs are fixed. Also, functions with arguments on the following lines are now properly indented.)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
To make Emacs' C and C   modes conform to VTK-style indentation, add the following code to your .emacs file.
To make Emacs' C and C++ modes conform to VTK-style indentation, add the following code to your .emacs file.


  (defun c-set-indent-vtk ()
  (defun c-set-indent-vtk ()
Line 13: Line 13:
   (c-set-offset 'label 0)
   (c-set-offset 'label 0)
   (c-set-offset 'topmost-intro-cont 0)
   (c-set-offset 'topmost-intro-cont 0)
   (c-set-offset 'block-open ' )
   (c-set-offset 'block-open '+)
   (c-set-offset 'block-close 0)
   (c-set-offset 'block-close 0)
   (c-set-offset 'substatement ' )
   (c-set-offset 'substatement '+)
   (c-set-offset 'substatement-open ' )
   (c-set-offset 'substatement-open '+)
   (c-set-offset 'statement-block-intro 0)
   (c-set-offset 'statement-block-intro 0)
   (c-set-offset 'access-label '-)
   (c-set-offset 'access-label '-)
Line 24: Line 24:
   (c-set-offset 'defun-open 0)
   (c-set-offset 'defun-open 0)
   (c-set-offset 'defun-close 0)
   (c-set-offset 'defun-close 0)
   (c-set-offset 'defun-block-intro ' )
   (c-set-offset 'defun-block-intro '+)
   (c-set-offset 'class-open 0)
   (c-set-offset 'class-open 0)
   (c-set-offset 'class-close 0)
   (c-set-offset 'class-close 0)
   (c-set-offset 'inline-open 0)
   (c-set-offset 'inline-open 0)
   (c-set-offset 'inline-close 0)
   (c-set-offset 'inline-close 0)
   (c-set-offset 'func-decl-cont ' )
   (c-set-offset 'func-decl-cont '+)
   (c-set-offset 'knr-argdecl-intro 5)
   (c-set-offset 'knr-argdecl-intro 5)
   (c-set-offset 'knr-argdecl 0)
   (c-set-offset 'knr-argdecl 0)
   (c-set-offset 'topmost-intro 0)
   (c-set-offset 'topmost-intro 0)
   (c-set-offset 'member-init-intro ' )
   (c-set-offset 'member-init-intro '+)
   (c-set-offset 'member-init-cont 0)
   (c-set-offset 'member-init-cont 0)
   (c-set-offset 'inher-intro ' )
   (c-set-offset 'inher-intro '+)
   (c-set-offset 'inher-cont 'c-lineup-multi-inher)
   (c-set-offset 'inher-cont 'c-lineup-multi-inher)
   (c-set-offset 'brace-list-open 0)
   (c-set-offset 'brace-list-open 0)
   (c-set-offset 'brace-list-close 0)
   (c-set-offset 'brace-list-close 0)
   (c-set-offset 'brace-list-intro ' )
   (c-set-offset 'brace-list-intro '+)
   (c-set-offset 'brace-list-entry 0)
   (c-set-offset 'brace-list-entry 0)
   (c-set-offset 'brace-entry-open 0)
   (c-set-offset 'brace-entry-open 0)
   (c-set-offset 'statement 0)
   (c-set-offset 'statement 0)
   (c-set-offset 'statement-cont ' )
   (c-set-offset 'statement-cont '+)
   (c-set-offset 'statement-case-intro ' )
   (c-set-offset 'statement-case-intro '+)
   (c-set-offset 'statement-case-open ' )
   (c-set-offset 'statement-case-open '+)
   (c-set-offset 'do-while-closure 0)
   (c-set-offset 'do-while-closure 0)
   (c-set-offset 'else-clause 0)
   (c-set-offset 'else-clause 0)
   (c-set-offset 'catch-clause 0)
   (c-set-offset 'catch-clause 0)
   (c-set-offset 'comment-intro 'c-lineup-comment)
   (c-set-offset 'comment-intro 'c-lineup-comment)
   (c-set-offset 'arglist-intro 'c-lineup-arglist-intro-after-paren)
   (c-set-offset 'arglist-intro '+)
   (c-set-offset 'arglist-cont 'c-lineup-operator-arglist)
   (c-set-offset 'arglist-cont 'c-lineup-arglist-operators)
  (c-set-offset 'arglist-cont-nonempty 'c-lineup-operator-arglist)
   (c-set-offset 'arglist-close 'c-lineup-arglist-operators)
   (c-set-offset 'arglist-close 'c-lineup-arglist)
   (c-set-offset 'stream-op 'c-lineup-streamop)
   (c-set-offset 'stream-op 'c-lineup-streamop)
   (c-set-offset 'inclass ' )
   (c-set-offset 'inclass '+)
   (c-set-offset 'cpp-macro -1000)
   (c-set-offset 'cpp-macro -1000)
   (c-set-offset 'cpp-macro-cont 'c-lineup-dont-change)
   (c-set-offset 'cpp-macro-cont 'c-lineup-dont-change)
Line 64: Line 63:
   (c-set-offset 'extern-lang-open 0)
   (c-set-offset 'extern-lang-open 0)
   (c-set-offset 'extern-lang-close 0)
   (c-set-offset 'extern-lang-close 0)
   (c-set-offset 'inextern-lang ' )
   (c-set-offset 'inextern-lang '+)
   (c-set-offset 'namespace-open 0)
   (c-set-offset 'namespace-open 0)
   (c-set-offset 'namespace-close 0)
   (c-set-offset 'namespace-close 0)
   (c-set-offset 'innamespace ' )
   (c-set-offset 'innamespace '+)
   (c-set-offset 'template-args-cont ' )
   (c-set-offset 'template-args-cont '+)
   (c-set-offset 'inlambda 'c-lineup-inexpr-block)
   (c-set-offset 'inlambda 'c-lineup-inexpr-block)
   (c-set-offset 'lambda-intro-cont ' )
   (c-set-offset 'lambda-intro-cont '+)
   (c-set-offset 'inexpr-statement 0)
   (c-set-offset 'inexpr-statement 0)
   (c-set-offset 'inexpr-class ' )
   (c-set-offset 'inexpr-class '+)
   
   
   (message "VTK indentation."))
   (message "VTK indentation."))

Latest revision as of 18:48, 11 January 2011

To make Emacs' C and C++ modes conform to VTK-style indentation, add the following code to your .emacs file.

(defun c-set-indent-vtk ()
  (interactive)

  (setq c-basic-offset 2)
  (setq c-comment-only-line-offset 0)
  (setq c-indent-comments-syntactically-p t)
  (setq c-electric-pound-behavior '(alignleft))
  (setq indent-tabs-mode nil)

  (c-set-offset 'case-label 0)
  (c-set-offset 'label 0)
  (c-set-offset 'topmost-intro-cont 0)
  (c-set-offset 'block-open '+)
  (c-set-offset 'block-close 0)
  (c-set-offset 'substatement '+)
  (c-set-offset 'substatement-open '+)
  (c-set-offset 'statement-block-intro 0)
  (c-set-offset 'access-label '-)

  (c-set-offset 'string 'c-lineup-dont-change)
  (c-set-offset 'c 'c-lineup-C-comments)
  (c-set-offset 'defun-open 0)
  (c-set-offset 'defun-close 0)
  (c-set-offset 'defun-block-intro '+)
  (c-set-offset 'class-open 0)
  (c-set-offset 'class-close 0)
  (c-set-offset 'inline-open 0)
  (c-set-offset 'inline-close 0)
  (c-set-offset 'func-decl-cont '+)
  (c-set-offset 'knr-argdecl-intro 5)
  (c-set-offset 'knr-argdecl 0)
  (c-set-offset 'topmost-intro 0)
  (c-set-offset 'member-init-intro '+)
  (c-set-offset 'member-init-cont 0)
  (c-set-offset 'inher-intro '+)
  (c-set-offset 'inher-cont 'c-lineup-multi-inher)
  (c-set-offset 'brace-list-open 0)
  (c-set-offset 'brace-list-close 0)
  (c-set-offset 'brace-list-intro '+)
  (c-set-offset 'brace-list-entry 0)
  (c-set-offset 'brace-entry-open 0)
  (c-set-offset 'statement 0)
  (c-set-offset 'statement-cont '+)
  (c-set-offset 'statement-case-intro '+)
  (c-set-offset 'statement-case-open '+)
  (c-set-offset 'do-while-closure 0)
  (c-set-offset 'else-clause 0)
  (c-set-offset 'catch-clause 0)
  (c-set-offset 'comment-intro 'c-lineup-comment)
  (c-set-offset 'arglist-intro '+)
  (c-set-offset 'arglist-cont 'c-lineup-arglist-operators)
  (c-set-offset 'arglist-close 'c-lineup-arglist-operators)
  (c-set-offset 'stream-op 'c-lineup-streamop)
  (c-set-offset 'inclass '+)
  (c-set-offset 'cpp-macro -1000)
  (c-set-offset 'cpp-macro-cont 'c-lineup-dont-change)
  (c-set-offset 'friend 0)
  (c-set-offset 'objc-method-intro -1000)
  (c-set-offset 'objc-method-args-cont 'c-lineup-ObjC-method-args)
  (c-set-offset 'objc-method-call-cont 'c-lineup-ObjC-method-call)
  (c-set-offset 'extern-lang-open 0)
  (c-set-offset 'extern-lang-close 0)
  (c-set-offset 'inextern-lang '+)
  (c-set-offset 'namespace-open 0)
  (c-set-offset 'namespace-close 0)
  (c-set-offset 'innamespace '+)
  (c-set-offset 'template-args-cont '+)
  (c-set-offset 'inlambda 'c-lineup-inexpr-block)
  (c-set-offset 'lambda-intro-cont '+)
  (c-set-offset 'inexpr-statement 0)
  (c-set-offset 'inexpr-class '+)

  (message "VTK indentation."))

(add-hook 'c-mode-common-hook 'c-set-indent-vtk)

This will set VTK indentation whenever you start the C or C++ modes. If you don't want to use VTK indentation for all of your code, you can change the add-hook command to

(add-hook 'c-mode-common-hook (lambda () "Set VTK indent."
                                (local-set-key "\C-c\C-i\C-v"
                                               'c-set-indent-vtk)))

This will leave the indentation to default until you hit the key sequence C-c C-i C-v.


VTK: [Welcome | Site Map]