emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-25 a1865bc: Distinguish the two meanings of Java's k


From: Alan Mackenzie
Subject: [Emacs-diffs] emacs-25 a1865bc: Distinguish the two meanings of Java's keyword "default". Fixes bug #22358.
Date: Sat, 23 Jan 2016 19:39:12 +0000

branch: emacs-25
commit a1865bcf966eafdce28f50fb8a19c1bfd831079a
Author: Alan Mackenzie <address@hidden>
Commit: Alan Mackenzie <address@hidden>

    Distinguish the two meanings of Java's keyword "default".  Fixes bug #22358.
    
    * lisp/progmodes/cc-engine.el (c-guess-basic-syntax CASE 14): Check the
    context of case labels (including "default") more rigorously.
    (c-guess-basic-syntax CASE 15): Consequential amendment.
    
    * lisp/progmodes/cc-langs.el (c-modifier-kwds): Add "default" to Java's 
value.
---
 lisp/progmodes/cc-engine.el |   15 ++++++++++++++-
 lisp/progmodes/cc-langs.el  |    4 ++--
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 8113446..815bd72 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -10072,7 +10072,19 @@ comment at the start of cc-engine.el for more info."
                                       paren-state)))
 
        ;; CASE 14: A case or default label
-       ((looking-at c-label-kwds-regexp)
+       ((save-excursion
+         (and (looking-at c-label-kwds-regexp)
+              (or (c-major-mode-is 'idl-mode)
+                  (and
+                   containing-sexp
+                   (goto-char containing-sexp)
+                   (eq (char-after) ?{)
+                   (progn (c-backward-syntactic-ws) t)
+                   (eq (char-before) ?\))
+                   (c-go-list-backward)
+                   (progn (c-backward-syntactic-ws) t)
+                   (c-simple-skip-symbol-backward)
+                   (looking-at c-block-stmt-2-key)))))
        (if containing-sexp
            (progn
              (goto-char containing-sexp)
@@ -10088,6 +10100,7 @@ comment at the start of cc-engine.el for more info."
        ((save-excursion
          (back-to-indentation)
          (and (not (looking-at c-syntactic-ws-start))
+              (not (looking-at c-label-kwds-regexp))
               (c-forward-label)))
        (cond (containing-decl-open
               (setq placeholder (c-add-class-syntax 'inclass
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 48dd996..8a1d43c 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -1980,8 +1980,8 @@ will be handled."
         ;; In CORBA CIDL:
         "bindsTo" "delegatesTo" "implements" "proxy" "storedOn")
   ;; Note: "const" is not used in Java, but it's still a reserved keyword.
-  java '("abstract" "const" "final" "native" "private" "protected" "public"
-        "static" "strictfp" "synchronized" "transient" "volatile")
+  java '("abstract" "const" "default" "final" "native" "private" "protected"
+        "public" "static" "strictfp" "synchronized" "transient" "volatile")
   pike '("final" "inline" "local" "nomask" "optional" "private" "protected"
         "public" "static" "variant"))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]