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