From f50c1bed963ac02b75f39124dda23c69441c0bff Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Fri, 12 Jun 2009 15:00:24 +0100 Subject: [PATCH] dot-emacs: Fix C indentation quite a lot. This change fixes a number of C indentation annoyances: * One-line blocks are indented relative to the preceding line. * Stuff inside `extern "C" { ... }' isn't indended. * The `extern "C" {' line itself /is/ indended. * Blocks in macro argument lists are fixed. * Macro indentation is fixed. --- dot-emacs.el | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/dot-emacs.el b/dot-emacs.el index 3ee4ab0..0d27f52 100644 --- a/dot-emacs.el +++ b/dot-emacs.el @@ -816,19 +816,42 @@ the regular expressions in `mdw-backup-disable-regexps'." (define-key c-mode-map "*" nil) (define-key c-mode-map "/" nil))) +(defun mdw-c-lineup-arglist (langelem) + "Hack for DWIMmery in c-lineup-arglist." + (if (save-excursion + (c-block-in-arglist-dwim (c-langelem-2nd-pos c-syntactic-element))) + 0 + (c-lineup-arglist langelem))) + +(defun mdw-c-indent-extern-mumble (langelem) + "Indent `extern \"...\" {' lines." + (save-excursion + (back-to-indentation) + (if (looking-at + "\\s-*\\\\s-*\"\\([^\\\\\"]+\\|\\.\\)*\"\\s-*{") + c-basic-offset + nil))) + (defun mdw-c-style () (c-add-style "[mdw] C and C++ style" '((c-basic-offset . 2) (comment-column . 40) (c-class-key . "class") - (c-offsets-alist (substatement-open . 0) - (label . 0) - (case-label . +) - (access-label . -) - (inclass . +) - (inline-open . ++) - (statement-cont . 0) - (statement-case-intro . +))) + (c-backslash-column . 72) + (c-offsets-alist + (substatement-open . (add 0 c-indent-one-line-block)) + (defun-open . (add 0 c-indent-one-line-block)) + (arglist-cont-nonempty . mdw-c-lineup-arglist) + (topmost-intro . mdw-c-indent-extern-mumble) + (cpp-define-intro . 0) + (inextern-lang . [0]) + (label . 0) + (case-label . +) + (access-label . -) + (inclass . +) + (inline-open . ++) + (statement-cont . 0) + (statement-case-intro . +))) t)) (defun mdw-fontify-c-and-c++ () -- 2.11.0