summaryrefslogtreecommitdiff
path: root/lisp/progmodes/cc-cmds.el
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2018-08-27 19:49:25 +0000
committerAlan Mackenzie <acm@muc.de>2018-08-27 19:49:25 +0000
commit3266e69dabfb36b2c9886a5e31b87e322d01ca7f (patch)
tree3edebccd18c5df9bb0d76ce73a0c370c67f6ca67 /lisp/progmodes/cc-cmds.el
parent674f276c0ab3e9759d33f37971ef87f84a3b0683 (diff)
downloademacs-3266e69dabfb36b2c9886a5e31b87e322d01ca7f.tar.gz
c-where-wrt-brace-construct: deal with point following a struct's semicolon.
More precisely, when point is right after the terminating semicolon of a construct like "struct foo { .... } bar;", the function must return 'at-function-end. * lisp/progmodes/cc-cmds.el (c-where-wrt-brace-construct): Surround an existing test for 'at-function-end with an `or' form, the other arm testing for being after the semicolon above.
Diffstat (limited to 'lisp/progmodes/cc-cmds.el')
-rw-r--r--lisp/progmodes/cc-cmds.el32
1 files changed, 17 insertions, 15 deletions
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index 478ccf18029..4f256e1008f 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -1441,21 +1441,23 @@ No indentation or other \"electric\" behavior is performed."
'in-block)
((c-in-function-trailer-p)
'in-trailer)
- ((and (not least-enclosing)
- (consp paren-state)
- (consp (car paren-state))
- (eq start (cdar paren-state))
- (or
- (save-excursion
- (c-forward-syntactic-ws)
- (or (not (looking-at c-symbol-start))
- (looking-at c-keywords-regexp)))
- (save-excursion
- (goto-char (caar paren-state))
- (c-beginning-of-decl-1
- (and least-enclosing
- (c-safe-position least-enclosing paren-state)))
- (not (looking-at c-defun-type-name-decl-key)))))
+ ((or (and (eq (char-before) ?\;)
+ (save-excursion
+ (backward-char)
+ (c-in-function-trailer-p)))
+ (and (not least-enclosing)
+ (consp paren-state)
+ (consp (car paren-state))
+ (eq start (cdar paren-state))
+ (or
+ (save-excursion
+ (c-forward-syntactic-ws)
+ (or (not (looking-at c-symbol-start))
+ (looking-at c-keywords-regexp)))
+ (save-excursion
+ (goto-char (caar paren-state))
+ (c-beginning-of-decl-1)
+ (not (looking-at c-defun-type-name-decl-key))))))
'at-function-end)
(t
;; Find the start of the current declaration. NOTE: If we're in the