+2013-07-27 Alan Mackenzie <acm@muc.de>
+
+ Make Java try-with-resources statement parse properly.
+ * progmodes/cc-langs.el (c-block-stmt-1-2-kwds)
+ (c-block-stmt-1-2-key): New language constants/variables.
+ * progmodes/cc-engine.el (c-beginning-of-statement-1)
+ (c-after-conditional): Adapt to deal with c-block-stmt-1-2-key.
+ * progmodes/cc-fonts.el (c-font-lock-declarations): Adapt to deal
+ with c-block-stmet-1-2-key.
+
2013-07-27 Juanma Barranquero <lekktu@gmail.com>
* desktop.el (desktop--make-frame): Apply most frame parameters after
(not (memq sym '(boundary ignore nil))))
;; Need to investigate closer whether we've crossed
;; between a substatement and its containing statement.
- (if (setq saved (if (looking-at c-block-stmt-1-key)
- ptok
- pptok))
+ (if (setq saved
+ (cond ((and (looking-at c-block-stmt-1-2-key)
+ (eq (char-after ptok) ?\())
+ pptok)
+ ((looking-at c-block-stmt-1-key)
+ ptok)
+ (t pptok)))
(cond ((> start saved) (setq pos saved))
((= start saved) (setq ret 'up)))))
(or (looking-at c-block-stmt-1-key)
(and (eq (char-after) ?\()
(zerop (c-backward-token-2 1 t lim))
- (looking-at c-block-stmt-2-key)))
+ (or (looking-at c-block-stmt-2-key)
+ (looking-at c-block-stmt-1-2-key))))
(point))))
(defun c-after-special-operator-id (&optional lim)
(goto-char match-pos)
(backward-char)
(c-backward-token-2)
- (looking-at c-block-stmt-2-key)))
+ (or (looking-at c-block-stmt-2-key)
+ (looking-at c-block-stmt-1-2-key))))
(setq context nil
c-restricted-<>-arglists t))
;; Near BOB.
t (c-make-keywords-re t (c-lang-const c-block-stmt-1-kwds)))
(c-lang-defvar c-block-stmt-1-key (c-lang-const c-block-stmt-1-key))
+(c-lang-defconst c-block-stmt-1-2-kwds
+ "Statement keywords optionally followed by a paren sexp.
+Keywords here should also be in `c-block-stmt-1-kwds'."
+ t nil
+ java '("try"))
+
+(c-lang-defconst c-block-stmt-1-2-key
+ ;; Regexp matching the start of a statement which may be followed by a
+ ;; paren sexp and will then be followed by a substatement.
+ t (c-make-keywords-re t (c-lang-const c-block-stmt-1-2-kwds)))
+(c-lang-defvar c-block-stmt-1-2-key (c-lang-const c-block-stmt-1-2-key))
+
(c-lang-defconst c-block-stmt-2-kwds
"Statement keywords followed by a paren sexp and then by a substatement."
t '("for" "if" "switch" "while")