emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] trunk r117875: * emacs-lisp/lisp-mode.el (lisp-el-font-loc


From: Leo Liu
Subject: [Emacs-diffs] trunk r117875: * emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2): Add
Date: Sat, 13 Sep 2014 16:37:49 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 117875
revision-id: address@hidden
parent: address@hidden
fixes bug: http://debbugs.gnu.org/16567
committer: Leo Liu <address@hidden>
branch nick: trunk
timestamp: Sun 2014-09-14 00:30:21 +0800
message:
  * emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2): Add
  pcase-exhaustive.
  
  * emacs-lisp/pcase.el (pcase--dontwarn-upats): New var.
  (pcase--expand): Use it.
  (pcase-exhaustive): New macro.
modified:
  lisp/ChangeLog                 changelog-20091113204419-o5vbwnq5f7feedwu-1432
  lisp/emacs-lisp/lisp-mode.el   lispmode.el-20091113204419-o5vbwnq5f7feedwu-205
  lisp/emacs-lisp/pcase.el       pcase.el-20100810123717-8zwve3391p2ywm1h-1
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2014-09-13 09:25:38 +0000
+++ b/lisp/ChangeLog    2014-09-13 16:30:21 +0000
@@ -1,3 +1,12 @@
+2014-09-13  Leo Liu  <address@hidden>
+
+       * emacs-lisp/pcase.el (pcase--dontwarn-upats): New var.
+       (pcase--expand): Use it.
+       (pcase-exhaustive): New macro.  (Bug#16567)
+
+       * emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2): Add
+       pcase-exhaustive.
+
 2014-09-13  Eli Zaretskii  <address@hidden>
 
        * mail/rmailmm.el (rmail-mime-insert-html): Decode the HTML part

=== modified file 'lisp/emacs-lisp/lisp-mode.el'
--- a/lisp/emacs-lisp/lisp-mode.el      2014-06-19 14:03:45 +0000
+++ b/lisp/emacs-lisp/lisp-mode.el      2014-09-13 16:30:21 +0000
@@ -197,9 +197,9 @@
               (el-vdefs '("defconst" "defcustom" "defvaralias" "defvar-local"
                           "defface"))
               (el-tdefs '("defgroup" "deftheme"))
-              (el-kw '("while-no-input" "letrec" "pcase" "pcase-let"
-                       "pcase-let*" "save-restriction" "save-excursion"
-                       "save-selected-window"
+              (el-kw '("while-no-input" "letrec" "pcase" "pcase-exhaustive"
+                       "pcase-let" "pcase-let*" "save-restriction"
+                       "save-excursion" "save-selected-window"
                        ;; "eval-after-load" "eval-next-after-load"
                        "save-window-excursion" "save-current-buffer"
                        "save-match-data" "combine-after-change-calls"

=== modified file 'lisp/emacs-lisp/pcase.el'
--- a/lisp/emacs-lisp/pcase.el  2014-09-06 00:59:00 +0000
+++ b/lisp/emacs-lisp/pcase.el  2014-09-13 16:30:21 +0000
@@ -68,6 +68,8 @@
 
 (defconst pcase--dontcare-upats '(t _ pcase--dontcare))
 
+(defvar pcase--dontwarn-upats '(pcase--dontcare))
+
 (def-edebug-spec
   pcase-UPAT
   (&or symbolp
@@ -148,6 +150,15 @@
         ;; (puthash (car cases) `(,exp ,cases ,@expansion) pcase--memoize-2)
         expansion))))
 
+;;;###autoload
+(defmacro pcase-exhaustive (exp &rest cases)
+  "The exhaustive version of `pcase' (which see)."
+  (declare (indent 1) (debug pcase))
+  (let* ((x (make-symbol "x"))
+         (pcase--dontwarn-upats (cons x pcase--dontwarn-upats)))
+    (pcase--expand
+     exp (append cases `((,x (error "No clause matching `%S'" ,x)))))))
+
 (defun pcase--let* (bindings body)
   (cond
    ((null bindings) (macroexp-progn body))
@@ -280,7 +291,8 @@
                              vars))))
                      cases))))
       (dolist (case cases)
-        (unless (or (memq case used-cases) (eq (car case) 'pcase--dontcare))
+        (unless (or (memq case used-cases)
+                    (memq (car case) pcase--dontwarn-upats))
           (message "Redundant pcase pattern: %S" (car case))))
       (macroexp-let* defs main))))
 


reply via email to

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