+\f
+(defconst dgnushack-info-file-regexp-en
+ (let ((names '("gnus" "message" "emacs-mime"))
+ regexp name)
+ (while (setq name (pop names))
+ (setq regexp (concat regexp "^" name "\\.info\\(-[0-9]+\\)?$"
+ (when names "\\|"))))
+ regexp)
+ "Regexp matching English info files.")
+
+(defconst dgnushack-info-file-regexp-ja
+ (let ((names '("gnus-ja" "message-ja"))
+ regexp name)
+ (while (setq name (pop names))
+ (setq regexp (concat regexp "^" name "\\.info\\(-[0-9]+\\)?$"
+ (when names "\\|"))))
+ regexp)
+ "Regexp matching Japanese info files.")
+
+(defun dgnushack-make-autoloads ()
+ "Make auto-autoloads.el, custom-load.el and then compile them."
+ (let (make-backup-files)
+ (message "Updating autoloads for directory %s..." default-directory)
+ (let ((generated-autoload-file "auto-autoloads.el")
+ (si:message (symbol-function 'message))
+ noninteractive)
+ (defun message (fmt &rest args)
+ (cond ((and (string-equal "Generating autoloads for %s..." fmt)
+ (file-exists-p (file-name-nondirectory (car args))))
+ (funcall si:message fmt (file-name-nondirectory (car args))))
+ ((string-equal "No autoloads found in %s" fmt))
+ ((string-equal "Generating autoloads for %s...done" fmt))
+ (t (apply si:message fmt args))))
+ (unwind-protect
+ (update-autoloads-from-directory default-directory)
+ (fset 'message si:message)))
+ (byte-compile-file "auto-autoloads.el")
+ (with-temp-buffer
+ (let ((standard-output (current-buffer)))
+ (Custom-make-dependencies "."))
+ (message "%s" (buffer-string)))
+ (require 'cus-load)
+ (byte-compile-file "custom-load.el")))
+
+(defun dgnushack-remove-extra-files-in-package ()
+ "Remove extra files in the lisp directory of the XEmacs package."
+ (let ((lisp-dir (expand-file-name (concat "lisp/"
+ ;; GNUS_PRODUCT_NAME
+ (cadr command-line-args-left)
+ "/")
+ ;; PACKAGEDIR
+ (car command-line-args-left))))
+ (when (file-directory-p lisp-dir)
+ (let (files)
+ (dolist (file dgnushack-exporting-files)
+ (setq files (nconc files (list file (concat file "c")))))
+ (dolist (file (directory-files lisp-dir nil nil t t))
+ (unless (member file files)
+ (setq file (expand-file-name file lisp-dir))
+ (message "Removing %s..." file)
+ (condition-case nil
+ (delete-file file)
+ (error nil))))))))
+
+(defun dgnushack-install-package-manifest ()
+ "Install MANIFEST file as an XEmacs package."
+ (let* ((package-dir (car command-line-args-left))
+ (product-name (cadr command-line-args-left))
+ (name (expand-file-name (concat "pkginfo/MANIFEST." product-name)
+ package-dir))
+ make-backup-files)
+ (message "Generating %s..." name)
+ (with-temp-file name
+ (insert "pkginfo/MANIFEST." product-name "\n")
+ (let ((lisp-dir (concat "lisp/" product-name "/"))
+ (files (sort (directory-files "." nil "\\.elc?$" t) 'string-lessp))
+ file)
+ (while (setq file (pop files))
+ (unless (member file dgnushack-unexporting-files)
+ (insert lisp-dir file "\n")))
+ (setq files
+ (sort (directory-files "../texi/" nil
+ (concat dgnushack-info-file-regexp-en
+ "\\|"
+ dgnushack-info-file-regexp-ja)
+ t)
+ 'string-lessp))
+ (while (setq file (pop files))
+ (insert "info/" file "\n"))))))
+
+\f
+(define-compiler-macro describe-key-briefly (&whole form key &optional insert)
+ (if (condition-case nil
+ (progn
+ (describe-key-briefly '((())) nil)
+ t)
+ (wrong-number-of-arguments nil);; Old Emacsen.
+ (error t))
+ form
+ (if insert
+ `(if ,insert
+ (insert (funcall 'describe-key-briefly ,key))
+ (funcall 'describe-key-briefly ,key))
+ `(funcall 'describe-key-briefly ,key))))
+
+;;; dgnushack.el ends here