-
Notifications
You must be signed in to change notification settings - Fork 4
/
c-setup.el
122 lines (104 loc) · 3.31 KB
/
c-setup.el
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
;; c.f. http://inst.eecs.berkeley.edu/~cs47b/emacs/lisp/cc-mode/cc-styles.el
(defconst uber-c-style
'((c-basic-offset . 4)
(c-auto-newline)
(comment-multi-line t)
(c-offsets-alist
(knr-argdecl-intro . +)
(knr-argdecl . 0)
(statement-cont . +)
(statement-case-open . +)
(substatement-open . 0)
(label . 0)
(case-label . 0)))
"Uber C Style for CC-MODE")
(defconst uber-cpp-style
'((c-basic-offset . 4)
(c-comment-only-line-offset . 0)
(c-offsets-alist
(statement-block-intro . +)
(substatement-open . 0)
(substatement-label . 0)
(label . 0)
(statement-cont . +)))
"Uber C++ Style from stroustrup")
(add-hook 'c++-mode-hook
(lambda () (setq flycheck-clang-language-standard "c++14")))
(add-hook 'c++-mode-hook
(lambda ()
(c-add-style "uber" uber-cpp-style t)
))
;(clang-format-buffer &optional STYLE ASSUME-FILE-NAME)
(add-hook 'c++-mode-hook
(lambda () (add-hook 'before-save-hook 'clang-format-buffer nil 'local)))
;;
;; LwIP Style based on:
;; http://lwip.wikia.com/wiki/Contributing_to_lwIP
;; Source code style
;;
;; do not use tabs.
;; indentation is two spaces per level (i.e. per tab).
;; end debug messages with a trailing newline (\n).
;; one space between keyword and opening bracket.
;; no space between function and opening bracket.
;; one space and no newline before opening curly braces of a block.
;; closing curly brace on a single line.
;; spaces surrounding assignment and comparisons.
;; use current source code style as further reference.
(setq load-path
(append
(list "~/.emacs.d/elisp/"
"/usr/local/share/emacs/site-lisp/"
"~/.local/share/emacs/site-lisp/")
load-path))
;;
(defconst lwip-c-style
'("lwip"
(c-offsets-alist
(arglist-cont-nonempty
c-lineup-gcc-asm-reg
c-lineup-arglist-tabs-only)))
"LwIP C Style for CC-MODE")
(add-hook 'c-mode-common-hook
(lambda ()
;; Add uber style
(c-add-style
"uber" uber-c-style)))
;;
;; Linux style as required in Documentation/CodingStyle
;;
(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)))
(defconst linux-c-style
'((c-basic-offset . 8)
(indent-tabs-mode . t)
(c-offsets-alist
(arglist-cont-nonempty
c-lineup-gcc-asm-reg
c-lineup-arglist-tabs-only)))
"Linux C Style for CC-MODE")
(add-hook 'c-mode-common-hook
(lambda ()
;; Add kernel style
(c-add-style
"linux-tabs-only" linux-c-style)))
;; (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))))))
;; (file-exists-p (concat
;; (file-name-directory filename)
;; "Kbuild"))
;;; https://emacs.stackexchange.com/questions/38822/cscope-minor-mode-not-enabled-for-c-in-emacs-25
(cscope-setup)