]> git.eshelyaron.com Git - emacs.git/commitdiff
Miscellaneous tweaks.
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 1 Jun 2011 14:19:45 +0000 (11:19 -0300)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 1 Jun 2011 14:19:45 +0000 (11:19 -0300)
* lisp/emacs-lisp/cl-macs.el (dolist, dotimes): Use the same strategy for
lexical scoping as in subr.el's dolist and dotimes.
* lisp/emacs-lisp/bytecomp.el (byte-compile-unfold-bcf):
Silence compiler warning.
* lisp/thingatpt.el (forward-whitespace): Trivial coding style fix.
* lisp/subr.el (with-output-to-temp-buffer): Provide an edebug spec.
* lisp/international/ccl.el (ccl-compile): Trivial simplification.
* lisp/help-fns.el (help-do-arg-highlight): Silence compiler warning.
* lisp/emacs-lisp/testcover.el (testcover-end): Remove spurious
`printflag' argument.
* lisp/emacs-lisp/byte-run.el (make-obsolete, make-obsolete-variable):
Purecopy the whole obsolescence data.

lisp/ChangeLog
lisp/emacs-lisp/byte-run.el
lisp/emacs-lisp/bytecomp.el
lisp/emacs-lisp/cconv.el
lisp/emacs-lisp/cl-macs.el
lisp/emacs-lisp/testcover.el
lisp/help-fns.el
lisp/international/ccl.el
lisp/subr.el
lisp/thingatpt.el
src/bytecode.c

index 1769629115c37bbd2a16a7b5631123df8aa8f42e..4b2a17518131e67073a024dbcafcc9d09625acdc 100644 (file)
@@ -1,3 +1,19 @@
+2011-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       Miscellaneous tweaks.
+       * emacs-lisp/cl-macs.el (dolist, dotimes): Use the same strategy for
+       lexical scoping as in subr.el's dolist and dotimes.
+       * emacs-lisp/bytecomp.el (byte-compile-unfold-bcf):
+       Silence compiler warning.
+       * thingatpt.el (forward-whitespace): Trivial coding style fix.
+       * subr.el (with-output-to-temp-buffer): Provide an edebug spec.
+       * international/ccl.el (ccl-compile): Trivial simplification.
+       * help-fns.el (help-do-arg-highlight): Silence compiler warning.
+       * emacs-lisp/testcover.el (testcover-end): Remove spurious
+       `printflag' argument.
+       * emacs-lisp/byte-run.el (make-obsolete, make-obsolete-variable):
+       Purecopy the whole obsolescence data.
+
 2011-06-01  Leo Liu  <sdl.web@gmail.com>
 
        * net/rcirc.el (rcirc-decode-coding-system): Revert last change;
index c76cdffd62fafc62f9dafe5e16e57b14e41531a0..e61f841da60434c2b476886333a92095a5501f03 100644 (file)
@@ -120,13 +120,13 @@ convention was modified."
 The warning will say that CURRENT-NAME should be used instead.
 If CURRENT-NAME is a string, that is the `use instead' message
 \(it should end with a period, and not start with a capital).
-If provided, WHEN should be a string indicating when the function
+WHEN should be a string indicating when the function
 was first made obsolete, for example a date or a release number."
   (interactive "aMake function obsolete: \nxObsoletion replacement: ")
   (put obsolete-name 'byte-obsolete-info
        ;; The second entry used to hold the `byte-compile' handler, but
        ;; is not used any more nowadays.
-       (list (purecopy current-name) nil (purecopy when)))
+       (purecopy (list current-name nil when)))
   obsolete-name)
 (set-advertised-calling-convention
  ;; New code should always provide the `when' argument.
@@ -166,10 +166,7 @@ was first made obsolete, for example a date or a release number."
       (intern str))
     (car (read-from-string (read-string "Obsoletion replacement: ")))))
   (put obsolete-name 'byte-obsolete-variable
-       (cons
-       (if (stringp current-name)
-           (purecopy current-name)
-         current-name) (purecopy when)))
+       (purecopy (cons current-name when)))
   obsolete-name)
 (set-advertised-calling-convention
  ;; New code should always provide the `when' argument.
index 0dae6748c24b24f8927475d345265af447378ab0..08d484fc87297f5b360e70222e8e7356947cf1b7 100644 (file)
@@ -2991,7 +2991,7 @@ That command is designed for interactive use only" fn))
     (cond
      ((<= (+ alen alen) fmax2)
       ;; Add missing &optional (or &rest) arguments.
-      (dotimes (i (- (/ (1+ fmax2) 2) alen))
+      (dotimes (_ (- (/ (1+ fmax2) 2) alen))
         (byte-compile-push-constant nil)))
      ((zerop (logand fmax2 1))
       (byte-compile-log-warning "Too many arguments for inlined function"
index 38584c437b8713b0d24e83a0055bd1153fdb6461..742a98f5e7bafe6a16dfac6f1f60afb907fb4fc6 100644 (file)
 ;;     ,@(mapcar (lambda (binder) (if (consp binder) (cadr binder)))
 ;;               binders)))
 
-;; (defmacro letrec (binders &rest body)
-;;   ;; Only useful in lexical-binding mode.
-;;   ;; As a special-form, we could implement it more efficiently (and cleanly,
-;;   ;; making the vars actually unbound during evaluation of the binders).
-;;   `(let ,(mapcar (lambda (binder) (if (consp binder) (car binder) binder))
-;;                  binders)
-;;      ,@(delq nil (mapcar (lambda (binder) (if (consp binder) `(setq ,@binder)))
-;;                          binders))
-;;      ,@body))
-
 (eval-when-compile (require 'cl))
 
 (defconst cconv-liftwhen 6
index 9ce3dd6a7fe3d4550472e690e608cc3370f6115d..2813cc4f0655c684a6661dec831f7191555d5767 100644 (file)
@@ -1236,14 +1236,29 @@ Then evaluate RESULT to get return value, default nil.
 
 \(fn (VAR LIST [RESULT]) BODY...)"
   (let ((temp (make-symbol "--cl-dolist-temp--")))
-    (list 'block nil
-         (list* 'let (list (list temp (nth 1 spec)) (car spec))
-                (list* 'while temp (list 'setq (car spec) (list 'car temp))
-                       (append body (list (list 'setq temp
-                                                (list 'cdr temp)))))
-                (if (cdr (cdr spec))
-                    (cons (list 'setq (car spec) nil) (cdr (cdr spec)))
-                  '(nil))))))
+    ;; FIXME: Copy&pasted from subr.el.
+    `(block nil
+       ;; This is not a reliable test, but it does not matter because both
+       ;; semantics are acceptable, tho one is slightly faster with dynamic
+       ;; scoping and the other is slightly faster (and has cleaner semantics)
+       ;; with lexical scoping.
+       ,(if lexical-binding
+            `(let ((,temp ,(nth 1 spec)))
+               (while ,temp
+                 (let ((,(car spec) (car ,temp)))
+                   ,@body
+                   (setq ,temp (cdr ,temp))))
+               ,@(if (cdr (cdr spec))
+                     ;; FIXME: This let often leads to "unused var" warnings.
+                     `((let ((,(car spec) nil)) ,@(cdr (cdr spec))))))
+          `(let ((,temp ,(nth 1 spec))
+                 ,(car spec))
+             (while ,temp
+               (setq ,(car spec) (car ,temp))
+               ,@body
+               (setq ,temp (cdr ,temp)))
+             ,@(if (cdr (cdr spec))
+                   `((setq ,(car spec) nil) ,@(cddr spec))))))))
 
 ;;;###autoload
 (defmacro dotimes (spec &rest body)
@@ -1253,12 +1268,30 @@ to COUNT, exclusive.  Then evaluate RESULT to get return value, default
 nil.
 
 \(fn (VAR COUNT [RESULT]) BODY...)"
-  (let ((temp (make-symbol "--cl-dotimes-temp--")))
-    (list 'block nil
-         (list* 'let (list (list temp (nth 1 spec)) (list (car spec) 0))
-                (list* 'while (list '< (car spec) temp)
-                       (append body (list (list 'incf (car spec)))))
-                (or (cdr (cdr spec)) '(nil))))))
+  (let ((temp (make-symbol "--cl-dotimes-temp--"))
+       (end (nth 1 spec)))
+    ;; FIXME: Copy&pasted from subr.el.
+    `(block nil
+       ;; This is not a reliable test, but it does not matter because both
+       ;; semantics are acceptable, tho one is slightly faster with dynamic
+       ;; scoping and the other has cleaner semantics.
+       ,(if lexical-binding
+            (let ((counter '--dotimes-counter--))
+              `(let ((,temp ,end)
+                     (,counter 0))
+                 (while (< ,counter ,temp)
+                   (let ((,(car spec) ,counter))
+                     ,@body)
+                   (setq ,counter (1+ ,counter)))
+                 ,@(if (cddr spec)
+                       ;; FIXME: This let often leads to "unused var" warnings.
+                       `((let ((,(car spec) ,counter)) ,@(cddr spec))))))
+          `(let ((,temp ,end)
+                 (,(car spec) 0))
+             (while (< ,(car spec) ,temp)
+               ,@body
+               (incf ,(car spec)))
+             ,@(cdr (cdr spec)))))))
 
 ;;;###autoload
 (defmacro do-symbols (spec &rest body)
index 08f757819f22f86dff1dfafbdcf8f8759dca0337..2f168180cf6b6420447a19adcab13932f1eb6e76 100644 (file)
@@ -430,7 +430,7 @@ FUN should be `testcover-reinstrument' for compositional functions,
   "Turn off instrumentation of all macros and functions in FILENAME."
   (interactive "fStop covering file: ")
   (let ((buf (find-file-noselect filename)))
-    (eval-buffer buf t)))
+    (eval-buffer buf)))
 
 
 ;;;=========================================================================
index ed1bd836fbf362225318eb38a10fa9c55e2d63b6..50e60f94c882b39df3f7439831f935e73b7a5a51 100644 (file)
@@ -222,7 +222,7 @@ if the variable `help-downcase-arguments' is non-nil."
 (defun help-do-arg-highlight (doc args)
   (with-syntax-table (make-syntax-table emacs-lisp-mode-syntax-table)
     (modify-syntax-entry ?\- "w")
-    (dolist (arg args doc)
+    (dolist (arg args)
       (setq doc (replace-regexp-in-string
                  ;; This is heuristic, but covers all common cases
                  ;; except ARG1-ARG2
@@ -236,7 +236,8 @@ if the variable `help-downcase-arguments' is non-nil."
                          "\\(?:-[{([<`\"].*?\\)?"; for ARG-{x}, (x), <x>, [x], `x'
                          "\\>")                  ; end of word
                  (help-highlight-arg arg)
-                 doc t t 1)))))
+                 doc t t 1)))
+    doc))
 
 (defun help-highlight-arguments (usage doc &rest args)
   (when (and usage (string-match "^(" usage))
index 2cae126252136ca39d1fedb074839dd09ab1998e..9614479072ad5212241ed63445083a1c982ddbfc 100644 (file)
@@ -280,10 +280,10 @@ the current loop.")
 ;;;###autoload
 (defun ccl-compile (ccl-program)
   "Return the compiled code of CCL-PROGRAM as a vector of integers."
-  (if (or (null (consp ccl-program))
-         (null (integerp (car ccl-program)))
-         (null (listp (car (cdr ccl-program)))))
-      (error "CCL: Invalid CCL program: %s" ccl-program))
+  (unless (and (consp ccl-program)
+               (integerp (car ccl-program))
+               (listp (car (cdr ccl-program))))
+    (error "CCL: Invalid CCL program: %s" ccl-program))
   (if (null (vectorp ccl-program-vector))
       (setq ccl-program-vector (make-vector 8192 0)))
   (setq ccl-loop-head nil ccl-breaks nil)
index 08099dc1fdda640da56dc6affb139fb87fc6209e..74c9ce57d8f114dc92a36d69615d6f28afc0ada8 100644 (file)
@@ -2926,6 +2926,7 @@ with the buffer BUFNAME temporarily current.  It runs the hook
 buffer temporarily current, and the window that was used to display it
 temporarily selected.  But it doesn't run `temp-buffer-show-hook'
 if it uses `temp-buffer-show-function'."
+  (declare (debug t))
   (let ((old-dir (make-symbol "old-dir"))
         (buf (make-symbol "buf")))
     `(let* ((,old-dir default-directory)
index a2aeb2e6d67c97a2abdd4ae718018c0d44c6f77f..22370aa9161dff52fb95563875dc5480611e0d8c 100644 (file)
@@ -402,7 +402,7 @@ with angle brackets.")
       (re-search-forward "[ \t]+\\|\n" nil 'move arg)
     (while (< arg 0)
       (if (re-search-backward "[ \t]+\\|\n" nil 'move)
-         (or (eq (char-after (match-beginning 0)) 10)
+         (or (eq (char-after (match-beginning 0)) \n)
              (skip-chars-backward " \t")))
       (setq arg (1+ arg)))))
 
index c3cd3d430720ead25156ada46795922ae1605b3d..74cf401bf1d3c316f445828ea74d38fde45a4657 100644 (file)
@@ -144,7 +144,7 @@ Lisp_Object Qbytecode;
 #define Bcurrent_column 0151
 #define Bindent_to 0152
 #ifdef BYTE_CODE_SAFE
-#define Bscan_buffer 0153 /* No longer generated as of v18 */
+#define Bscan_buffer 0153 /* No longer generated as of v18 */
 #endif
 #define Beolp 0154
 #define Beobp 0155
@@ -956,7 +956,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
                                 save_restriction_save ());
          break;
 
-       case Bcatch:            /* FIXME: ill-suited for lexbind */
+       case Bcatch:            /* FIXME: ill-suited for lexbind */
          {
            Lisp_Object v1;
            BEFORE_POTENTIAL_GC ();
@@ -966,11 +966,11 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
            break;
          }
 
-       case Bunwind_protect:   /* FIXME: avoid closure for lexbind */
+       case Bunwind_protect:   /* FIXME: avoid closure for lexbind */
          record_unwind_protect (Fprogn, POP);
          break;
 
-       case Bcondition_case:   /* FIXME: ill-suited for lexbind */
+       case Bcondition_case:   /* FIXME: ill-suited for lexbind */
          {
            Lisp_Object handlers, body;
            handlers = POP;
@@ -1779,8 +1779,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
            PUSH (*ptr);
            break;
          }
-         /* stack-set-0 = discard; stack-set-1 = discard-1-preserve-tos.  */
        case Bstack_set:
+         /* stack-set-0 = discard; stack-set-1 = discard-1-preserve-tos.  */
          {
            Lisp_Object *ptr = top - (FETCH);
            *ptr = POP;