1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-18 18:05:07 +00:00

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-stmt-1-2-key.
This commit is contained in:
Alan Mackenzie 2013-07-27 12:07:43 +00:00
parent 9dabd86d4b
commit 5ab78d3d6a
4 changed files with 33 additions and 5 deletions

View File

@ -1,3 +1,13 @@
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

View File

@ -1135,9 +1135,13 @@ comment at the start of cc-engine.el for more info."
(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)))))
@ -7988,7 +7992,8 @@ comment at the start of cc-engine.el for more info."
(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)

View File

@ -1307,7 +1307,8 @@ casts and declarations are fontified. Used on level 2 and higher."
(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.

View File

@ -2187,6 +2187,18 @@ identifiers that follows the type in a normal declaration."
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")