diff options
| author | Alan Mackenzie | 2016-01-15 21:15:20 +0000 |
|---|---|---|
| committer | Paul Eggert | 2016-03-21 17:05:55 -0700 |
| commit | 515ce25ffdfef33a603342fa7fbc793925f54230 (patch) | |
| tree | ebdb1e97076af30a0c16652867723f86c8dd26d8 | |
| parent | a17bddeaa430715bf98f662a2c24ae5af50cc6b8 (diff) | |
| download | emacs-515ce25ffdfef33a603342fa7fbc793925f54230.tar.gz emacs-515ce25ffdfef33a603342fa7fbc793925f54230.zip | |
Don't confuse "::" with ":" when trying to parse member initializers.
* lisp/progmodes/cc-engine.el (c-back-over-member-initializers): Check
more robustly for ":" token when searching backwards for it.
* lisp/progmodes/cc-langs (c-:$-multichar-token-regexp): New language
variable.
[This reapplies commit 9e5452f7166e3634f2d8e943815ed722e1672714,
which was inadvertently lost by merge commit
7823745acbe9b87eea2db4ef434e379fc903ec35.]
| -rw-r--r-- | lisp/progmodes/cc-engine.el | 6 | ||||
| -rw-r--r-- | lisp/progmodes/cc-langs.el | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 66b5369bbba..06e11b25d20 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el | |||
| @@ -6798,6 +6798,9 @@ comment at the start of cc-engine.el for more info." | |||
| 6798 | (c-backward-syntactic-ws)) | 6798 | (c-backward-syntactic-ws)) |
| 6799 | (c-back-over-list-of-member-inits) | 6799 | (c-back-over-list-of-member-inits) |
| 6800 | (and (eq (char-before) ?:) | 6800 | (and (eq (char-before) ?:) |
| 6801 | (save-excursion | ||
| 6802 | (c-backward-token-2) | ||
| 6803 | (not (looking-at c-:$-multichar-token-regexp))) | ||
| 6801 | (c-just-after-func-arglist-p)))) | 6804 | (c-just-after-func-arglist-p)))) |
| 6802 | 6805 | ||
| 6803 | (while (and (not (and level-plausible | 6806 | (while (and (not (and level-plausible |
| @@ -6812,6 +6815,9 @@ comment at the start of cc-engine.el for more info." | |||
| 6812 | (c-backward-syntactic-ws) | 6815 | (c-backward-syntactic-ws) |
| 6813 | (c-back-over-list-of-member-inits) | 6816 | (c-back-over-list-of-member-inits) |
| 6814 | (and (eq (char-before) ?:) | 6817 | (and (eq (char-before) ?:) |
| 6818 | (save-excursion | ||
| 6819 | (c-backward-token-2) | ||
| 6820 | (not (looking-at c-:$-multichar-token-regexp))) | ||
| 6815 | (c-just-after-func-arglist-p))))) | 6821 | (c-just-after-func-arglist-p))))) |
| 6816 | 6822 | ||
| 6817 | (and at-top-level level-plausible))) | 6823 | (and at-top-level level-plausible))) |
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index d212482790d..7a8213bf6ca 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el | |||
| @@ -1230,6 +1230,14 @@ operators." | |||
| 1230 | (c-lang-defvar c-assignment-op-regexp | 1230 | (c-lang-defvar c-assignment-op-regexp |
| 1231 | (c-lang-const c-assignment-op-regexp)) | 1231 | (c-lang-const c-assignment-op-regexp)) |
| 1232 | 1232 | ||
| 1233 | (c-lang-defconst c-:$-multichar-token-regexp | ||
| 1234 | ;; Regexp matching all tokens ending in ":" which are longer than one char. | ||
| 1235 | ;; Currently (2016-01-07) only used in C++ Mode. | ||
| 1236 | t (c-make-keywords-re nil | ||
| 1237 | (c-filter-ops (c-lang-const c-operators) t ".+:$"))) | ||
| 1238 | (c-lang-defvar c-:$-multichar-token-regexp | ||
| 1239 | (c-lang-const c-:$-multichar-token-regexp)) | ||
| 1240 | |||
| 1233 | (c-lang-defconst c-<>-multichar-token-regexp | 1241 | (c-lang-defconst c-<>-multichar-token-regexp |
| 1234 | ;; Regexp matching all tokens containing "<" or ">" which are longer | 1242 | ;; Regexp matching all tokens containing "<" or ">" which are longer |
| 1235 | ;; than one char. | 1243 | ;; than one char. |