X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fdgnushack.el;h=1a90445ed83e039b1b018c688dc4585bb8aa1c2e;hb=8a60ddbc6b8060cb6e436dc74775fedf7e3f580a;hp=4d36b579e443721e7c863e7fa1f265ce920878f1;hpb=755af8185c00566167a370fad0a3bc615ecd620c;p=elisp%2Fgnus.git- diff --git a/lisp/dgnushack.el b/lisp/dgnushack.el index 4d36b57..1a90445 100644 --- a/lisp/dgnushack.el +++ b/lisp/dgnushack.el @@ -1,5 +1,6 @@ ;;; dgnushack.el --- a hack to set the load path for byte-compiling -;; Copyright (C) 1994,95,96,97,98,99 Free Software Foundation, Inc. +;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Katsumi Yamaoka @@ -50,101 +51,11 @@ (require 'cl) -;; Emulating cl functions. -(unless (featurep 'xemacs) - (define-compiler-macro last (&whole form x &optional n) - (if (and (fboundp 'last) - (subrp (symbol-function 'last))) - form - (if n - `(let* ((x ,x) - (n ,n) - (m 0) - (p x)) - (while (consp p) - (incf m) - (pop p)) - (if (<= n 0) - p - (if (< n m) - (nthcdr (- m n) x) - x))) - `(let ((x ,x)) - (while (consp (cdr x)) - (pop x)) - x)))) - - (define-compiler-macro mapc (&whole form fn seq &rest rest) - (if (and (fboundp 'mapc) - (subrp (symbol-function 'mapc))) - form - (if rest - `(let* ((fn ,fn) - (seq ,seq) - (args (list seq ,@rest)) - (m (apply (function min) (mapcar (function length) args))) - (n 0)) - (while (< n m) - (apply fn (mapcar (function (lambda (arg) (nth n arg))) args)) - (setq n (1+ n))) - seq) - `(let ((seq ,seq)) - (mapcar ,fn seq) - seq)))) - - (define-compiler-macro mapcon (&whole form fn seq &rest rest) - (if (and (fboundp 'mapcon) - (subrp (symbol-function 'mapcon))) - form - (if rest - `(let ((fn ,fn) - res - (args (list ,seq ,@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 ((fn ,fn) - res - (arg ,seq)) - (while arg - (push (funcall ,fn arg) res) - (setq arg (cdr arg))) - (apply (function nconc) (nreverse res)))))) - - (define-compiler-macro member-if (&whole form pred list) - (if (and (fboundp 'member-if) - (subrp (symbol-function 'member-if))) - form - `(let ((fn ,pred) - (seq ,list)) - (while (and seq - (not (funcall fn (car seq)))) - (pop seq)) - seq))) - - (define-compiler-macro union (&whole form list1 list2) - (if (and (fboundp 'union) - (subrp (symbol-function 'union))) - form - `(let ((a ,list1) - (b ,list2)) - (cond ((null a) b) - ((null b) a) - ((equal a b) a) - (t - (or (>= (length a) (length b)) - (setq a (prog1 b (setq b a)))) - (while b - (or (memq (car b) a) - (push (car b) a)) - (pop b)) - a))))) - ) +(defvar srcdir (or (getenv "srcdir") ".")) + +(push (or (getenv "W3DIR") (expand-file-name "../../w3/lisp/" srcdir)) + load-path) +(load (expand-file-name "dgnuspath.el" srcdir) nil nil t) ;; If we are building w3 in a different directory than the source ;; directory, we must read *.el from source directory and write *.elc @@ -192,12 +103,8 @@ (si:byte-optimize-form-code-walker form for-effect))) (byte-compile 'byte-optimize-form-code-walker)) -(defvar srcdir (or (getenv "srcdir") ".")) - -;(push "/usr/share/emacs/site-lisp" load-path) +(load (expand-file-name "gnus-clfns.el" srcdir) nil t t) -;; Attempt to pickup the additional load-path(s). -(load (expand-file-name "dgnuspath.el" srcdir) nil nil t) (condition-case err (load "~/.lpath.el" t nil t) (error (message "Error in \"~/.lpath.el\" file: %s" err))) @@ -216,10 +123,13 @@ (condition-case nil (char-before) (wrong-number-of-arguments - (define-compiler-macro char-before (&whole form &optional pos) - (if (null pos) + ;; Optimize byte code for `char-before'. + (put 'char-before 'byte-optimizer 'byte-optimize-char-before) + (defun byte-optimize-char-before (form) + (if (null (cdr form)) '(char-before (point)) - form)))) + form)) + )) ;; `char-after' and `char-before' must be well-behaved before lpath.el ;; is loaded. Because it requires `poe' via `path-util'. @@ -272,6 +182,11 @@ (defalias 'ange-ftp-re-read-dir 'ignore) (defalias 'define-mail-user-agent 'ignore) +(defconst dgnushack-tool-files + '("dgnushack.el" "dgnuspath.el" "ptexinfmt.el")) +(defconst dgnushack-unexported-files + '("dgnuspath.el" "ptexinfmt.el")) + (defun dgnushack-compile (&optional warn) ;;(setq byte-compile-dynamic t) (unless warn @@ -285,34 +200,31 @@ You also then need to add the following to the lisp/dgnushack.el file: (push \"~/lisp/custom\" load-path) Modify to suit your needs.")) - (let ((files (delete "dgnuspath.el" - (directory-files srcdir nil "^[^=].*\\.el$"))) - (xemacs (string-match "XEmacs" emacs-version)) + (let ((files (directory-files srcdir nil "^[^=].*\\.el$")) ;;(byte-compile-generate-call-tree t) file elc) - (condition-case () - (require 'w3-forms) - (error - (dolist (file '("nnweb.el" "nnlistserv.el" "nnultimate.el" - "nnslashdot.el" "nnwarchive.el" "webmail.el")) - (setq files (delete file files))))) - (condition-case () - (require 'bbdb) - (error (setq files (delete "gnus-bbdb.el" files)))) + (mapcar + (lambda (el) (setq files (delete el files))) + (nconc + dgnushack-tool-files + (condition-case nil + (progn (require 'w3-forms) nil) + (error '("nnweb.el" "nnlistserv.el" "nnultimate.el" + "nnslashdot.el" "nnwarchive.el" "webmail.el"))) + (condition-case nil + (progn (require 'bbdb) nil) + (error '("gnus-bbdb.el"))) + (unless (featurep 'xemacs) + '("gnus-xmas.el" "gnus-picon.el" "messagexmas.el" + "nnheaderxm.el" "smiley.el")) + (when (and (fboundp 'md5) (subrp (symbol-function 'md5))) + '("md5.el")))) (while (setq file (pop files)) - (unless (or (and (not xemacs) - (member file - '("gnus-xmas.el" "gnus-picon.el" - "messagexmas.el" "nnheaderxm.el" - "smiley.el" "x-overlay.el"))) - (and (string-equal file "md5.el") - (not (and (fboundp 'md5) - (subrp (symbol-function 'md5)))))) - (setq file (expand-file-name file srcdir)) - (when (or (not (file-exists-p (setq elc (concat file "c")))) - (file-newer-than-file-p file elc)) - (ignore-errors - (byte-compile-file file))))))) + (setq file (expand-file-name file srcdir)) + (when (or (not (file-exists-p (setq elc (concat file "c")))) + (file-newer-than-file-p file elc)) + (ignore-errors + (byte-compile-file file)))))) (defun dgnushack-recompile () (require 'gnus) @@ -360,29 +272,22 @@ Modify to suit your needs.")) (with-temp-buffer (let ((standard-output (current-buffer))) (Custom-make-dependencies ".")) - (message (buffer-string))) + (message "%s" (buffer-string))) (require 'cus-load) (byte-compile-file "custom-load.el") (message "Generating MANIFEST.%s for the package..." product-name) (with-temp-buffer - (insert "pkginfo/MANIFEST." product-name "\n" - lisp-dir - (mapconcat - 'identity - (sort (delete "dgnuspath.el" - (delete "patchs.elc" - (directory-files "." nil "\\.elc?$"))) - 'string-lessp) - (concat "\n" lisp-dir)) - "\ninfo/" - (mapconcat - 'identity - (sort (directory-files "../texi/" - nil dgnushack-info-file-regexp) - 'string-lessp) - "\ninfo/") - "\n") + (insert "pkginfo/MANIFEST." product-name "\n") + (mapcar + (lambda (file) + (unless (member file dgnushack-unexported-files) + (insert lisp-dir file "\n"))) + (sort (directory-files "." nil "\\.elc?$") 'string-lessp)) + (mapcar + (lambda (file) (insert "info/" file "\n")) + (sort (directory-files "../texi/" nil dgnushack-info-file-regexp) + 'string-lessp)) (write-file (concat "../MANIFEST." product-name))))) (defun dgnushack-install-package () @@ -422,11 +327,9 @@ You must specify the name of the package path as follows: (unless (file-directory-p pkginfo-dir) (make-directory pkginfo-dir)) - (setq files - (sort (delete "dgnuspath.el" - (delete "dgnuspath.elc" - (directory-files "." nil "\\.elc?$"))) - 'string-lessp)) + (setq files (sort (directory-files "." nil "\\.elc?$") 'string-lessp)) + (mapcar (lambda (el) (setq files (delete el files))) + dgnushack-unexported-files) (mapcar (lambda (file) (unless (or (member file files) @@ -464,10 +367,11 @@ You must specify the name of the package path as follows: (defun dgnushack-texi-format (&optional addsuffix) (if (not noninteractive) (error "batch-texinfo-format may only be used -batch.")) - (require 'texinfmt) + (require 'ptexinfmt) (let ((auto-save-default nil) (find-file-run-dired nil) - coding-system-for-write) + coding-system-for-write + output-coding-system) (let ((error 0) file (files ())) @@ -491,7 +395,10 @@ You must specify the name of the package path as follows: (progn (if buffer-file-name (kill-buffer (current-buffer))) (find-file file) - (setq coding-system-for-write buffer-file-coding-system) + (if (boundp 'MULE) + (setq output-coding-system (symbol-value + 'file-coding-system)) + (setq coding-system-for-write buffer-file-coding-system)) (when (and addsuffix (re-search-forward "^@setfilename[\t ]+\\([^\t\n ]+\\)" nil t)