summaryrefslogtreecommitdiff
path: root/cvs-format.el
blob: b3ca77db396670a3b4d62e603cdb1b69ef16c593 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
;; -*- lisp-interaction -*-
;; -*- emacs-lisp -*-
;;
;; Set emacs up for editing code using CVS indentation conventions.
;; See HACKING for more on what those conventions are.
;; To use, put in your .emacs:
;;   (load "c-mode")
;;   (load "cvs-format.el")
;; You need to load c-mode first or else when c-mode autoloads it will
;; clobber the settings from cvs-format.el.  Using c-mode-hook perhaps would
;; be a cleaner way to handle that.  Or see below about (set-c-style "BSD").
;;
;; Credits: Originally from the personal .emacs file of Rich Pixley,
;;      then rich@cygnus.com, circa 1992.  He sez "feel free to copy."
;;
;; If you have an Emacs that does not have "c-mode", but does have
;; "cc-mode" then put this into your .emacs:
;;   (require 'cc-mode)
;;   (load "cvs-format.el")
;;   (add-hook 'c-mode-hook '(lambda () (c-set-style "cvshome")))
;;
;; Credit: From the personal .emacs file of Mark D. Baushke
;  circa 2005. Feel free to do anything you want with it.

;;
;;
;;	This section sets constants used by c-mode for formating
;;
;;

;;  If `c-auto-newline' is non-`nil', newlines are inserted both
;;before and after braces that you insert, and after colons and semicolons.
;;Correct C indentation is done on all the lines that are made this way.

(if (boundp 'c-auto-newline)
    (setq c-auto-newline nil))


;;*Non-nil means TAB in C mode should always reindent the current line,
;;regardless of where in the line point is when the TAB command is used.
;;It might be desirable to set this to nil for CVS, since unlike GNU
;; CVS often uses comments over to the right separated by TABs.
;; Depends some on whether you're in the habit of using TAB to
;; reindent.
;(setq c-tab-always-indent nil)

;;; It seems to me that 
;;;    `M-x set-c-style BSD RET'
;;; or
;;;    (set-c-style "BSD")
;;; takes care of the indentation parameters correctly.


;;  C does not have anything analogous to particular function names for which
;;special forms of indentation are desirable.  However, it has a different
;;need for customization facilities: many different styles of C indentation
;;are in common use.
;;
;;  There are six variables you can set to control the style that Emacs C
;;mode will use.
;;
;;`c-indent-level'     
;;     Indentation of C statements within surrounding block.  The surrounding
;;     block's indentation is the indentation of the line on which the
;;     open-brace appears.

(if (boundp 'c-indent-level)
    (setq c-indent-level 4))

;;`c-continued-statement-offset'     
;;     Extra indentation given to a substatement, such as the then-clause of
;;     an if or body of a while.

(if (boundp 'c-continued-statement-offset)
    (setq c-continued-statement-offset 4))

;;`c-brace-offset'     
;;     Extra indentation for line if it starts with an open brace.

(if (boundp 'c-brace-offset)
    (setq c-brace-offset -4))

;;`c-brace-imaginary-offset'     
;;     An open brace following other text is treated as if it were this far
;;     to the right of the start of its line.

(if (boundp 'c-brace-imaginary-offset)
    (setq c-brace-imaginary-offset 0))

;;`c-argdecl-indent'     
;;     Indentation level of declarations of C function arguments.

(if (boundp 'c-argdecl-indent)
    (setq c-argdecl-indent 4))

;;`c-label-offset'     
;;     Extra indentation for line that is a label, or case or default.
;;  This doesn't quite do the right thing for CVS switches, which use the
;;    switch (foo)
;;    {
;;        case 0:
;;            break;
;;  style.  But if one manually aligns the first case, then the rest
;;  should work OK.
(if (boundp 'c-label-offset)
    (setq c-label-offset -2))

;;
;;
;;	This section sets constants used by cc-mode for formating
;;
;;

;; Folks that are using cc-mode in the more modern version of Emacs
;; will likely find this useful

(if (and (fboundp 'featurep)
	 (featurep 'cc-styles)
	 (fboundp 'c-add-style))
    (c-add-style "cvshome"
		 '((c-brace-offset . -4)
		   (c-basic-offset . 4)
		   (c-continued-statement-offset . (4 . 4))
		   (c-offsets-alist
		    . ((statement-block-intro . +)
		       (knr-argdecl-intro . 4)
		       (substatement-open . 0)
		       (label . 2)
		       (case-label . 2)
		       (statement-case-open . +)
		       (statement-cont . +)
		       (arglist-intro . c-lineup-arglist-intro-after-paren)
		       (arglist-close . c-lineup-arglist)
		       (inline-open . 0)
		       (brace-list-open . 0)))
		   (c-special-indent-hook . c-gnu-impose-minimum)
		   (c-block-comment-prefix . ""))))

;; You may now use the following when you wish to make use of the style:
;;     `M-x c-set-style RET cvshome RET'
;; or
;;     (c-set-style "cvshome")
;; to take care of things.

;;;; eof