From b1e8e010610ae57027c84f2f7c2966baf8ef274d Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Sun, 27 Oct 2013 21:24:17 +0000 Subject: [PATCH] Indent statements in macros following "##" correctly. * progmodes/cc-engine.el (c-crosses-statement-barrier-p): Modify the "#" arm of a cond form to handle "#" and "##" operators. --- lisp/ChangeLog | 6 ++++++ lisp/progmodes/cc-engine.el | 15 +++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 47d6463e188..b9541322ac0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2013-10-27 Alan Mackenzie + + Indent statements in macros following "##" correctly. + * progmodes/cc-engine.el (c-crosses-statement-barrier-p): Modify + the "#" arm of a cond form to handle "#" and "##" operators. + 2013-10-27 Nathan Trapuzzano (tiny change) * linum.el (linum-update-window): Fix boundary test (bug#13446). diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 8cdb3379f66..973ed916694 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -1261,12 +1261,15 @@ comment at the start of cc-engine.el for more info." ;; looking for more : and ?. (setq c-maybe-labelp nil skip-chars (substring c-stmt-delim-chars 0 -2))) - ;; At a CPP construct? - ((and c-opt-cpp-symbol (looking-at c-opt-cpp-symbol) - (save-excursion - (forward-line 0) - (looking-at c-opt-cpp-prefix))) - (c-end-of-macro)) + ;; At a CPP construct or a "#" or "##" operator? + ((and c-opt-cpp-symbol (looking-at c-opt-cpp-symbol)) + (if (save-excursion + (skip-chars-backward " \t") + (and (bolp) + (or (bobp) + (not (eq (char-before (1- (point))) ?\\))))) + (c-end-of-macro) + (skip-chars-forward c-opt-cpp-symbol))) ((memq (char-after) non-skip-list) (throw 'done (point))))) ;; In trailing space after an as yet undetected virtual semicolon? -- 2.39.5