minor rearrangement of text
[dealii.wiki.git] / Emacs.md
1 # Notes on using emacs for deal.II
2
3 # Introduction
4
5 Emacs used to be the tool most of the deal.II developers worked with day in and day out. However, this has more to do with the fact that these people started to use computers in the late 1980s and early 1990s when emacs was a state-of-the-art editor. This is no longer the case, and so we have moved on. The purpose of this site is simply to present the set of emacs macros that have been used to format most of the deal.II source code.
6
7 If you want to use this style and you still happen to use emacs then the following emacs elisp macros are for you:
8
9 ```elisp
10 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
11 ;;
12 ;; Emacs macros supporting deal.II programming
13 ;;
14 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
15
16 (defun deal-indentation ()
17 "Install the indentation offsets used in the deal.II source code.
18 All contributions to the library should follow this indentation in
19 order to maintain a common look and feel as well as avoiding
20 unnecessary diffs in the archives.
21
22 The function is intended as a part of the cc-mode-startup-fun hook."
23
24   (setq c-echo-semantic-information-p t)
25   (setq c-basic-offset 2)
26   (c-set-offset 'string                0)
27   (c-set-offset 'defun-open            0)
28   (c-set-offset 'defun-close           0)
29   (c-set-offset 'defun-block-intro     '+)
30   (c-set-offset 'class-open            0)
31   (c-set-offset 'class-close           0)
32   (c-set-offset 'inline-open           '+)
33   (c-set-offset 'inline-close          0)
34   (c-set-offset 'knr-argdecl-intro     '+)
35   (c-set-offset 'knr-argdecl           0)
36   (c-set-offset 'topmost-intro         0)
37   (c-set-offset 'topmost-intro-cont    0)
38   (c-set-offset 'member-init-intro     16)
39   (c-set-offset 'member-init-cont      0)
40   (c-set-offset 'inher-intro           '+)
41   (c-set-offset 'inher-cont            'c-lineup-multi-inher)
42   (c-set-offset 'block-close           0)
43   (c-set-offset 'brace-list-open       0)
44   (c-set-offset 'brace-list-close      0)
45   (c-set-offset 'brace-list-intro      6)
46   (c-set-offset 'brace-list-entry      0)
47   (c-set-offset 'statement             'c-lineup-runin-statements)
48   (c-set-offset 'statement-cont        'c-lineup-math)
49   (c-set-offset 'statement-block-intro '+)
50   (c-set-offset 'statement-case-intro  6)
51   (c-set-offset 'statement-case-open   0)
52   (c-set-offset 'substatement          '+)
53   (c-set-offset 'substatement-open     '+)
54   (c-set-offset 'case-label            '+)
55   (c-set-offset 'access-label          '-)
56   (c-set-offset 'label                 2)
57   (c-set-offset 'do-while-closure      0)
58   (c-set-offset 'else-clause           0)
59   (c-set-offset 'arglist-intro         '+)
60   (c-set-offset 'arglist-cont          0)
61   (c-set-offset 'arglist-cont-nonempty 'c-lineup-arglist)
62   (c-set-offset 'arglist-close         0)
63   (c-set-offset 'stream-op             'c-lineup-streamop)
64   (c-set-offset 'inclass               '++)
65   (c-set-offset 'cpp-macro             -1000)
66   (c-set-offset 'friend                0)
67
68   (c-set-offset 'comment-intro         'c-lineup-comment)
69   (c-set-offset 'c                     'c-lineup-C-comments)
70   
71   (c-set-offset 'objc-method-intro     -1000)
72   (c-set-offset 'objc-method-args-cont 'c-lineup-ObjC-method-args)
73   (c-set-offset 'objc-method-call-cont 'c-lineup-ObjC-method-call)
74         
75   (setq c-comment-only-line-offset 33)
76   (setq c-hanging-comment-ender-p   nil)
77   (setq c-hanging-comment-starter-p nil)
78
79   (setq c-tab-always-indent t)
80 )
81
82 (defun deal-newline ()
83 "Setup emacs to automatically insert newlines and indentation before
84 and after semicolon or braces, like it is done in the deal.II coding style."
85   (define-key c++-mode-map "\C-m" 'newline-and-indent)
86   (setq c-hanging-braces-alist '((defun-open        . (before after))
87                                  (defun-close       . (before after))
88                                  (class-open        . (before after))
89                                  (class-close       . (after))
90                                  (inline-open       . (before after))
91                                  (inline-close      . (before after))
92                                  (block-open        . (before after))
93                                  (block-close       . (after))
94                                  (brace-list-open   . (nil))))
95   (setq c-hanging-colons-alist '((member-init-intro . (after))
96                                  (inher-intro       . (after))
97                                  (label             . (after))
98                                  (case-label        . (after))
99                                  (access-label      . (after))))
100   (setq c-cleanup-list '(empty-defun-braces
101                          defun-close-semi
102                          list-close-comma
103                          scope-operator))
104   (setq c-default-macroize-column 65)
105 )
106
107 (provide 'dealmacros)
108 ```

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.