]> git.eshelyaron.com Git - emacs.git/commitdiff
Use `declare' in `lambda' and mis minor changes.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 26 May 2012 15:52:27 +0000 (11:52 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 26 May 2012 15:52:27 +0000 (11:52 -0400)
* lisp/subr.el (lambda): Use declare.
* lisp/emacs-lisp/lisp-mode.el (lambda):
* lisp/emacs-lisp/edebug.el (lambda): Move properties to its definition.
* lisp/gnus/legacy-gnus-agent.el (gnus-agent-unhook-expire-days):
* lisp/gnus/gnus-demon.el (gnus-demon-init): Don't bother with type-of.

lisp/ChangeLog
lisp/emacs-lisp/edebug.el
lisp/emacs-lisp/lisp-mode.el
lisp/emacs-lisp/pcase.el
lisp/gnus/ChangeLog
lisp/gnus/gnus-demon.el
lisp/gnus/legacy-gnus-agent.el
lisp/subr.el
src/print.c

index 97c1e4b532079ca2a6c5372e49f20aa48704ff6b..78551914feefe882bc782a30306851b8be08ea85 100644 (file)
@@ -1,3 +1,9 @@
+2012-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * subr.el (lambda): Use declare.
+       * emacs-lisp/lisp-mode.el (lambda):
+       * emacs-lisp/edebug.el (lambda): Move properties to its definition.
+
 2012-05-26  Aaron S. Hawley  <aaron.s.hawley@gmail.com>
 
        * thingatpt.el (forward-same-syntax): Handle no ARG case.  (Bug#11560)
index 2c7e7cf6362d41436b42ce4c8f5890a22195587c..9d3ee307083f98e5223e3d1781da14f1dbc72c62 100644 (file)
@@ -2010,12 +2010,6 @@ expressions; a `progn' form will be returned enclosing these forms."
 ;; A macro is allowed by Emacs.
 (def-edebug-spec function (&or symbolp lambda-expr))
 
-;; lambda is a macro in emacs 19.
-(def-edebug-spec lambda (&define lambda-list
-                                [&optional stringp]
-                                [&optional ("interactive" interactive)]
-                                def-body))
-
 ;; A macro expression is a lambda expression with "macro" prepended.
 (def-edebug-spec macro (&define "lambda" lambda-list def-body))
 
index dfdac92ae32eb19622cedd3c6a7086f2833d7dc9..d76c1ad3e7200b18f112034970e55dfbe814744c 100644 (file)
@@ -140,7 +140,6 @@ It has `lisp-mode-abbrev-table' as its parent."
 (put 'defvar   'doc-string-elt 3)
 (put 'defconst 'doc-string-elt 3)
 (put 'defmacro 'doc-string-elt 3)
-(put 'lambda 'doc-string-elt 2)
 (put 'defalias 'doc-string-elt 3)
 (put 'defvaralias 'doc-string-elt 3)
 (put 'define-category 'doc-string-elt 2)
@@ -1213,7 +1212,6 @@ Lisp function does not specify a special indentation."
 ;; like defun if the first form is placed on the next line, otherwise
 ;; it is indented like any other form (i.e. forms line up under first).
 
-(put 'lambda 'lisp-indent-function 'defun)
 (put 'autoload 'lisp-indent-function 'defun)
 (put 'progn 'lisp-indent-function 0)
 (put 'prog1 'lisp-indent-function 1)
index 67b194439677649ee91097eadcfcc4323d1fff9c..363c0965c3e31c22e1707c69183cc4d71022daa8 100644 (file)
 ;; - along these lines, provide patterns to match CL structs.
 ;; - provide something like (setq VAR) so a var can be set rather than
 ;;   let-bound.
-;; - provide a way to fallthrough to subsequent cases.
+;; - provide a way to fallthrough to subsequent cases (not sure what I meant by
+;;   this :-()
 ;; - try and be more clever to reduce the size of the decision tree, and
 ;;   to reduce the number of leaves that need to be turned into function:
 ;;   - first, do the tests shared by all remaining branches (it will have
-;;     to be performed anyway, so better so it first so it's shared).
+;;     to be performed anyway, so better do it first so it's shared).
 ;;   - then choose the test that discriminates more (?).
+;; - provide Agda's `with' (along with its `...' companion).
+;; - implement (not UPAT).  This might require a significant redesign.
 ;; - ideally we'd want (pcase s ((re RE1) E1) ((re RE2) E2)) to be able to
 ;;   generate a lex-style DFA to decide whether to run E1 or E2.
 
index 1c5984e96cdc626665f77bad2fb878a2f3c4b87d..50ce9075dc004707e753f21b3f7ce871f379fad2 100644 (file)
@@ -1,3 +1,8 @@
+2012-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * legacy-gnus-agent.el (gnus-agent-unhook-expire-days):
+       * gnus-demon.el (gnus-demon-init): Don't bother with type-of.
+
 2012-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * gnus-win.el (gnus-configure-frame): Don't signal an error when
index d0baf25d5d9682abdcab910b052a793b9659689a..2a4fa6f483e952fcdd76c3ebc9e00a62209ab2b5 100644 (file)
@@ -116,7 +116,6 @@ Emacs has been idle for IDLE `gnus-demon-timestep's."
     ;; Set up the timer.
     (let* ((func (nth 0 handler))
            (time (nth 1 handler))
-           (time-type (type-of time))
            (idle (nth 2 handler))
            ;; Compute time according with timestep.
            ;; If t, replace by 1
@@ -140,10 +139,10 @@ Emacs has been idle for IDLE `gnus-demon-timestep's."
               (run-with-idle-timer idle t 'gnus-demon-run-callback func))
              ;; (func number any)
              ;; Call every `time'
-             ((eq time-type 'integer)
+             ((integerp time)
               (run-with-timer time time 'gnus-demon-run-callback func idle))
              ;; (func string any)
-             ((eq time-type 'string)
+             ((stringp time)
               (run-with-timer time (* 24 60 60) 'gnus-demon-run-callback func idle)))))
       (when timer
         (add-to-list 'gnus-demon-timers timer)))))
index afbebbff79f7607a0d030d1e10b5c8cc0f823023..ecde35dca8fbdf955a3912c3db520fed94567102 100644 (file)
@@ -206,29 +206,31 @@ converted to the compressed format."
 (gnus-convert-mark-converter-prompt 'gnus-agent-unlist-expire-days t)
 
 (defun gnus-agent-unhook-expire-days (converting-to)
-  "Remove every lambda from gnus-group-prepare-hook that mention the
-symbol gnus-agent-do-once in their definition.  This should NOT be
+  "Remove every lambda from `gnus-group-prepare-hook' that mention the
+symbol `gnus-agent-do-once' in their definition.  This should NOT be
 necessary as gnus-agent.el no longer adds them.  However, it is
 possible that the hook was persistently saved."
-    (let ((h t)) ; iterate from bgn of hook
+    (let ((h t)) ; Iterate from bgn of hook.
       (while h
         (let ((func (progn (when (eq h t)
-                             ;; init h to list of functions
+                             ;; Init h to list of functions.
                              (setq h (cond ((listp gnus-group-prepare-hook)
                                             gnus-group-prepare-hook)
                                            ((boundp 'gnus-group-prepare-hook)
                                             (list gnus-group-prepare-hook)))))
                            (pop h))))
 
-          (when (cond ((eq (type-of func) 'compiled-function)
-                       ;; Search def. of compiled function for gnus-agent-do-once string
+          (when (cond ((byte-code-function-p func)
+                       ;; Search def. of compiled function for
+                       ;; gnus-agent-do-once string.
                        (let* (definition
                                print-level
                                print-length
                                (standard-output
                                 (lambda (char)
                                   (setq definition (cons char definition)))))
-                         (princ func) ; populates definition with reversed list of characters
+                         (princ func) ; Populates definition with reversed list
+                                     ; of characters.
                          (let* ((i (length definition))
                                 (s (make-string i 0)))
                            (while definition
@@ -236,7 +238,7 @@ possible that the hook was persistently saved."
 
                            (string-match "\\bgnus-agent-do-once\\b" s))))
                       ((listp func)
-                       (eq (cadr (nth 2 func)) 'gnus-agent-do-once) ; handles eval'd lambda
+                       (eq (cadr (nth 2 func)) 'gnus-agent-do-once) ; Handles eval'd lambda.
                        ))
 
             (remove-hook 'gnus-group-prepare-hook func)
index 0166a3276a829726503bdde0b44a1461a98ed8be..0078fca8033b2042326ff1527ba11327554c2c61 100644 (file)
@@ -112,6 +112,11 @@ It may also be omitted.
 BODY should be a list of Lisp expressions.
 
 \(fn ARGS [DOCSTRING] [INTERACTIVE] BODY)"
+  (declare (doc-string 2) (indent defun)
+           (debug (&define lambda-list
+                           [&optional stringp]
+                           [&optional ("interactive" interactive)]
+                           def-body)))
   ;; Note that this definition should not use backquotes; subr.el should not
   ;; depend on backquote.el.
   (list 'function (cons 'lambda cdr)))
index 2912396bd33f8156d4f2c9934633c205d782c135..2158d06dbca47bc98fca07831cc10f4ae9275242 100644 (file)
@@ -1086,9 +1086,7 @@ print (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag)
 
       if (HASH_TABLE_P (Vprint_number_table))
        { /* Remove unnecessary objects, which appear only once in OBJ;
-            that is, whose status is Qt.
-            Maybe a better way to do that is to copy elements to
-            a new hash table.  */
+            that is, whose status is Qt.  */
          struct Lisp_Hash_Table *h = XHASH_TABLE (Vprint_number_table);
          ptrdiff_t i;