;;; ;;; C, perl and C++ indentation, Burgess style. (Thomas Sevaldrud) ;;; (defconst burgess-c-style '((c-tab-always-indent . t) (c-hanging-braces-alist . ((substatement-open before after) (brace-list-open))) (c-hanging-colons-alist . ((member-init-intro before) (inher-intro) (case-label after) (label after) (access-label after))) (c-cleanup-list . (scope-operator)) (c-offsets-alist . ((arglist-close . c-lineup-arglist) (defun-block-intro . 1) (substatement-open . 3) (statement-block-intro . 0) (topmost-intro . -1) (case-label . 0) (block-open . 0) (knr-argdecl-intro . -))) ;(c-echo-syntactic-information-p . t) ) "Burgess Programming Style") ;; Customizations for all of c-mode, c++-mode, and objc-mode (defun burgess-c-mode-common-hook () ;; add my personal style and set it for the current buffer (c-add-style "BURGESS" burgess-c-style t) ;; offset customizations not in burgess-c-style (c-set-offset 'member-init-intro '++) ;; other customizations ;; keybindings for C, C++, and Objective-C. We can put these in ;; c-mode-map because c++-mode-map and objc-mode-map inherit it (define-key c-mode-map "\C-m" 'newline-and-indent) ) (add-hook 'c-mode-common-hook 'burgess-c-mode-common-hook) ;;; ;;; Lite hack for å slippe å skrive inn kompileringskommandoen i c, ;;; (hvis ikke Makfile eksisterer) ;;; samt en fancy heading hvis det er en ny fil. ;;; (add-hook 'c-mode-hook (lambda () ; (local-set-key "\C-c\C-c" 'compile) (cond ((not (file-exists-p (buffer-file-name))) (insert-string (concat "/*" (make-string 75 ?*) "*/\n" "/*" (make-string 75 ? ) "*/\n" (format "/* File: %-67s */\n" (buffer-name)) "/*" (make-string 75 ? ) "*/\n" (format "/* Created: %-64s */\n" (current-time-string)) "/*" (make-string 75 ? ) "*/\n" "/* Author: > */\n" "/*" (make-string 75 ? ) "*/\n" "/* Revision: $Id$ */\n" "/*" (make-string 75 ? ) "*/\n" "/* Description: */\n" "/*" (make-string 75 ? ) "*/\n" "/*" (make-string 75 ?*) "*/\n" "\n#include \n")))) (outline-minor-mode 1) (or (file-exists-p "makefile") (file-exists-p "Makefile") (set (make-local-variable 'compile-command) (concat "gcc -o " (substring (file-name-nondirectory buffer-file-name) 0 (string-match "\\.c$" (file-name-nondirectory buffer-file-name))) " " (file-name-nondirectory buffer-file-name)))))) ;;; ;;; Samme for C++ (add-hook 'c++-mode-hook (lambda () ; (local-set-key "\C-c\C-c" 'compile) (cond ((not (file-exists-p (buffer-file-name))) (insert-string (concat "/*" (make-string 75 ?=) "*/\n" "/*" (make-string 75 ? ) "*/\n" (format "/* File: %-67s */\n" (buffer-name)) "/*" (make-string 75 ? ) "*/\n" (format "/* Created: %-64s */\n" (current-time-string)) "/*" (make-string 75 ? ) "*/\n" "/* Author: */\n" "/*" (make-string 75 ? ) "*/\n" "/* Revision: $Id$ */\n" "/*" (make-string 75 ? ) "*/\n" "/* Description: */\n" "/*" (make-string 75 ? ) "*/\n" "/*" (make-string 75 ?=) "*/\n" "/* */\n" "/*" (make-string 75 ?=) "*/\n" "\n#include \n")))) (outline-minor-mode 1) (or (file-exists-p "makefile") (file-exists-p "Makefile") (set (make-local-variable 'compile-command) (concat "g++ -o " (substring (file-name-nondirectory buffer-file-name) 0 (string-match "\\.C$" (file-name-nondirectory buffer-file-name))) " " (file-name-nondirectory buffer-file-name)))))) ;;; Mark hacks ( setq perl-mode-hook '(lambda() (setq perl-indent-level 0) (setq perl-continued-statement-offset 3) (setq perl-continued-brace-offset -3) (setq perl-brace-offset 3) (setq perl-brace-imaginary-offset 0) (setq perl-label-offset -3) (define-key perl-mode-map "\C-m" 'newline-and-indent) ) ) ( setq java-mode-hook '(lambda() (setq java-indent-level 0) (setq java-continued-statement-offset 3) (setq java-continued-brace-offset -4) (setq java-brace-offset 3) (setq java-brace-imaginary-offset 0) (setq java-label-offset -4) (setq java-statement-block-intro . +) (setq java-knr-argdecl-intro . 3) (setq java-substatement-open . 0) (setq java-label . 0) (setq java-statement-case-open . 0) (setq java-statement-cont . 0) (define-key java-mode-map "\C-m" 'newline-and-indent) ) )