(dgnushack-install-package): Preserve any file in $(PACKAGEDIR)/lisp/t-gnus
authoryamaoka <yamaoka>
Thu, 9 Dec 1999 09:16:03 +0000 (09:16 +0000)
committeryamaoka <yamaoka>
Thu, 9 Dec 1999 09:16:03 +0000 (09:16 +0000)
if it is without .el or .elc suffix.
(mapcon): New compiler macro for emulating cl function.
(mapc): Bug fix - treat the last arg as a list.

lisp/dgnushack.el

index b454f2b..17fd114 100644 (file)
@@ -58,7 +58,7 @@
     (if rest
        `(let* ((fn ,fn)
                (seq ,seq)
-               (args (cons seq ,rest))
+               (args (cons seq (list ,@rest)))
                (m (apply (function min) (mapcar (function length) args)))
                (n 0))
           (while (< n m)
           (pop x))
         x))))
 
+(define-compiler-macro mapcon (&whole form fn seq &rest rest)
+  (if (and (fboundp 'mapcon)
+          (subrp (symbol-function 'mapcon)))
+      form
+    (if rest
+       `(let (res
+              (args (cons ,seq (list ,@rest)))
+              p)
+          (while (not (memq nil args))
+            (push (apply ,fn args) res)
+            (setq p args)
+            (while p
+              (setcar p (cdr (pop p)))
+              ))
+          (apply (function nconc) (nreverse res)))
+      `(let (res
+            (arg ,seq))
+        (while arg
+          (push (funcall ,fn arg) res)
+          (setq arg (cdr arg)))
+        (apply (function nconc) (nreverse res))))))
+
 ;; If we are building w3 in a different directory than the source
 ;; directory, we must read *.el from source directory and write *.elc
 ;; into the building directory.  For that, we define this function
@@ -389,7 +411,8 @@ You must specify the name of the package path as follows:
                'string-lessp))
     (mapcar
      (lambda (file)
-       (unless (member file files)
+       (unless (or (member file files)
+                  (not (string-match "\\.elc?$" file)))
         (setq file (expand-file-name file lisp-dir))
         (message "Removing %s..." file)
         (condition-case nil