* lisp/dgnushack.el (dgnushack-make-cus-load): Use contrib/cus-dep.el to
authoryamaoka <yamaoka>
Mon, 1 Dec 2003 00:55:50 +0000 (00:55 +0000)
committeryamaoka <yamaoka>
Mon, 1 Dec 2003 00:55:50 +0000 (00:55 +0000)
 build T-gnus with Mule 2.

* contrib/cus-dep.el: Imported from Emacs 20.7 for Mule 2.

* Mule23@1934.en, Mule23@1934.ja: Add a note for contrib/cus-dep.el.

ChangeLog
Mule23@1934.en
Mule23@1934.ja
contrib/cus-dep.el [new file with mode: 0644]
lisp/dgnushack.el

index 644b3e2..69e94c4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-12-01  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * lisp/dgnushack.el (dgnushack-make-cus-load): Use
+       contrib/cus-dep.el to build T-gnus with Mule 2.
+
+       * contrib/cus-dep.el: Imported from Emacs 20.7 for Mule 2.
+
 2003-11-03  ARISAWA Akihiro  <ari@mbf.sphere.ne.jp>
 
        * lisp/message.el (message-forward-subject-name-subject): Fixed.
index 47b6416..ba70609 100644 (file)
@@ -65,6 +65,10 @@ By the way, the latest CUSTOM package for Emacs v19 is available from:
 
 ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz
 
+However, since the `custom-make-dependencies' function does not exist
+in this version of CUSTOM, we will use the contrib/cus-dep.el which is
+imported from Emacs 20.7 when building T-gnus.
+
 
 INSTALL regexp-opt.el
 =====================
index 852e4b8..65b6607 100644 (file)
@@ -63,10 +63,14 @@ ftp://ftp.jpl.org/pub/m17n/clime-1_14-************.tar.gz
            (let* ((frames (frame-list))
 ------ cut here ------ cut here ------ cut here ------ cut here ------
 
-\e$B$J$*\e(B Emacs v19 \e$BMQ$N:G?7$N\e(B CUSTOM \e$B$O0J2<$N$b$N$rF~<j$9$k$3$H$,$G$-$^$9!#\e(B
+\e$B$J$*!"\e(BEmacs v19 \e$BMQ$N:G?7$N\e(B CUSTOM \e$B$O0J2<$N$b$N$rF~<j$9$k$3$H$,$G$-$^$9!#\e(B
 
 ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz
 
+\e$B$?$@$7!"$3$NHG$N\e(B CUSTOM \e$B$K$O\e(B `custom-make-dependencies' \e$B4X?t$,L5$$$N$G!"\e(B
+T-gnus \e$B$N@8@.;~$K\e(B Emacs 20.7 \e$B$+$i0\F~$7$?\e(B contrib/cus-dep.el \e$B$r;H$$$^\e(B
+\e$B$9!#\e(B
+
 
 INSTALL regexp-opt.el
 =====================
diff --git a/contrib/cus-dep.el b/contrib/cus-dep.el
new file mode 100644 (file)
index 0000000..8b689bf
--- /dev/null
@@ -0,0 +1,171 @@
+;;; cus-dep.el --- Find customization dependencies.
+;;
+;; Copyright (C) 1997 Free Software Foundation, Inc.
+;;
+;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
+;; Keywords: internal
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(require 'cl)
+(require 'widget)
+(require 'cus-face)
+(require 'autoload)
+
+(defun custom-make-dependencies ()
+  "Batch function to extract custom dependencies from .el files.
+Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
+  (let ((enable-local-eval nil)
+       (all-subdirs command-line-args-left)
+       (start-directory default-directory))
+    (get-buffer-create " cus-dep temp")
+    (set-buffer " cus-dep temp")
+    (while all-subdirs
+      (message "Directory %s" (car all-subdirs))
+      (let ((files (directory-files (car all-subdirs) nil "\\`[^=].*\\.el\\'"))
+           (default-directory default-directory)
+           file
+           is-autoloaded)
+       (cd (car all-subdirs))
+       (while files
+         (setq file (car files)
+               files (cdr files))
+         (when (file-exists-p file)
+           (erase-buffer)
+           (insert-file-contents file)
+           (goto-char (point-min))
+           (string-match "\\`\\(.*\\)\\.el\\'" file)
+           (let ((name (file-name-nondirectory (match-string 1 file))))
+             (condition-case nil
+                 (while (re-search-forward "^(defcustom\\|^(defface\\|^(defgroup"
+                                           nil t)
+                   (setq is-autoloaded nil)
+                   (beginning-of-line)
+                   (save-excursion
+                     (forward-line -1)
+                     (if (looking-at generate-autoload-cookie)
+                         (setq is-autoloaded t)))
+                   (let ((expr (read (current-buffer))))
+                     (condition-case nil
+                         (progn
+                           (eval expr)
+                           (put (nth 1 expr) 'custom-autoloaded is-autoloaded)
+                           (put (nth 1 expr) 'custom-where name))
+                       (error nil))))
+               (error nil)))))
+       (setq all-subdirs (cdr all-subdirs)))))
+  (message "Generating cus-load.el...")
+  (find-file "cus-load.el")
+  (erase-buffer)
+  (insert "\
+;;; cus-load.el --- automatically extracted custom dependencies
+;;
+;;; Code:
+
+")
+  (mapatoms (lambda (symbol)
+             (let ((members (get symbol 'custom-group))
+                   item where found)
+               (when members
+                 (while members
+                   (setq item (car (car members))
+                         members (cdr members)
+                         where (get item 'custom-where))
+                   (unless (or (null where)
+                               (member where found))
+                     (if found
+                         (insert " ")
+                       (insert "(put '" (symbol-name symbol) 
+                               " 'custom-loads '("))
+                     (prin1 where (current-buffer))
+                     (push where found)))
+                 (when found
+                   (insert "))\n"))))))
+  (insert "\
+;;; These are for handling :version.  We need to have a minimum of
+;;; information so `custom-changed-variables' could do its job.  
+;;; For both groups and variables we have to set `custom-version'.
+;;; For variables we also set the `standard-value' and for groups
+;;; `group-documentation' (which is shown in the customize buffer), so
+;;; we don't have to load the file containing the group.
+
+;;; `custom-versions-load-alist' is an alist that has as car a version
+;;; number and as elts the files that have variables that contain that
+;;; version. These files should be loaded before showing the
+;;; customization buffer that `customize-changed-options' generates.
+
+
+;;; This macro is used so we don't modify the information about
+;;; variables and groups if it's already set. (We don't know when
+;;; cus-load.el is going to be loaded and at that time some of the
+;;; files might be loaded and some others might not).
+(defmacro custom-put-if-not (symbol propname value)
+  `(unless (get ,symbol ,propname)
+     (put ,symbol ,propname ,value)))
+
+")
+  (let ((version-alist nil))
+    (mapatoms (lambda (symbol)
+               (let ((version (get symbol 'custom-version))
+                     where)
+                 (when version 
+                   (setq where (get symbol 'custom-where))
+                   (when (and where 
+                              ;; Don't bother to do anything if it's
+                              ;; autoloaded because we will have all
+                              ;; this info when emacs is running
+                              ;; anyway.
+                              (not (get symbol 'custom-autoloaded)))
+                     (insert "(custom-put-if-not '" (symbol-name symbol) 
+                             " 'custom-version ")
+                     (prin1 version (current-buffer))
+                     (insert ")\n")
+                     (insert "(custom-put-if-not '" (symbol-name symbol))
+                     (if (get symbol 'standard-value)
+                         ;; This means it's a variable
+                         (progn
+                           (insert " 'standard-value t)\n")
+                           (if (assoc version version-alist)
+                               (unless 
+                                   (member where 
+                                           (cdr (assoc version version-alist)))
+                                 (push where (cdr (assoc version version-alist))))
+                             (push (cons version (list where)) version-alist)))
+                       ;; This is a group
+                       (insert " 'group-documentation ")
+                       (prin1 (get symbol 'group-documentation) (current-buffer))
+                       (insert ")\n")))))))
+
+    (insert "\n(defvar custom-versions-load-alist "
+           (if version-alist "'" ""))
+    (prin1 version-alist (current-buffer))
+    (insert "\n \"For internal use by custom.\")\n"))
+    
+  (insert "\
+
+\(provide 'cus-load)
+
+;;; cus-load.el ends here\n")
+  (let ((kept-new-versions 10000000))
+    (save-buffer))
+  (message "Generating cus-load.el...done")
+  (kill-emacs))
+
+;;; cus-dep.el ends here
index 92b9b69..b70a9a6 100644 (file)
@@ -698,7 +698,13 @@ Modify to suit your needs."))
 (defun dgnushack-make-cus-load ()
   (when (condition-case nil
            (load "cus-dep")
-         (error nil))
+         (error
+          (when (boundp 'MULE)
+            (if (file-exists-p "../contrib/cus-dep.el")
+                ;; Use cus-dep.el of the version of Emacs 20.7.
+                (load-file "../contrib/cus-dep.el")
+              (error "\
+You need contrib/cus-dep.el to build T-gnus with Mule 2.3@19.34; exiting.")))))
     (let ((cusload-base-file dgnushack-cus-load-file))
       (if (fboundp 'custom-make-dependencies)
          (custom-make-dependencies)