blob: f99791719c5c68afec14d9c2fb5bace971bb0e78 (
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
|
;;; -*- mode: emacs-lisp; indent-tabs-mode: nil -*-
(defconst krb5-c-style
'("bsd"
(c-basic-offset . 4)
(c-cleanup-list . (brace-elseif-brace
brace-else-brace
defun-close-semi))
(c-comment-continuation-stars . "* ")
(c-comment-only-line-offset . 0)
(c-electric-pound-behavior . (alignleft))
(c-hanging-braces-alist . ((block-close . c-snug-do-while)
(brace-list-open)
(class-open after)
(extern-lang-open after)
(substatement-open after)))
(c-hanging-colons-alist . ((case-label after)
(label after)))
(c-hanging-comment-starter-p . nil)
(c-hanging-comment-ender-p . nil)
(c-indent-comments-syntactically-p . t)
(c-label-minimum-indentation . 0)
(c-offsets-alist . ((inextern-lang . 0)
(arglist-close . 0)))
(c-special-indent-hook . nil)
(fill-column . 79)))
;; Use eval-after-load rather than c-initialization-hook; this ensures
;; that the style gets defined even if a user loads this file after
;; initializing cc-mode.
(eval-after-load 'cc-mode (c-add-style "krb5" krb5-c-style))
;; We don't use a c-file-style file-local variable setting in our
;; source code, to avoid errors for emacs users who don't define the
;; "krb5" style. Instead, use this heuristic.
;;
;; TODO: modify to also look for unique files in the source tree.
(defun krb5-c-mode-hook ()
(if (and (eq major-mode 'c-mode)
(eq c-basic-offset 4)
(eq indent-tabs-mode nil))
(c-set-style "krb5")))
;; (add-hook 'c-mode-common-hook 'krb5-c-mode-hook)
;; Use hack-local-variables-hook because the c-mode hooks run before
;; hack-local-variables runs.
(add-hook 'hack-local-variables-hook 'krb5-c-mode-hook)
;; emacs-23.x has a buggy cc-mode that incorrectly deals with case
;; labels with character constants.
(if (and (string-match "^23\\." emacs-version)
(require 'cc-defs)
(string-match "5\\.31\\.[0-7]" c-version))
(let ((load-path (cons (file-name-directory load-file-name) load-path)))
(load "krb5-hack-cc-mode-caselabel")))
|